[Java] 백준(실버-5) 1427번 - 소트인사이드

문제 풀이
이 문제는 쉽게 풀 수 있었다. 단순하게 주어진 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의 자리수에 접근하는 방법과 특정 배열을 내림차순으로 정렬하는 방법을 알고 있으면 쉽게 풀 수 있는 문제였다.