728x90
문제
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
접근 방식
사전순으로 출력하기 위해 키값을 기준으로 정렬할 수 있는 TreeMap을 사용하여
각 나무가 입력으로 들어올 때마다 해당 키의 값을 1씩 증가시켜 주면 된다.
이때 입력을 한 줄씩 받을 때마다 카운트를 하여 총 입력수를 기록해 두고
이를 나중에 출력 시에 사용해 확률을 계산해 주면 된다.
정확히 소수점 넷째 자리까지만 출력해야 하고 적거나 많으면 틀리기 때문에
자바는 String.format을 이용해 자릿수를 맞춰서 출력해 주면 된다.
풀이
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int total = 0;
TreeMap<String, Integer> trees = new TreeMap<>();
String tree;
for (int i = 0; i < 29; i++) {
tree = br.readLine();
trees.put(tree, trees.getOrDefault(tree, 0) + 1);
total++;
}
for (String key : trees.keySet()) {
int cnt = trees.get(key);
double per = ((double) cnt / total) * 100;
sb.append(key).append(" ").append(String.format("%.4f", per)).append("\n");
}
System.out.println(sb);
}
}
'Java > Algorithms' 카테고리의 다른 글
[백준] 22233번 : 가희와 키워드 (0) | 2024.04.04 |
---|---|
[백준] 20291번 : 파일 정리 (0) | 2024.04.03 |
[백준] 11559번 : Puyo Puyo (0) | 2024.04.01 |
[백준] 15686번 : 치킨 배달 (0) | 2024.04.01 |
[백준] 3055번 : 탈출 (0) | 2024.03.31 |