728x90

0. 주어진 문제 

시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초128 MB124047284640260.175%

문제

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

입력

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

출력

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












 1. 풀이


1) counting sort를 활용해 숫자의 등장 횟수를 카운트 해주었다.

2) 출력하는 함수를 따로 구현하여 카운트 횟수만큼 출력을 해주었다.



 2. 소스코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<string>
 
int count[10];
 
void counting_sort(const int request) {
    int copy(request);
    while (copy) {
        count[copy % 10]++;
        copy /= 10;
    }
}
 
void print_descending_order(const int request) {
    int n = std::to_string(request).length();
    for (int i = 9;i >= 0;i--) {
        for (int t = 0;t < count[i];t++) {
            std::cout << i;
        }
    }
}
 
 
int main() {
    int input;
    std::cin >> input;
    counting_sort(input);
    print_descending_order(input);
 
    return 0;
}
cs


 3. 문제 출처


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


 4. 참고




+ Recent posts