새발블로그
[백준/Java] 11652 카드 본문
문제
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 |