#79. 백준 1427번 문제 풀이: 소트인사이드 문제 원본 보기
배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력: 첫 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력: 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.
입력/출력
--입력--
2143
--출력--
4321
--입력--
999998999
--출력--
999999998
--입력--
61423
--출력--
64321
--입력--
500613009
--출력--
965310000
문제풀이+해설
이번 문제의 요지는 숫자를 입력받아 처리한다 하지만, 사실상 숫자로 이루어진 문자열을 처리하는 것이다.
그리고 문자열이란 결국 문자들로 이루어진 배열로 처리하면 된다.
즉, 단순한 배열의 소팅이다.

입력된 숫자문자열을 배열로 만들어서 소팅하고 출력해 주면 해결된다.
C++ 에서는 sort 를 사용할 때 오름차순, 내림차순을 구현하기 위해, 아래와 같은 함수 객체를 제공한다. less : 첫번째 인자가 두번째 보다 작으면 true 반환 greater : 첫번째 인자가 두번째 보다 크면 true 반환 sort(ar.begin(), ar.end, greater<>()) 처럼 사용한다(내림차순이 된다).
code sol.
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
  string ns; // 숫자형태의 문자열을 저장할 string
  
  cin >> ns; // 문자열을 받는다.
  sort(ns.begin(), ns.end(), greater<>());
  // greater 를 사용해 내림차순 소팅, 
  // 오름차순은 제거하거나, less<>() 함수를 사용하면 된다.
  cout << ns; // 소팅된 문자열을 출력.
  return 0;
}
© 코드솔 - CodeSol. All Rights Reserved.