인프런 커뮤니티 질문&답변

나무님의 프로필 이미지
나무

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

11. 임시반장정하기

임시반장문제 오답케이스를 모르겠습니다.

해결된 질문

작성

·

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
나무님의 프로필 이미지
나무
질문자

감사합니다!!

역시 문제를 잘 읽어야하네요 ㅠ

나무님의 프로필 이미지
나무

작성한 질문수

질문하기