728x90
https://www.acmicpc.net/problem/4358
4358번: 생태학
프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어
www.acmicpc.net
import java.io.*;
import java.util.*;
public class Main {
public static void main (String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
int allCount = 0;
HashMap<String, Integer> map = new HashMap<String, Integer>(); // 파이썬 Swift의 딕셔너리
while ((s = br.readLine()) != null && !s.isEmpty()) {
map.put(s, map.getOrDefault(s, 0) + 1); // getOrDefault는 str이라는 key값이 없을때 초기화 값을 설정해주는 것
allCount++;
}
Object[] keyArr = map.keySet().toArray(); // 키 값을 배열로 받아옴
Arrays.sort(keyArr);
StringBuilder sb = new StringBuilder();
for(int i = 0; i<keyArr.length; i++) {
int value = map.get(keyArr[i]); // value 값 가져오기
double percent = ((double)value / (double)allCount) * 100;
sb.append(keyArr[i] + " " + String.format("%.4f",percent) + "\n"); // key값 퍼센트를 소수점 4자리까지 표시
}
System.out.println(sb.toString());
}
}
회고
- 새로운 문법을 많이 알게 되었다.
- 정리해서 기록해야겠다.
- 간단한 hash(딕셔너리) 문제였다.
'Algorithm Study > BaekJoon (JAVA)' 카테고리의 다른 글
백준 1463_1로 만들기_JAVA (0) | 2024.04.01 |
---|---|
백준 9655_돌 게임_JAVA (0) | 2024.04.01 |
백준 2745_진법 변환_JAVA (0) | 2024.03.28 |
백준 1969_DNA_JAVA (1) | 2024.03.28 |
백준 1764_듣보잡_JAVA (0) | 2024.03.27 |