1 minute read




문제 풀이


이 문제는 쉽게 풀 수 있었다. 단순하게 주어진 N의 각 자리수별로 저장한 후 내림차순으로 정렬하면 된다.
생각해낸 아이디어는 다음과 같다.

  • charAt() 메서드를 활용하여 N의 자리수별로 접근하자.
  • 자리수별로 int 형으로 형변환하여 별도의 배열에 저장한다.
  • N의 자리수별로 저장된 배열을 내림차순으로 정렬한다.


그럼 코드를 작성해보자.

1
2
3
4
5
6
String N = br.readLine();
int[] arr = new int[N.length()];

for(int i=0; i<arr.length; i++) {
    arr[i] = Integer.parseInt(String.valueOf(N.charAt(i)));
}

N을 String형으로 입력받고 N의 자리수를 담을 arr 배열을 선언하자.
charAt() 메서드를 통해 N의 자리수별로 접근하여 형변환하여 arr배열에 저장한다. 이 때 char형을 String형으로 변환 후 int형으로 형변환을 해야 한다.

1
2
3
4
5
6
7
Arrays.sort(arr);
        
StringBuilder sb = new StringBuilder();
for(int i=0; i<arr.length; i++) {
    sb.append(arr[arr.length-i-1]);
}
bw.write(sb.toString()+"\n");

arr배열에 N의 자리수를 저장했으니 이 arr배열을 내림차순으로 정렬하자.
sort() 함수를 통해 오름차순으로 정렬한 후 거꾸로 순회하여 StringBuilder에 담으면 내림차순으로 저장된다.



작성코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String N = br.readLine();
        int[] arr = new int[N.length()];

        for(int i=0; i<arr.length; i++) {
            arr[i] = Integer.parseInt(String.valueOf(N.charAt(i)));
        }
        Arrays.sort(arr);
        
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<arr.length; i++) {
            sb.append(arr[arr.length-i-1]);
        }
        bw.write(sb.toString()+"\n");

        bw.flush();
        bw.close();
        br.close();
    }
}

회고

  • 주어진 N의 자리수에 접근하는 방법과 특정 배열을 내림차순으로 정렬하는 방법을 알고 있으면 쉽게 풀 수 있는 문제였다.