반응형
https://www.acmicpc.net/problem/1427
이번 문제는 개행되어서 숫자가 주어지는 것이 아닌, 한 번에 숫자가 주어지고 각 자릿수를 뽑아내서 정렬을 해야 하는 문제입니다.
다양한 정렬을 사용하여 문제를 해결할 수 있는데 이번 포스팅에서는 이때까지 많이 사용했던 카운팅 정렬과 Arrays.sort()를 사용해서 해결해보겠습니다.
2022.05.07 - [Algorithm/Theory] - [Java] Counting Sort(카운팅 정렬)
풀이
1. 카운팅 정렬을 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] N_array = new int[10];
while(N != 0) {
N_array[N % 10]++;
N = N/10;
}
int i = 9;
while(i >= 0) {
if(N_array[i] != 0) {
N_array[i]--;
bw.write(String.valueOf(i));
i = 9;
}else {
i--;
}
}
br.close();
bw.flush();
bw.close();
}
}
이번 문제에서 그나마 생각해야할 요인은 자릿수를 어떻게 뽑아내느냐인데, 나머지 연산과 나눗셈 연산을 사용하여 카운팅 배열에 바로바로 카운트해줍니다.
2. Arrays.sort()를 사용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String N = br.readLine();
char[] N_char = N.toCharArray();
Arrays.sort(N_char);
for(int i = N_char.length - 1 ; i >= 0 ; i--) {
bw.write(N_char[i]);
}
br.close();
bw.flush();
bw.close();
}
}
Arrays.sort()를 사용했을 때는 수학적인 연산도 필요 없이 해결할 수 있습니다.
아래에서부터 순서대로
- 카운팅 정렬 사용
- Arrays.sort() 사용
입니다. 정답이라도 다양한 방법을 시도해보는 것이 재미도 있고 좋은거 같습니다.
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 알고리즘][자바] 11651번 : 좌표 정렬하기2 (0) | 2022.06.22 |
---|---|
[백준 알고리즘][자바] 11650번 : 좌표 정렬하기 (0) | 2022.06.22 |
[백준 알고리즘][자바] 2108번 : 통계학(카운팅 정렬) (0) | 2022.06.14 |
[백준 알고리즘][자바] 10989번 : 수 정렬하기 3 (0) | 2022.05.07 |
[백준 알고리즘][자바] 2751번 : 수 정렬하기 2 (0) | 2022.05.03 |
댓글