https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
트라이를 구현해서 해결할 수 있고,
그냥 단순히 hash 자료 구조를 활용하여 문제를 해결할 수 있다.
//package org.example;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
Map<String, Integer> map = new HashMap<>();
int total = 0;
String str = "";
while ((str = br.readLine()) != null) {
total++;
//map에 해당 키가 존재하지 않으면, 키를 새로 추가하고 값을 1로 세팅
if (!map.containsKey(str)) {
map.put(str, 1);
} else {
map.put(str, map.get(str) + 1);
}
}
List<String> keys = new ArrayList<>(map.keySet());
Collections.sort(keys);
for (Object key : keys) {
sb.append(key).append(" ").append(String.format("%.4f", (double) map.get(key) * 100 / total)).append("\n");
}
System.out.println(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'Algorithm > BOJ' 카테고리의 다른 글
백준 3015번 : 오아시스 재결합 Java (0) | 2023.02.11 |
---|---|
백준 9250번 : 문자열 집합 판별 - 아호코라식 Java (0) | 2023.01.06 |
백준 5446번 : 용량 부족 - 트라이, Java (0) | 2023.01.02 |
백준 3080번 : 아름다운 이름 - 트라이 , Java (1) | 2022.12.31 |
백준 9202번 : Boggle - 트라이 Java (0) | 2022.12.31 |