[백준] 1181 단어정렬
Comparator 연습중!
import java.util.*;
import java.io.*;
class Word{ // 단어가 담길 클래스
String word;
int len;
Word(String word){
this.word = word;
this.len = word.length();
}
}
public class Main{
public static void main(String []args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
List<String> list = new ArrayList<>();
for(int i = 0 ; i < n ; i++){
list.add(br.readLine());
}
HashSet<String> set = new HashSet<>(list); // 중복값 제거
List<Word> words = new ArrayList<>(); // Word를 제너릭으로 갖는 새로운 리스트
for(String s:set){
words.add(new Word(s));
}
// 정렬하기
words.sort(new Comparator<Word>(){
@Override
public int compare(Word o1, Word o2){
if(o1.len < o2.len){ // 길이가 짧은 순으로
return -1;
}else if(o1.len == o2.len){ // 길이가 같다면 알파벳 순으로
return o1.word.compareTo(o2.word);
}else{
return 1;
}
}
});
//출력
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < words.size() ; i++ ){
sb.append(words.get(i).word + "\n");
}
System.out.println(sb);
}
}
Comments