https://www.acmicpc.net/problem/1427
정렬 문제였다. 문제 자체는 내림차순으로 정렬하려면 까다로워 보이지만, 자바에서 제공하는 sort 기능을 사용하면 간단하게 풀리는 문제이다.
문제에서는 정렬하려고 하는 수 N이 자연수라고 하였다. 하지만, 이를 굳이 int 형으로 작성하지 않아도 된다. 백준에서 제공하는 input이 자연수라는 의미이기 때문이다. 그래서 나는 String값으로 입력받고, 입력받은 것을 바로 String 배열에 split 해 주도록 코드를 작성하였다.
일반적인 sort는 오름차순이고, 내림차순으로 정렬하려면 다음과 같이 써 주어야 한다.
Arrays.sort(정렬하려는 배열, Collections.reverseOrder())
이후 이 배열을 toString으로 바꾸어 출력하면 [n,n,n ...]과 같은 형식이 되므로 바로 출력해 줄 수 없다. 따라서 배열을 순회하며 StringBuffer에 넣어주고 나중에 StringBuffer에 들어있는 값을 한꺼번에 출력하도록 코드를 작성해 주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb = new StringBuffer();
String[] input = br.readLine().split("");
Arrays.sort(input, Collections.reverseOrder());
for(int i=0;i<input.length;i++){
sb.append(input[i]);
}
System.out.println(sb);
br.close();
}
}