해결방법
원래는 sort를 사용하여 정렬을 해주면 되지 않을까 생각했는데, 메모리 제한과 시간제한을 보고 코드를 좀 변경했다.
입력되는 수는 10000보다 작은 자연수이므로, 배열을 10000정도 크기로 만들고, 입력받은 수를 배열의 인덱스로 사용하여 수가 입력될 때마다 값을 1 올려서 저장한다.
이후 출력할 때 입력받은 수의 값 만큼 출력을 반복해주면 된다.
정답 코드
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int input[10001] = { 0 };
for (int i = 0; i < N; i++)
{
int idx;
cin >> idx;
input[idx] += 1;
}
for (int i = 1; i < 10001; i++)
{
for (int j = 0; j < input[i]; j++)
{
cout << i << '\n';
}
}
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 2292 벌집 (0) | 2024.12.15 |
---|---|
BOJ - 네 번째 점 3009 (0) | 2024.12.15 |
BOJ - 알록달록 앵무새 28445 (0) | 2024.12.13 |
BOJ - 준살 프로그래밍 대회 7513 (3) | 2024.12.13 |
BOJ - 좌표 정렬하기 11650 (0) | 2024.12.13 |