새발블로그

[백준/Java] 11652 카드 본문

Problem Solving/Baekjoon

[백준/Java] 11652 카드

EUG 2025. 7. 1. 14:01

문제

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

풀이방법

계속 NumberFormat exception이 일어나길래 백준 오류 문서 참고해보니 br.readline()문제라고해서 그것만 계속 고쳤는데
N이 long의 범위여서 그런것이었다....ㅜ  
key의 값이 있는지 없는지 어떻게 구별하나 고민했는데 getOrDefault로 기본값 처리를 할 수 있었다.
maxNum인덱스를 설정하면... 어떻게 그 값의 키를 알 수 있나 고민했는데  Entry라는 key value값을 얻을 수 있는 좋은 방법이 있었다!!!!

풀이

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));
        int N = Integer.parseInt(br.readLine());
        HashMap<Long, Integer> cards = new HashMap<>();

        // 숫자 카드의 빈도수 계산
        for (int i = 0; i < N; i++) {
            long num = Long.parseLong(br.readLine());
            cards.put(num, cards.getOrDefault(num, 0) + 1);
        }

        int maxNum = 0;
        long maxNumIdx = Long.MAX_VALUE;

        // 가장 많이 등장한 숫자 찾기
        for (Map.Entry<Long, Integer> entry : cards.entrySet()) {
            Long key = entry.getKey();

            if (entry.getValue() > maxNum || (entry.getValue() == maxNum && key < maxNumIdx)) {
                maxNum = entry.getValue();
                maxNumIdx =key;
            }
        }

        System.out.println(maxNumIdx);
    }
}

 

 

'Problem Solving > Baekjoon' 카테고리의 다른 글

[백준/Java] 1931 회의실 배정  (0) 2025.07.01
[백준/Java] 1436 영화감독 숌  (0) 2025.07.01
[백준/Java] 1920 수 찾기  (1) 2025.07.01
[백준/Java] 11279 최대 힙  (0) 2025.07.01
[백준/Java] 18258 큐 2  (0) 2025.04.02