PS/Baekjoon Online Judge

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

kimyoungrok 2021. 7. 17. 01:56

백준 - 10989


풀이

"수 정렬하기 2"와는 반대로 시간효율보다 공간효율이 중시되는 문제이기 때문에 동일한 코드를 사용하면 틀릴 것 이다.

그래서, 주어지는 숫자의 개수를 배열에 저장 후, 각 숫자의 개수만큼 반복해서 출력하는 방법으로 해결했다.


소스코드

#include <stdio.h>
#define MAX 10000
int main(){
    int N, num, cnt[MAX] = {0, };
    scanf("%d", &N);
    while (N--){
        scanf("%d", &num);
        cnt[num-1]++;
    }
    for (int i = 0; i < MAX; i++)
        if (cnt[i] != 0)
            for (int j = 0; j < cnt[i]; j++)
                printf("%d\n", i + 1);
}

출처

 

10989번: 수 정렬하기 3

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

www.acmicpc.net