728x90
어제 푼 문제보다 조금 더 난이도가 있는 문제입니다. 그래도 쉬운 문제에 속한다고 생각합니다.
포기하지 말고 답을 보기 전에 조금 더 생각해보시는 걸 추천드립니다!!
이 문제의 조건은 3가지입니다.
1. 길이가 짧은 단어를 오름차순으로 정렬
2. 길이가 같으면 사전 순으로 정렬
3. 중복되는 단어는 1번만 출력
아마도 막힌다면 중복 단어를 제거하는 부분에서 막힐 거라고 생각합니다.
하지만 자바에서는 정말 간단한 방법으로 중복 단어를 제거할 수 있습니다!! 바로 Set을 이용한 방법입니다!
Set은 중복 값을 허용하지 않기 때문에 자동으로 3번 조건을 충족시킬 수 있습니다.
주의할 점은 Set은 sort를 이용해서 정렬할 수 없기 때문에 List에 Set 값을 넣고 정렬해주어야 합니다.
그다음은 Comparator를 구현해서 정렬해주면 손쉽게 정렬할 수 있습니다 ㅎㅎ
아래는 정답 코드입니다. (답을 먼저 보지 말고 차분히 생각해보고 봐주세요!!)
더보기
package baekjoon.level12;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class BOJ_1181 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
Set<String> words = new HashSet<String>();
for(int i=0; i<N; i++){
words.add(br.readLine());
}
List<String> filterWord = new ArrayList<String>(words);
filterWord.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1.length() == o2.length()) {
return o1.compareTo(o2);
}
return o1.length() - o2.length();
}
});
for(String str : filterWord) {
System.out.println(str);
}
}
}
728x90
'Algorithms 🚀 > Baekjoon' 카테고리의 다른 글
[백준/2576번] 홀수 - JAVA[자바] (0) | 2021.06.07 |
---|---|
[백준/10814번] 나이순 정렬 - JAVA[자바] (0) | 2021.04.13 |
[백준/11650번] 좌표 정렬하기 - JAVA[자바] (0) | 2021.04.12 |
[백준/1427번] 소트인사이드 - JAVA[자바] (0) | 2021.04.12 |
[백준/8958번] OX퀴즈 (0) | 2021.02.16 |