이것도 1431-시리얼 번호와 마찬가지로 Comparator로 정렬 기준을 만들어서 풀이하였다.
다만 중복된 단어는 하나만 남기고 제거해야한다는 조건이 있어서 정렬 + 중복제거가 가능한 SortedSet 자료구조를 사용하였다.
아래는 전체 소스코드이다.
// 1181 - 단어 정렬
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
SortedSet<String> set = new TreeSet<>((a, b) -> {
if(a.length() != b.length()) return a.length() - b.length();
return a.compareTo(b);
});
int N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
set.add(br.readLine());
}
for (String word : set) {
bw.write(word);
bw.write("\n");
}
br.close();
bw.close();
}
}