inflearn logo
강의

Course

Instructor

Introduction to Java Algorithm Problem Solving: Coding Test Preparation

11. Choosing a Temporary Class President

i와 j가 같은 경우를 처리하면 왜 오답이 될까요/

362

seonrizee

3 asked

0

solution 메서드에서 i와 j가 같은 경우를 강의에서 말씀해주신 대로 상관하지 않아도 되지만 연산 횟수를 줄여보고 싶었습니다.

그래서 for(int j = 1; j<=n; j++) 바로 밑 줄인 8번라인에

if (i == j) {

continue;

}

이 3줄만 추가하고 나머지 코드는 수정을 안 했는데 오답이 뜹니다.

어떤 곳에 영향을 끼쳐 오답이 되게 되는지 생각이 나지 않아서 질문 드립니다ㅠ

java 코테 준비 같이 해요!

Answer 5

0

hak

continue동작을 생각하면 if, else 추가에 상관없이 돌아가야할 것 같은데요... 

저도 질문자님처럼 continue 넣은 코드로는 왜 통과가 안되는지 궁금합니다.

0

beSlow

삼중for문 k 가 if(i==j)문 안으로 들어가야 합니다.

0

beSlow

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

seonrizee

import java.util.*;
class Main {
public int solution(int n, int[][] arr){
int answer=0, max=0;
for(int i=1; i<=n; i++){
int cnt=0;
for(int j=1; j<=n; j++){
                               // 추가한 부분
                               if (i == j)
                                     continue;
                               // 추가한 부분
              
for(int k=1; k<=5; k++){
if(arr[i][k]==arr[j][k]){
cnt++;
break;
}
}
}
if(cnt>max){
max=cnt;
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.print(T.solution(n, arr));
}
}
선생님께서 답으로 제공해주신 코드에 //추가한 부분 사이의 코드 2줄만 추가했습니다. 오답이 되는 이유가 잘 파악이 안되네요 ㅠ

0

codingcamp

안녕하세요^^

혹시 모르니 풀코드를 올려주세요.

안녕하세요. 바뀐 채점사이트 관련해서 문의드립니다.

0

38

2

갑자기 채점 사이트가 바뀌었어요

0

35

1

문제 리스트 페이지

0

30

1

채점 사이트 관련 질문드립니다

0

24

1

봉우리 문제 질문입니다

0

87

2

씨름 선수 문제에서 각 선수의 몸무게나 키가 같을 수도 있다면?

0

66

0

이 코드랑 영상 코드중에 뭐가 더 좋은 코드인가요?

0

72

0

가중치 방향 그래프에서 가중치가 0인 간선을 표현하는 방법

0

68

1

좌표 정렬 문제 이 코드가 왜 틀린지 모르겠습니다 ㅠㅠ

0

85

2

6-7 강의에서

0

48

1

6-6. 장난꾸러기 질문 있습니다.

0

46

1

강의 수강후 코딩테스트

0

111

1

answer 변수 사용 여부

0

47

1

2중 for문

1

85

2

2-11. 임시반장정하기 (Runtime Error)

0

63

1

혹시 LinkedList 같은 자료 구조들은 따로 배우지 않나요?

0

70

1

이런 풀이는 어떨까요

0

44

1

자바 스트림 방식의 효율성 질문 드립니다.

0

59

1

알고리즘 자료 구조들..

0

63

1

StringBuilder vs BufferdWriter

0

49

1

원더랜드(프림)

0

50

1

이런 코드는 어떤가요?

0

62

1

bfs 풀이

0

57

1

병합정렬

0

58

1