[백준(JAVA)] 1302번: 베스트셀러

세하·2025년 5월 4일

[백준] 문제풀이

목록 보기
50/94
post-thumbnail

문제

✔ 난이도 - Silver 4

설명

HashMap을 사용하여 도서의 제목과 갯수를 저장하고, 2번의 정렬이 필요한 문제였다.
1. value로 내림차순 정렬
2. key로 오름차순 정렬.

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        HashMap<String, Integer> hm = new HashMap<>();

        int N = Integer.parseInt(br.readLine());
        String str = "";
        for (int i = 0; i < N; i++){
            str = br.readLine();

            if (!hm.keySet().contains(str)){
                hm.put(str, 1);
            } else {
                int count = hm.get(str);
                hm.replace(str, count + 1);
            }
        }

        //value 기준 숫자 내림차순 정렬 후 key 문자열 오름차순
        List<Map.Entry<String, Integer>> list = new ArrayList<>(hm.entrySet());
        list.sort(
            Comparator.comparingInt((Map.Entry<String, Integer> e) -> e.getValue())
              .reversed() // 1순위: value 내림차순
              .thenComparing(Map.Entry::getKey) // 2순위: key 오름차순
        );

        Map.Entry<String, Integer> entry = list.get(0);
        sb.append(entry.getKey());
        System.out.println(sb);
    }
}

TIL💡

📌 https://velog.io/@seha01130/JAVA-HashMap-정렬하기

0개의 댓글