728x90
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
String[] arr = new String[N];
in.nextLine(); // 개행 버림
for (int i = 0; i < N; i++) {
arr[i] = in.nextLine();
}
Arrays.sort(arr, new Comparator<String>() {
public int compare(String s1, String s2) {
if (s1.length() == s2.length()) {
return s1.compareTo(s2);
}
else {
return s1.length() - s2.length();
}
}
});
System.out.println(arr[0]);
for (int i = 1; i < N; i++) {
if (!arr[i].equals(arr[i - 1])) {
System.out.println(arr[i]);
}
}
}
}
저번 문제처럼 람다식을 Arrays.sort에 적용시키는 것이 아닌
sort안에 있는 compare 메소드를 오버라이딩 하는 방법으로 문제를 해결하였다.
문자열 비교는 compareTo()메소드를 사용하면 간단히 사전순으로 비교하여 정렬할 수 있다.
728x90
'백준 단계별' 카테고리의 다른 글
[Java] 백준 10814: 나이순 정렬 (0) | 2023.02.16 |
---|---|
[Java] 백준 11650: 좌표 정렬하기 (0) | 2023.02.15 |
[Java] 백준 1427: 소트인사이드 (0) | 2023.02.15 |
[Java] 백준 2108: 통계학 (0) | 2023.02.14 |
[Java] 백준 10989: 수 정렬하기 3 (0) | 2023.02.14 |