https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
해석 및 팁
이 문제는 먼저 Arrays.sort()의 Comparator 재정의를 한 후 Comparator에 있는 메서드인 compare를 오버 라이딩하면됩니다. 그리고 문자열의 길이가 같을 때는 사전순으로 정렬되게 return을 하면 됩니다. 마지막 중복값은 출력하지 않으므로 먼저 첫 번째 arr [0]을 출력시킨 후 앞의 값이랑 비교하면서 중복되지 않으면 출력하면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
String[] arr = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = sc.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]);
}
}
}
'백준' 카테고리의 다른 글
백준 1427 소트인사이드(Java) (0) | 2023.01.19 |
---|---|
백준 7568 덩치(Java) (1) | 2023.01.19 |
백준 2751 수 정렬하기 2(Java) (0) | 2023.01.19 |
백준 2941 크로아티아 알파벳(Java) (0) | 2023.01.19 |
백준 1316 그룹 단어 제커(Java) (0) | 2023.01.19 |