[01427] 소트인사이드

Byeongmin·2021년 6월 23일
0

[01427] 소트인사이드

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

코드

#include <iostream>

using namespace std;

int main() {
    int N, num[10] = {0, };

    scanf("%d", &N);

    while(N > 0) {
        num[N%10]++;
        N /= 10;
    }

    for(int i = 10; i-- > 0;) {
        while(num[i]-- > 0)
            printf("%d", i);
    }
}

부가 설명

count sort를 알게 된 이후, 작고 적은 숫자에 대한 정렬에 대해 너무 좋다는걸 깨달았다.
각 자리수마다의 숫자를 index로 갯수를 count했고, 개수만큼 내림차순으로 출력했다.

출처 : https://www.acmicpc.net/problem/1427

profile
Handong Global Univ.

0개의 댓글