본문 바로가기
Algorithm Study/BaekJoon (JAVA)

백준 4358_생태계_JAVA

by 창브로 2024. 3. 29.
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