suheang

[백준] | JAVA, 자바 | 1302번 - 베스트셀러 본문

알고리즘

[백준] | JAVA, 자바 | 1302번 - 베스트셀러

suheang 2024. 5. 13. 22:13

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

 


문제 요약 :

오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성


문제 풀이 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        Map<String, Integer> book = new TreeMap<>();

        for (int i = 0; i < n; i++) {
            String s = br.readLine();
            book.put(s, book.getOrDefault(s, 0) + 1);
        }

        String best = "";
        int max = 0;

        for (Map.Entry<String, Integer> entry : book.entrySet()) {
            if (entry.getValue() > max) {
                max = entry.getValue();
                best = entry.getKey();
            }
        }
        System.out.println(best);
    }
}

 

1. 오늘 하루 동안 팔린 책의 수 N 입력받기

2. 키가 자동으로 사전순으로 정렬하기 위해 TreeMap 사용

3. N 만큼 책 이름 입력받기, 책을 Map에 저장 책이름이 있으면 +1, 없으면 0

4. 가장 많이 팔린 책을 저장하기 위해 best, max 생성

5. 가장 많이 팔린 책을 찾아 max와 best에 값을 저장

6. 저장된 best 출력