import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bufferedReader.readLine());
String[] arr = new String[N];
for (int i = 0; i < N; i++) {
arr[i] = bufferedReader.readLine();
}
Arrays.sort(arr, new Comparator<String>() {
@Override
public int compare(String a1, String a2) {
if(a1.length() == a2.length()) {
return a1.compareTo(a2);
}else {
return a1.length() - a2.length();
}
}
});
String[] result = Arrays.stream(arr)
.distinct()
.toArray(String[]::new);
for (String str : result) {
if (str != null) {
bufferedWriter.write(str + "\n");
}
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
}
}
이 문제는 Arrays.sort()에서 Comparator을 사용해야 하는 문제이다...
Comparator 을 잘 몰라서 헤맸다..
2024.02.08 - [Java] - [JAVA] Comparator 이해하기
그리고 .toArray(String[]::new)는 스트림의 모든 요소를 수집하여 새로운 String 배열을 만드는 메서드이다.
arr[] 의 요소를 result[] 에 담아 출력하기 위한 것이다
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 1010 다리 놓기 (0) | 2024.02.09 |
---|---|
[백준_JAVA_알고리즘] 10814 나이순 정렬 (1) | 2024.02.09 |
[백준_JAVA_알고리즘] 11651 좌표 정렬하기 2 (0) | 2024.02.07 |
[백준_JAVA_알고리즘] 11650 좌표 정렬하기 (0) | 2024.02.07 |
[백준_JAVA_알고리즘] 1427 소트인사이드 (0) | 2024.02.07 |