문제

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

설명

문제자체는 간단했다. 입력된 수의 각자리수를 분리하고 각 숫자를 내림차순으로 정렬하는 것이다. 그런데 여기서 하나 풀면서 아쉬웠던 점은 아직 정렬법에대한 공부가 제대로 되어 있지 않아 제일 기본적인 정렬법이지만 제일 비효율적인 버블정렬을 활용했다는 점이다. 비록 문제 자체는 쉽게 풀었지만 나중에 공부해야할 리스트에 다양한 정렬방법도 추가해 학습해 보는 것이 좋겠다.

코드

#include <stdio.h>
#include <math.h>
int main() {
    int input,level,splited[10]; // 입력 / 자릿수 / 쪼개진 수
    scanf("%d",&input); //입력
    for(int i=10; input % (int) pow(10,i) == input; i--) // 입력된 수 가 몇 자리 수 인지 분류
        level = i;
    level--;
    for(int i=0; i<level+1; i++)    //배열에 입력된 수의 각자리 숫자를 쪼개서 저장
    {
        splited[i] = input / (int) pow(10,level-i);
        input -= splited[i] * (int) pow(10,level-i);
    }
    for(int i=0; i<level+1; i++)    //제일 비효율적인 버블정렬...;;;;
        for(int j=0; j<level+1; j++)
        {
            int temp = splited[i] > splited[j] ? splited[j] : splited[i];
            if(temp == splited[j])
            {
                splited[j] = splited[i];
                splited[i] = temp;
            }
        }
    for(int i=0; i<level+1; i++) // 출--력
        printf("%d",splited[i]);
    return 0;
}