본문 바로가기
백준/C++

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

by 대니스 2022. 8. 5.

주소 : https://www.acmicpc.net/problem/10989

 

10989번: 수 정렬하기 3

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

www.acmicpc.net

소스 코드 :

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

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 in;
        cin >> in;
        input[in]+=1;
    }

    for (int i=1; i<10001;i++) {
        for (int j=0; j<input[i];j++) {
            cout << i << '\n';
        }
    }

}

 

마무리 : 위 문제는 카운팅 정렬로 풀어야하는 문제로 카운팅 정렬은 적은 양의 정수인 데이터에 따라 배열에 정렬하는 알고리즘을 말한다. 그래서 입력된 수는 배열의 수번째에서 카운팅하여 푸는 문제가 되는 것이다.