https://www.acmicpc.net/problem/1427
문제
> 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.
> 첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.
접근
수를 입력받고 이 수를 각 자리수별로 쪼갠뒤 이들을 내림차순으로 정렬해 다시 출력한다.
문제해결
> 문제에서 "수"가 주어진다고 했고 1,000,000,000보다 작거나 같은 자연수 라고 했으므로 int로 입력받는다.
> 입력받은 수를 string으로 형변환 해주고 해당 문자열을 반복문으로 한 자리씩 가져와 벡터에 저장한다.
> sort를 이용해 정렬하는데 내림차순 정렬이므로 범위를 rbegin()부터 rend()로 주어 내림차순 정렬해주고 출력한다.
코드
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N;
vector<char> word;
for (char c : to_string(N)) word.push_back(c);
sort(word.rbegin(), word.rend());
for (char c : word) cout << c;
}

후기
자릿수에 대해 수를 그 자릿수의 길이만큼 반복하며 나눠서 가져와 정렬을 할 수 있지만 그것보다 문자열로 바꿔 연산하는게 훨씬 빠르고 간결할거 같다고 생각했다.
출력형식에대한 지정도 딱히 없어서 문자와 문자열을 사용해 출력헀다.