반응형
https://www.acmicpc.net/problem/10989
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
출력
이는 원래 하던 merge sort로 하면 메모리 초과가 난다.
여기서 힌트로 봐야할 것은 숫자의 중복이 있다는 것과 입력되는 수는 10,000이하라는 것이다.
이 문제의 풀이는 10,000짜리 배열을 만들어서 각 숫자가 몇개 들어왔는지 세고 출력하는 것이다.
#include <iostream>
using namespace std;
int n;
int arr[10001];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
int num=0;
// 개수 세면서 입력받기
for(int i=0;i<n;i++){
cin>>num;
arr[num]++;
}
for(int i=1;i<10001;i++){
while(arr[i]--){ //개수만큼 출력하기
cout<<i<<"\\n";
}
}
}
반응형
'BOJ > [ BOJ ] C++' 카테고리의 다른 글
[ C++ ] #11728 배열 합치기 ( 실버 V ) (0) | 2024.03.03 |
---|---|
[ C++ ] #15683 감시 ( 골드 IV ) (0) | 2024.03.03 |
[ C++ ] #15651 N과N(3) (실버 III) (0) | 2024.02.04 |
[ C++ ] #15650 N과 M(2) ( 실버 III ) (0) | 2024.01.30 |
[ C++ ] #1182 수열의 합 ( 실버 II ) (0) | 2024.01.30 |