11. 임시반장 정하기 질문
384
작성한 질문수 15
- 우선 채점사이트에서 정답처리 받은 코드이고요, 핵심부분입니다.
int answer = 0, max=0 ;
int cnt=0;
for(int i=1; i<=n; i++){ // i학생이
cnt=0;
for(int j=1; j<=n; j++){ //j학생들을 탐색하면서
for(int k=1; k<=5; k++){ //학년 돌면서 탐색
if(arr[i][k] == arr[j][k]){
cnt++;
break; // 한번이라도 같은반인게 조건이기 때문에
}
}
if(max < cnt){
max = cnt;
answer=i;
}
}
}- 이 코드의 조건문 부분 코드
if(arr[i][k] == arr[j][k]){이것을, 학생들을 탐색할때 자기자신을 탐색하지 않기 위해 아래와 같이 조건문을 바꾸었더니 오답처리 되었습니다. 오답처리 된 이유가 궁금합니다.
if(i != j && arr[i][k] == arr[j][k]){
*참고용 전체 코드
import java.util.*;
public class Main {
public int solution(int n, int [][] arr){
int answer = 0, max=0 ;
int cnt=0;
for(int i=1; i<=n; i++){ // i학생이
cnt=0;
for(int j=1; j<=n; j++){ //j학생들을 탐색하면서
for(int k=1; k<=5; k++){ //학년 돌면서 탐색
if( i != j && arr[i][k] == arr[j][k]){
cnt++;
break; // 한번이라도 같은반인게 조건이기 때문에
}
}
if(max < cnt){
max = cnt;
answer=i;
}
}
}
return answer;
}
public static void main(String[] args) {
Main M = 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.print(M.solution(n,arr));
}
}
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
질문 주신 코드의 수정된 조건문에서, 자기 자신과의 비교를 제외한 결과 오답 처리가 되었다는 부분에 대해서 설명을 드리겠습니다.
기존 조건문인 if(arr[i][k] == arr[j][k]){ 에서는 i와 j가 같은 경우 즉, 자기 자신과의 비교도 포함되어 있었습니다. 이는 학생 i를 기준으로 자신이 포함된 반이 몇 번인지 카운팅 할 때 자신을 한 번은 카운트하기 때문에 누락되지 않습니다.
그런데 문제의 목적이 각 학년마다 자신과 같은 반이었던 횟수가 가장 많은 학생을 찾는 것이기 때문에, i와 j가 같을 때도 카운팅을 해야 합니다. 같은 학생(i == j)인 경우에는 항상 같은 반이므로 이 경우를 카운트에서 제외하면, 자기 자신이 포함된 반이 몇 번인지 정확하게 카운트할 수 없게 됩니다.
따라서 수정한 조건문에서 i != j를 추가함으로써, 모든 학생에 대하여 자기 자신과 같은 반이었던 횟수를 1회 빼고 카운트하게 되므로 최대값을 찾는 로직에서 오류가 발생할 수 있습니다. 자기자신과의 비교가 제외되면 최대 같은 반 횟수를 가진 학생을 찾을 수 없기 때문에 오답 처리가 됩니다.
해당 강의의 커뮤니티 질문&답변 게시판에 질문해주시면, 강사님께서 더 상세하게 설명해 주실 수 있으실 겁니다.
안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.
0
27
1
갑자기 채점 사이트가 바뀌었어요
0
32
1
문제 리스트 페이지
0
27
1
채점 사이트 관련 질문드립니다
0
23
1
봉우리 문제 질문입니다
0
81
2
씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?
0
64
0
이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?
0
72
0
가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법
0
67
1
좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ
0
85
2
6-7 강의에서
0
48
1
6-6. 장난꾸러기 질문 있습니다.
0
45
1
강의 수강후 코딩테스트
0
109
1
answer 변수 사용 여부
0
44
1
2중 for문
1
85
2
2-11. 임시반장정하기 (Runtime Error)
0
63
1
혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?
0
70
1
이런 풀이는 어떨까요
0
43
1
자바 스트림 방식의 효율성 질문 드립니다.
0
57
1
알고리즘 자료 구조들..
0
62
1
StringBuilder vs BufferdWriter
0
47
1
원더랜드(프림)
0
50
1
이런 코드는 어떤가요?
0
61
1
bfs 풀이
0
57
1
병합정렬
0
56
1





