임시반장 정하기
문제
나의풀이
import java.util.*;
class Main {
public int solution(int n,int[][] arr) {
int answer = 0 , max = Integer.MIN_VALUE;
for(int i=1; i<=n;i++) {
int count = 0;
for(int j=1; j<=n; j++) {
for(int k=1; k<=5; k++) {
//같은반인적이 있으면 i는 고정. j는 다른 번호 학생
if(arr[i][k] == arr[j][k]) {
count++;
break;
}
}
}
if(count > max) {
max = count;
answer = i;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[][] arr = new int[n+1][6];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= 5; j++) {
arr[i][j] = kb.nextInt();
}
}
System.out.println(T.solution(n, arr));
}
}
풀이방법
i는 고정된, 즉, 현재 선택된 학생이 j번호의 학생과 k학년일때 같은반이 된 적이 있는가 탐색했다.
만약 같은반이 된 적이 한번이라도 발견되면 count가 증가되고 그 즉시 k문은 멈추고 다음 번호학생과 비교한다. (학생 수만 비교하기때문에)
한 학생의 비교가 완전 끝나면 count에 몇명의 학생과 같은반이었던적이 있는지가 담기는데,
만약 count가 max보다 크다면 max는 현재 count로 바뀌고 해당 학생의 번호 (i)가 answer값이 된다.
핵심키워드
3중 for문을 통해 2차원 배열의 값을 열끼리 비교, 행끼리 비교 하는 방법을 잘 익혀둬야겠다!
Author And Source
이 문제에 관하여(임시반장 정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zmdals/임시반장-정하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)