import java.util.Scanner;
public class Main {
public static int[] count(int[] Numbers) {
int[] Counters = new int[Numbers.length];
for (int i = 0; i < Numbers.length; i++) {
for (int j = 0; j < i; j++) {
if (Numbers[i] == Numbers[j]) {
Counters[j]++;
break;
}
}
Counters[i]++;
}
return Counters;
}
public static int getMFIdx(int[] Counters) {
int mfIdx = 0;
for (int i = 0; i < Counters.length; i++) {
if (Counters[mfIdx] < Counters[i]) {
mfIdx = i;
break;
}
}
return mfIdx;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
int[] Numbers = new int[N];
for (int i = 0; i < Numbers.length; i++)
Numbers[i] = input.nextInt();
int[] Counters = count(Numbers);
int mfIdx = getMFIdx(Counters);
System.out.println(Numbers[mfIdx]);
System.out.println(Counters[mfIdx]);
}
}
샘플 완벽하게 출력되고, 음수랑 0에 대해서도 잘 출력되는 것 같은데 뭐가 문제여서 WA가 뜨는 건지 잘 모르겠습니다.
혹시 이런 케이스에서 오답을 출력하는 건 아닐까요?
10
3
5
2
5
5
5
2
2
2
2
가장 많이 나타난 정수는 2이므로
2
5
가 출력되어야하지만, 현재 코드는
5
4
를 출력하고 있습니다.
getMFIdx 메서드에서 Counters 배열의 최댓값을 찾지 못해서 생기는 문제인 것 같습니다. 위의 경우처럼 Counters 배열이 [1, 4, 5, 1, 1, 1, 1, 1, 1, 1]가 될 때 뒤에 있는 최댓값 5를 찾지 못하고 반복문을 나가고 있네요...