인프런 커뮤니티 질문&답변
i와 j가 같은 경우를 처리하면 왜 오답이 될까요/
작성
·
360
0
solution 메서드에서 i와 j가 같은 경우를 강의에서 말씀해주신 대로 상관하지 않아도 되지만 연산 횟수를 줄여보고 싶었습니다.
그래서 for(int j = 1; j<=n; j++) 바로 밑 줄인 8번라인에
if (i == j) {
continue;
}
이 3줄만 추가하고 나머지 코드는 수정을 안 했는데 오답이 뜹니다.
어떤 곳에 영향을 끼쳐 오답이 되게 되는지 생각이 나지 않아서 질문 드립니다ㅠ
퀴즈
앞에 있는 모든 학생보다 키가 커야 보이는 '보이는 학생' 문제에서, 효율적인 풀이법의 핵심 아이디어는 무엇일까요?
모든 학생의 키를 서로 비교한다.
현재까지 본 학생 중 가장 큰 키를 추적한다.
가장 큰 학생 한 명만 찾는다.
학생들의 키를 오름차순으로 정렬한다.
답변 5
0
0
0
if else 문을 추가해주지 않아서 그런 것 같습니다.
제 풀이 공유해드려요
import java.util.*;
class Main{
public int solution(int n, int[][] arr) {
int answer = 0;
int[] matchNum = new int[n];
int maxNum = 0;
int maxIndex = 0;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++) {
if(i==j) {
continue;
} else {
for(int k=0; k<5; k++) {
if(arr[i][k] == arr[j][k]) {
matchNum[i]++;
break;
}
}
}
}
}
for (int i=0; i<matchNum.length; i++) {
if (matchNum[i] > maxNum) {
maxNum = matchNum[i];
maxIndex = i;
}
}
answer = maxIndex + 1;
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] arr = new int[n][5];
for(int i=0; i<n; i++) {
for(int j=0; j<5; j++) {
arr[i][j] = in.nextInt();
}
}
in.close();
System.out.println(T.solution(n, arr));
}
}
0
0





