해결된 질문
작성
·
459
0
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int N = kb.nextInt();
int [][] input = new int[N][5];
for (int i = 0; i < N; i++) {
for (int j = 0; j < 5; j++) {
input[i][j] = kb.nextInt();
}
}
int answer = solution(N, input);
System.out.println(answer);
kb.close();
}
private static int solution(int N, int[][] grid) {
int answer = -1;
int max = -1;
for (int stdnt = 0; stdnt < N; stdnt++) {
int count = 0;
for (int i = 0; i < 5; i++) {
int classNum = grid[stdnt][i];
for (int j = 0; j < N; j++) {
if ( grid[j][i] == classNum ) {
count++;
}
}
}
if ( count > max) {
max = count;
answer = stdnt;
}
}
return answer+1;
}
}
테스트케이스 많이 넣어봤는데, 오답케이스를 못찾겠습니다.
여러명일때 작은 번호 출력하는것도, 하고 여러가지 넣어봤는데 잘 안되네요 ㅠ
답변 1
0
안녕하세요^^
이 문제는 1학년부터 5학년까지 한 번이라도 같은 반을 했던 학생수를 카운팅하는 것입니다. 같은 반을 여러번 했다고 여러번 카운팅하면 안됩니다. 즉 1번 학생과 같은 반을 한 학생을 카운팅 할 때 3번 학생이 1번 학생과 1학년때와 2학년때 같은 반을 두 번 했더라도 3번 학생을 한 번만 카운팅해야 합니다.
반례입니다. 답은 3입니다.
5
9 8 7 6 5
5 6 7 8 9
1 2 3 7 8
4 5 3 4 2
6 2 8 4 2
감사합니다!!
역시 문제를 잘 읽어야하네요 ㅠ