본문 바로가기

C++/백준

[C++][백준][정렬] 1427 소트인사이드

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

 

1427번: 소트인사이드

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

www.acmicpc.net

문제

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

입력

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

출력

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

예제 입력 1

2143

예제 출력 1

4321

 

 

삽입정렬을 이용해서 풀었다.

내림차순으로 정렬해서 출력하는 간단한 문제이다.

 

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
#include <stdio.h>
#include <stdlib.h>
#define SWAP(x,y,t)((t)=(x),(x)=(y),(y)=(t))
#define MAX 999
 
int ascend (int x, int y) { return y - x; }
int descend(int x, int y) { return x - y; }
 
void insertion_sort_fn (int list[], int n, int (*f)(int,int))
{
    int i, j, key;
    for(i=1; i<n; i++){
        key = list[i];
        for(j=i-1 ; j>=0 && f(list[j],key) < 0 ;j--)
            list[j+1= list[j];
            list[j+1= key;
    }
}
 
int main() {
    int list[MAX];
    int num;
    int c=0;
    scanf("%d"&num);
    while(true){
        list[c]=num%10;
        num/=10;
        c++;
        if(num==0break;
    }
 
    insertion_sort_fn( list, c, descend );
    forint i=0 ; i<c; i++ )
       printf("%d", list[i]);
    printf("\n");
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter