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

#include <iostream>
#include <algorithm>
using namespace std;

int main(int argc, char **argv){
    int N, x;
    scanf("%d",&N);
    int cnt[10001] = {0}; // 동적할당 해도 메모리 초과

    for(int i=0; i<N; i++){
        scanf("%d",&x);  // 입력받은 수 다 배열에 저장하면 메모리 초과 -> 숫자를 센 후에 출력만 해주자
        cnt[x]++;
    }

    for(int i=1; i<=10000; i++){ // <= 빼먹지 말기
        for(int j=0; j<cnt[i]; j++){
            printf("%d\n", i);
        }
    }

    return 0;
}

오늘의 키포인트

  • 입력되는 모든 수를 전부 배열에 저장하면 메모리를 초과한다.
  • 따라서 입력되는 수의 개수를 세서 개수만큼 출력시킨다. -> 카운팅 정렬
  • 10000번째까지면 = 붙이는 것 잊지 말기. 은근 계속 빼먹어서 틀린다.

좋은 웹페이지 즐겨찾기