프로그래밍/백준 문제풀이
백준 1181: 단어 정렬
갹둥
2022. 7. 17. 03:30
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
Arrays.sort()를 이용하여 정렬하였다. 첫번째는 String 객체에 기본적으로 구현되어있는 Comparator에 의해 알파벳 순서로 정렬이 된다. 그 후 새롭게 문자열을 비교해서 반환하는 Comparator를 구현하면 길이가 짧은 순서로 정렬된다.
최종적으로는 길이 순으로, 그 중에서도 알파벳 순으로 정렬이 된다.
중복은 출력문에서 처리하였다. 앞에 위치한 문자열과 같다면 출력하지 않는다.
import java.util.*;
public class Main {
public static void main(String[] args) {
int N;
Scanner sc = new Scanner(System.in);
N=sc.nextInt();
String[] arr = new String[N];
for(int i=0; i<N; i++) {
arr[i] = sc.next();
}
Arrays.sort(arr);
Arrays.sort(arr, (s1, s2) -> 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]);
}
}
}
뭔가 더 좋은 방법이 있을 것 같지만...