왜 WA가 뜨는 건가요?

longkid8923 Reply 8 years 3 weeks ago
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가 뜨는 건지 잘 모르겠습니다.
ChaDaEun Reply 8 years 3 weeks ago
혹시 이런 케이스에서 오답을 출력하는 건 아닐까요? 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를 찾지 못하고 반복문을 나가고 있네요...