[백준] 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);
  }
}

Tags:

Categories:

Updated:

Comments