728x90
반응형
https://www.acmicpc.net/problem/1181
▶️ 풀이
Comparator 인터페이스를 처음 써봐서 문제 풀 때 난관이었는데, 작동법이 신기하고 새로워서 재밌었다 :3
유용하게 쓸 수 있으니 중복 제거 소스도 참고할 것!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String[] arr = new String[N];
for (int i=0; i<N; i++) arr[i] = br.readLine();
// 객체 비교 인터페이스
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() == o2.length()) {
// 길이가 같은 단어는 사전순으로 정렬한다.
// ex) abhg = -7, abcd = -3 이므로 sort 함수를 통해 정렬된다.
return o1.compareTo(o2); // 정밀한 숫자로 정렬
} else {
// o1.length() < o2.length() 음수 (길이가 짧은 단어는 앞쪽으로 배치한다.)
// o1.length() > o2.length() 양수
return o1.length() - o2.length();
}
}
});
// 중복 제거
arr = Arrays.stream(arr).distinct().toArray(String[]::new);
for (String a : arr) System.out.println(a);
/* 32 --- 중복 제거할 때 StringBuilder에 추가하는 방법으로 풀이할 수 있다.
* ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
* StringBuilder sb = new StringBuilder();
* sb.append(arr[0]).append("\n"); // 첫 번째 값을 먼저 추가한다.
* for (int i=1; i<N; i++) {
* if (!arr[i].equals(arr[i-1])) {
* sb.append(arr[i]).append("\n"); // 중복되지 않는 값만 추가한다.
* }
* }
* */
}
}
Comparator 관련 정리는 해당 블로거 분이 기깔나게 적어두셨다... 🥺
나도 나중에 이런.... 멋있는 블로거가 되고 싶다!!!!
728x90
반응형
'Develop > Coding Test | Algorithm' 카테고리의 다른 글
예상 알고리즘 문제 (0) | 2024.10.22 |
---|---|
[백준] JAVA 풀이 - 2805: 나무 자르기 (0) | 2024.05.10 |
[백준] JAVA 풀이 - 10989 : 수 정렬하기 3 (0) | 2024.03.14 |
[알고리즘] 퀵정렬 Quick Function (0) | 2024.03.14 |
[알고리즘] 해시 함수 (Hash Function) (0) | 2024.03.12 |
댓글