[C++]백준10989번 수 정렬하기 3

less than 1 minute read

오늘은 백준10989번 수 정렬하기 3 문제를 풀어보도록 하자.

수의 갯수가 10000000개고, 수는 10000보다 작거나 같은 자연수이기 때문에 카운팅소트로 가능하다고 생각했다. 시간도 3초로 넉넉하고.

하지만 시간초과가 났다. 그 이유는 ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);의 문제.

시간이 넉넉하다고 해서 위의 선언을 빼먹지 말아야겠다. cin과 cout은 생각보다 많은 시간을 잡아먹는다는 것을 느꼈다.

문제는 다음과 같다.

                               [접근법]

* 기본적인 카운팅소트
                                     [코드]
#include <iostream>
using namespace std;

int arr[10001];
int N,num;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> N;

	for (int i = 0; i < N; i++) {
		cin >> num;
		arr[num]++;
	}
	for (int i = 1; i <= 10000; i++) {
		while (arr[i] > 0) {
			cout << i << '\n';
			arr[i]--;
		}
	}
}