[알고리즘] 생태학

package org.example.생태학;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.SortedMap;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        try (
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        ) {
            SortedMap<String, Integer> treeMap = new TreeMap<>();
            int count = 0;
            
            while (true) {
                String tree = br.readLine();
                if (tree == null || tree.isBlank()) {
                    break;
                }
                
                count++;
                treeMap.put(tree, treeMap.getOrDefault(tree, 0) + 1);
            }
            
            for (String tree : treeMap.keySet()) {
                bw.write(tree + " " + String.format("%.4f", ((double) treeMap.get(tree) / count) * 100));
                bw.newLine();
            }
            bw.flush();
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
}
  • 별도 클래스 구성은 하지 않았다.

  • 필요한것
    • 나무의 각 종류의 빈도를 저장할 map
    • 출력순서 → abc~ 오름차순
    • 총 나무의 개수

기억해야할것

SortedMap ⇒ TreeMap

SortedMap

  1. 정의
    • Map 인터페이스의 확장이며
    • 키가 순서대로 유지되는 맵임
  1. 사용
    SortedMap<String, Integer> map = new TreeMap<>((s1, s2) -> s1.length() - s2.length());
    • 위와 같이 별도 Comparator 를 람다식으로 정의하여 키의 정렬조건을 줄 수도 있고

Uploaded by N2T

'자바 > 알고리즘' 카테고리의 다른 글

[알고리즘] 요격 시스템  (0) 2023.09.25
[알고리즘] 두 스티커  (0) 2023.09.24
[알고리즘] __**주사위 놀이하는 함수**__  (0) 2023.09.23
[알고리즘] 회전하는큐  (0) 2023.09.12
[알고리즘] four squares  (0) 2023.09.10