1. 문제 링크
https://www.acmicpc.net/problem/1427
2. 문제

요약
- 주어진 수를 내림차순으로 정렬하여 출력합니다.
- 입력: 정렬하려고 하는 수를 입력합니다.
- 출력: 내림차순으로 정렬 후 정렬된 수를 출력합니다.
3. 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public String descending(String input) {
if(input.length() == 1) {
return input;
}
ArrayList<Integer> input_int = new ArrayList<Integer>();
for(int i = 0; i < input.length(); i++) {
input_int.add(Integer.parseInt(input.substring(i, i + 1)));
}
Collections.sort(input_int, Collections.reverseOrder());
String result = "";
for(int i = 0; i < input_int.size(); i++) {
result += Integer.toString(input_int.get(i));
}
return result;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
Main m = new Main();
System.out.println(m.descending(input));
}
}
4. 접근
- 받은 수를 ArrayList에 넣은 후에 Collections를 이용해서 내림차순으로 정렬한 후 이를 이어붙이면 내림차순으로 정렬된 수가 나오게 됩니다.
- String으로 입력받은 후, 각 자리수를 숫자로 바꾸어 ArrayList에 넣습니다.
- 해당 ArrayList를 reverseOrder()를 통해 내림차순으로 정렬한 후, ArrayList에 있는 숫자들을 순서대로 String으로 바꾸어 연결한 후에 이를 출력합니다.