본문 바로가기

Baekjoon/C++

[C++][BOJ/백준] 1427 소트인사이드

 

 

Baekjoon Online Judge

 

1427번: 소트인사이드

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

www.acmicpc.net

 

 

[문제]

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

 

 

[입력]

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

 

 

[출력]

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

 

 


 

[풀이]

주어진 수의 각 자릿수를 내림차순으로 정렬해야 하므로

각 자릿수를 비교할 수 있도록 N을 int가 아닌 string으로 입력받는다.

 

이중 for문을 이용하여 N[i]가 N[j]보다 작을 때

N[i]와 N[j]의 순서를 바꿔주면 N은 내림차순으로 정렬된다.

 

 

[코드]

#include <iostream>
using namespace std;

int main()
{
    string N;

    cin >> N;

    for (int i = 0; i < N.length(); i++)
    {
        for (int j = i + 1; j < N.length(); j++)
        {
            if (N[i] < N[j])
            {
                int tmp = N[i];
                N[i] = N[j];
                N[j] = tmp;
            }
        }
    }

    cout << N << '\n';

    return 0;
}