import java.io.*;
import java.lang.*;
import java.util.*;
public class Main {
public static final Scanner scanner = new Scanner(System.in);
public static final int MAX_TABLE_LENGTH = 10000;
public static int[] table = new int[MAX_TABLE_LENGTH];
/**
* data[0] ~ data[n-1]에 등장한 번호들에 대한 빈도수 테이블을 채우는 함수
* @param data
* @param n
* @param table table[x] := data배열에서 x가 등장한 횟수
*/
public static void fillFrequencyTable(int[] data, int n, int[] table) {
for(int i=0; i<n;i++){
table[data[i]] = table[data[i]] + 1;
}
}
/**
* data[0] ~ data[n-1]사이에서 가장 많이 등장한 번호를 반환하는 함수
* @param data
* @param n
* @return 가장 많이 등장한 번호. 여러개인 경우 사전순으로 가장 빠른 번호.
*/
public static int getFrequentNumber(int[] data, int n) {
fillFrequencyTable(data, n, table);
int max = 0;
int frequent_number = 0;
for(int i = 0; i < n; i++){
if(table[data[i]] > max){
max = table[data[i]];
frequent_number = data[i];
}else if(table[data[i]] == max){
frequent_number = data[i] > frequent_number ? frequent_number : data[i];
}
}
//0000~9999중 가장 많이 등장한 번호
return frequent_number;
}
public static void main(String[] args) throws Exception {
int n = scanner.nextInt();
int[] data = new int[n];
for (int i = 0; i < n; i++) {
data[i] = scanner.nextInt();
}
int answer = getFrequentNumber(data, n);
System.out.printf("%04d", answer);
}
}
10주 완성 알고리즘 코딩테스트 - goorm edu에서 들으실 수 있는 내용입니다.