https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
해석 및 팁
이 문제는 EOF에 유의하면서 HashMap을 사용하면 되는 문제입니다. HashMap에 이름과 개수를 저장하고 ArrayList에 key값을 저장한 후에 정렬해 줍니다. 그다음 ArrayList에 있는 key값을 가지고 HashMap에서 value를 구하면 되는 문제입니다.
Java 코드
import java.util.Scanner;
import java.util.Collections;
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
HashMap<String, Integer> map = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
int count = 0;
while(sc.hasNext()) {
String str = sc.nextLine();
if(!map.containsKey(str)) map.put(str, 1);
else map.put(str, map.get(str) + 1);
count++;
}
for(String key : map.keySet()) list.add(key);
Collections.sort(list);
for(int i = 0; i < list.size(); i++) {
int num = map.get(list.get(i)) * 100;
String n = String.format("%.4f", (double)num / (double)count);
sb.append(list.get(i)+" "+n).append("\n");
}
System.out.print(sb);
}
}
'백준' 카테고리의 다른 글
백준 9658 돌 게임4(Java) (0) | 2023.02.12 |
---|---|
백준 11501 주식(Java) (0) | 2023.02.12 |
백준 24479 알고리즘 수업(Java) (0) | 2023.02.12 |
백준 15665 N과 M (11)(Java) (0) | 2023.02.11 |
백준 2210 숫자판 점프(Java) (0) | 2023.02.11 |