[BaekJoon]10989번: 수 정렬하기3
❓문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
✏️입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.
📜출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
💻코드
/*
[백준 10989] 수 정렬하기
22-08-27 / c++
*/
#include<iostream>
#include<algorithm>
using namespace std;
int main(void) {
//속도를 위해 명시해줌
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int TESTCASE;
cin >> TESTCASE;
int arr[10001] = { 0 };
for (int i = 0; i < TESTCASE; i++) {
int num;
cin >> num;
arr[num]++;
}
for (int j = 0; j < 10001; j++) {
for (int k = 0; k < arr[j]; k++) {
cout << j << "\n";
}
}
return 0;
}
-
처음에는 testcase크기로 배열을 만들어 값을 입력받고 sort()함수를 사용해주었다.
결과는 메모리 초과
최대 개수로 int를 저장하면 메모리가 남아나지 않는 것 같다. - 두번째로 10001 크기의 배열을 만들어 입력받는 수를 인덱스로 갖고, 그 수를 카운트 해주는 방법으로 했다.
- 그리고 속도를 더 높이기 위해
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
를 명시했다.