인프런 커뮤니티 질문&답변
작성자 없음
작성자 정보가 삭제된 글입니다.
질문드립니다.
작성
·
227
0
안녕하세요. 강사님
2-11 임시반장 정하기 문제를
1. 아래와 같이 풀었는데 틀린 사유를 아직 잘 모르겠어서 질문드립니다. ㅠㅠ
시간되실 때 봐주시면 감사하겠습니다.
2. 강사님의 풀이에서 break를 붙이지 않으면 오답이 된다고 하셨는데
break가 없어도 정답은 나오지 않나요?!
조건문을 빠져나가게 하려는 건 알겠는데..
3. 해주신 풀이 중
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();
}
}
에서 [6][6]이 아닌 [n+1][6]이라고 쓰신 점과
j<=n이 아닌 j<=5로 쓰신 이유도 궁금합니다..
아는 게 별로 없어 죄송합니다ㅠ
import java.util.*;
class Main {
public int solution(int n, int[][] arr){
int answer=0, max=0;
for(int i=0; i<n; i++){
int cnt=0;
for(int j=0; j<n; j++){
for(int k=0; k<n; k++){
if(arr[i][k]==arr[j][k]){
cnt++;
break;
}
}
}
if(cnt>max){
max=cnt;
answer=i+1;
}
}
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][n];
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
arr[i][j]=kb.nextInt();
}
}
System.out.print(T.solution(n, arr));
}
}
답변 1
0
김태원
지식공유자
안녕하세요^^
for(int i=1; i<=n; i++){
for(int j=1; j<=5; j++){
arr[i][j]=kb.nextInt();
}
}
위에 코드에서 i변수는 학생수이고, j변수는 1학년부터 5학년까지를 의미합니다.
int[][] arr=new int[n+1][6];
그래서 arr배열의 행은 n+1로 해서 학생수만큼 행수가 나와야 해서이고, 열은 1학년부터 5학년으로 정해져 있으니 6의 크기로만 잡은것입니다.
중간에 break 를 해야 하는 이유는 i 학생과 j학생이 2학년과 3학년때 같은 반을 했어도 한 번만 카운팅해야 해서입니다. 이 부분은 영상에서 설명했으니 다시 자세히 보시기 바랍니다.





