BAEKJOON/단계별로 풀어보기

[BOJ] 1427번 : 소트인사이드

말하는 알감자 2022. 9. 3. 23:47

🔒 문제

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

⌨ 입력

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

🖨 출력

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

📚 예제

Ex1)

2143

4321

Ex2)

999998999

999999998

Ex3)

61423

64321

Ex4)

500613009

965310000

📌 풀이

주어진 수의 각 자리 수를 배열에 저장한 뒤 버블 소트를 사용했다

🔑 c언어 코드

#include <stdio.h>
#include <stdlib.h>
#define SWAP(x,y,t)(t=x,x=y,y=t)

int sort(int* ary, int N);
void print(int* ary, int N);

int main()
{
    int N;
    scanf("%d", &N);
    int n = N;
    int k = 0;
    int* ary = malloc(sizeof(int) * 10);
    while (1)
    {
        if (n == 0)
            break;
        ary[k++] = n % 10;
        n /= 10;
    }
    ary = sort(ary, k);
    print(ary, k);
    return 0;
}
int sort(int* ary, int N)
{
    int t;
    for (int i = 0; i < N; i++)
        for (int j = 1; j < N - i; j++)
            if (ary[j - 1] < ary[j])
                SWAP(ary[j - 1], ary[j], t);
    return ary;
}
void print(int* ary, int N)
{
    for (int i = 0; i < N; i++)
        printf("%d", ary[i]);
}

'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글

[BOJ] 2108번 : 통계학  (0) 2022.09.05
[BOJ] 10989번 : 수 정렬하기3  (0) 2022.09.04
[BOJ] 2751번 : 수 정렬하기 (★)  (0) 2022.09.01
[BOJ] 25305번 : 커트라인  (0) 2022.09.01
[BOJ] 1436번 : 영화감독 숌  (0) 2022.08.27