[백준] 4358 생태학

문제보기

트라이 쓰는 문제라는데 잘 몰라서 그냥 풀어따… 나중에 트라이 배우면 다시 풀기

import java.util.*;
import java.io.*;

public class Main{

  public static void main(String []args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    List<String> list = new ArrayList<>();
		
    String s = br.readLine();
    if( s == null ){ // 예외처리 - 빈 문자 
      return;
    }
    while( s != null ){ // 주어진 나무 리스트에 추가하기
      list.add(s);
      s = br.readLine();   
    }
    Collections.sort(list); // 정렬 
    int n = list.size();

    int cnt = 1;
    StringBuilder sb = new StringBuilder();
    for(int i = 1 ; i < n ; i++){
      if(list.get(i).equals(list.get(i-1))) cnt++;
      else{
        // 소숫점 아래 넷째자리까지 나타내라구 해썽...
        double p = Math.round(cnt*1000000.0/n)/10000.0;
        sb.append(list.get(i-1) + " " + String.format("%.4f", p) + "\n");
        cnt = 1;
      }
    }
    // 마지막 원소 
    double p = Math.round(cnt*1000000.0/n)/10000.0;
    sb.append(list.get(n-1) + " " + String.format("%.4f", p));
    System.out.println(sb); // 출력 
  }
}

Comments