https://www.acmicpc.net/problem/1181
1. 아이디어
중복된 단어를 제거한 후 정렬하는데 Set 자료구조를 먼저 사용하고 이를 다시 List 자료구조로 변환하면 된다.
2. 문제풀이
자바의 List는 생성자에 Collection을 받을 수 있어서 Set을 활용해 먼저 중복을 제거한 후 이를 List로 변환했다.
두 가지 정렬 조건은 List의 sort 메서드에서 Comparator에 람다식을 넣는 방식으로 구현했다.
3. 코드
import java.io.*;
import java.util.*;
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));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Set<String> set = new HashSet<>();
for (int i = 0; i < N; i++) {
set.add(br.readLine());
}
List<String> list = new ArrayList<>(set);
list.sort(((o1, o2) -> {
if (o1.length() != o2.length()) return Integer.compare(o1.length(), o2.length());
return o1.compareTo(o2);
}));
for (String str : list) {
sb.append(str).append("\n");
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 11656번 - 접미사 배열 [Java] (0) | 2024.12.23 |
---|---|
[백준] 11652번 - 카드 [Java] (0) | 2024.12.23 |
[백준] 10867번 - 중복 빼고 정렬하기 [Java] (0) | 2024.12.23 |
[백준] 9316번 - Hello Judge [Java] (0) | 2024.12.23 |
[백준] 3058번 - 짝수를 찾아라 [Java] (0) | 2024.12.23 |