본문 바로가기

알고리즘 문제풀이

[알고리즘] 백준 1427번 "소트인사이드" (C/C++) - Don 임베디드

문제요약:

자연수 N이 주어지면, 그 수의 각 자리수를 내림차순으로 정렬하여 출력하는 프로그램을 작성하라

 

제약:

시간 제한 2초, 메모리 128MB

1 <= N <= 1,000,000,000

 

출력:

입력된 N의 각 자리수를 내림차순으로 정렬한 수를 출력.

 

예제 1 입력. 예제 1 출력.
2143 4321
예제 2 입력. 예제 2 출력.
999998999 999999998
예제 3 입력. 예제 3 출력.
61423 64321
예제 4 입력. 예제 4 출력.
500613009 965310000

 

 

정답코드:

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
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
 
#define MAX_ARR_COUNT (10)
 
using namespace std;
 
// Target numbers range from 0 to 9.
// Best environment for using Count Sort.
int nCountOfNum[MAX_ARR_COUNT];
 
int main()
{
    int N, nTmp;
 
    // Reset Count Array
    for (int i = 0; i < MAX_ARR_COUNT; i++)
    {
        nCountOfNum[i] = 0;
    }
 
    // get Input Number
    cin >> N;
 
    // Count the numbers' occurrence
    nTmp = N;
    while (nTmp > 0)
    {
        nCountOfNum[nTmp % 10]++;
        nTmp /= 10;
    }
 
    // print out numbers by descending order.
    for (int j = (MAX_ARR_COUNT - 1); j >= 0; j--)
    {
        while (nCountOfNum[j] > 0)
        {
            cout << j;
            nCountOfNum[j]--;
        }
    }
 
    return 0;
}
cs

 

원본 링크: https://www.acmicpc.net/problem/1427