본문 바로가기

PS

[BOJ]4358번 : 생태학

https://www.acmicpc.net/problem/4358

 

4358번: 생태학

프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어

www.acmicpc.net

 

 

문제 파악

EOF 가 입력되기 전까지 나무 종을 입력받아서 전체 입력 개수에서 해당 종이 차지하는 비율을 소수점 넷째 자리까지 반올림하여 출력하면 된다.

다른 분의 소스를 보면 Trie를 만들어서 사용 하신 분이 계신데 나는 (Key, Value) + Sort의 자료구조를 생각했고 TreeSet으로 해결하였다.

 

더보기
import java.io.*;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        TreeMap<String,Integer> treeMap = new TreeMap<>();

        int count = 0;
        String input = "";
        while((input = br.readLine())!= null)
        {
            count++;
            treeMap.put(input,treeMap.getOrDefault(input,0)+1);
        }

        for(String key : treeMap.keySet()){
            System.out.println(key +" " + String.format("%.4f",((float)treeMap.get(key) / (float)count) * 100));
        }
    }
}

 

'PS' 카테고리의 다른 글

[BOJ]12904번 : A와 B  (0) 2021.08.08
[Programmers] 위클리 챌린지 - 1주차 (부족한 금액 계산기)  (0) 2021.08.08
[BOJ]17219번 : 비밀번호 찾기  (0) 2021.07.27
[BOJ] 15829번 : Hashing  (0) 2021.07.25
[Programmers] LV2 - 소수 찾기  (0) 2021.07.20