카드 : https://www.acmicpc.net/problem/11652
Big Integer 사용법
https://coding-factory.tistory.com/604
요소의 범위가 Long의 표현범위와 같다. (첫 시작시 BigInteger를 사용했으며 이는 성능에서 불리)
입력을 받으면서 동시에 HashMap에 저장, max가 중복되는 경우, 값을 비교해 작은 녀석을 선택.
숏코드를 통해 다른 풀이를 확인 결과, 입력을 받은 뒤, 오름차순으로 sorting하면 max 값을 찾을 때 중복되는 경우를 고려하지 않는 방법이 많았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.*;
public class Main {
static int N;
static boolean DBG = false;
static HashMap<Long, Integer> map;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int max = 0;
Long answer = 0L;
N = Integer.parseInt(br.readLine());
map = new HashMap<>();
for (int i = 0; i < N; i++) {
Long key = Long.parseLong(br.readLine());
int value = map.getOrDefault(key, 0) + 1;
if (max < value) {
max = value;
answer = key;
} else if (max == value && key < answer) {
answer = key;
}
map.put(key, value);
}
System.out.println(answer);
}
}