백준 1181 - 단어 정렬
Updated:
Java
1181 번 - 단어 정렬
문제
접근 방법
문제 조건에
- 중복 단어 제거
- 길이 순 정렬
- 길이가 같으면 사전 순 정렬
을 하라고 되어있다.
중복 단어는 Set으로 해결하며, List로 변환 후 Collecions.sort()으로 정렬하여 해결한다.
코드
import java.util.*;
import java.io.*;
public class Main {
static int n, result;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = stoi(br.readLine());
Set<String> set = new HashSet<String>(); // 중복 제거를 위해 SET 사용
for(int i = 0; i < n; i++) {
set.add(br.readLine());
}
List<String> word = new ArrayList<>(set);
Collections.sort(word, (o1, o2)->{
int comp = Integer.compare(o1.length(), o2.length()); // 길이 순 정렬
if(comp == 0) { // 길이가 같으면 사전 순 정렬
return o1.compareTo(o2);
}
return comp;
});
for(int i = 0; i < word.size(); i++)
System.out.println(word.get(i));
br.close();
}
static int stoi(String str) {
return Integer.parseInt(str);
}
}
총평
후기
Set을 List로 변환하는 걸 생각해본 문제