[백준] 9733번: 꿀벌 _ JAVA

아로롱·2024년 11월 25일

algorithm

목록 보기
1/25

📍 문제

https://www.acmicpc.net/problem/9733

답안 코드


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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        LinkedHashMap<String, Integer> works = new LinkedHashMap<>();
        works.put("Re", 0);
        works.put("Pt", 0);
        works.put("Cc", 0);
        works.put("Ea", 0);
        works.put("Tb", 0);
        works.put("Cm", 0);
        works.put("Ex", 0);

        int total = 0;

        String line;
        while ((line = br.readLine()) != null && !line.isEmpty()) {
            StringTokenizer str = new StringTokenizer(line);
            while (str.hasMoreTokens()) {
                String token = str.nextToken();
                total++;
                if (works.containsKey(token)) {
                    works.put(token, works.get(token) + 1);
                }
            }
        }

        
        for (Map.Entry<String, Integer> entry : works.entrySet()) {
            bw.write(entry.getKey() + " ");
            bw.write(entry.getValue() + " ");
            bw.write(String.format("%.2f", (double) entry.getValue() / total));
            bw.newLine();
        }

        bw.write("Total " + total + " 1.00");
        bw.flush();
        bw.close();
        br.close();
    }
}

결과


// 입력
Cc Pt Pt Re Tb Re Cm Cm Re Pt Pt Re Ea Ea Pt Pt
Pt Re Re Cb Cb Pt Pt Cb

// 출력
Re 6 0.25
Pt 9 0.38
Cc 1 0.04
Ea 2 0.08
Tb 1 0.04
Cm 2 0.08
Ex 0 0.00
Total 24 1.00

💡

BufferReader.readLine() : 입력 스트림에서 한 줄을 읽어오는 메서드.
더 이상 입력이 없으면 readLine() 은 null 을 반환한다.

이것이 '입력 끝' 을 의미 !

LinkedHashMap : 삽입 순서를 유지하는 Map 인터페이스.
효울은 일반 HashMap 에 비해 떨어지지만 고정된 순서로 출력해주기 위해 사용하였다.

profile
Dilige, et fac quod vis

0개의 댓글