월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
if문 내용 중에서 nx조건식에 대한 질문입니다..
nx>=0 은 이해됩니다.조건식을 음수로 좌표를 찍었을때 예외처리가 생기니까 조건을 준건 이해가되는데nx < n가 이해가 잘 안됩니다..nx가 무조건 0이상의 정수일때 nx가 n보다 크거나 같아질 수가 있는건가요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드를 이렇게 작성하면 문제가 될까요?
public class GetMinimumDistance { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.next(); char ch = in.next().charAt(0); System.out.println(getMinimumDistance(str, ch)); return; } public static String getMinimumDistance(String str, char ch) { List<Integer> distanceList = new ArrayList<Integer>(); for(int i = 0; i < str.length(); i++) { String beforeStr = str.substring(0, i); StringBuilder sb = new StringBuilder(beforeStr); beforeStr = sb.reverse().toString(); String afterStr = str.substring(i); int beforeDistance = beforeStr.indexOf(ch) + 1; int afterDistance = afterStr.indexOf(ch); if(beforeStr.length() == 0 || beforeDistance == 0) beforeDistance = Integer.MAX_VALUE; if(afterStr.length() == 0 || afterDistance == -1) afterDistance = Integer.MAX_VALUE; distanceList.add(beforeDistance < afterDistance ? beforeDistance : afterDistance); } String answer = ""; for (int dis : distanceList) { answer += Integer.toString(dis) + " "; } return answer.substring(0, answer.length() - 1); } } 혹시 이렇게 작성하면 답은 맞는데 고쳐야 할 부분이라든가 있을까 고수님들 확인 부탁드립니다 ㅠㅠ너무 비효율적으로 짠거 같아서요 ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-1번 합이 같은 부분집합 질문 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int sum = 0; static int n; static int[] arr; static boolean flag = false; static String answer = "NO"; public static void main(String[] args) throws IOException { Scanner kb = new Scanner(System.in); n=kb.nextInt(); arr = new int[n]; for(int i=0; i<n; i++){ arr[i]=kb.nextInt(); sum+=arr[i]; } DFS(0, 0); System.out.println(answer); } static void DFS(int i, int part_sum){ if(flag == true) return; if(i == n){ if(sum == (sum-part_sum)){ flag = true; answer = "YES"; } } else{ DFS(i+1, part_sum + arr[i]); DFS(i+1, part_sum); } } }위와 같이 코드를 짰습니다.주어진 예제도 잘나오는데 채점사이트에 입력하면 계속 오답이라고 나오네요ㅠㅠ 로직도 똑같은데 뭐가 문제일까요..
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코딩 테스트 고수가 되고 싶습니다.
안녕하세요.선생님 덕분에 점차 고수의 길로 들어서고 있습니다.강의를 듣던 중 공부 방법에 대해 고민이 생겼습니다.제 머리로 그렇겠지~ 하는 것보다는 선생님의 답변을 듣는 것이 나을 거 같아 질문 드립니다. 1) 강의 듣기 전 문제 도전2) 못풀겠으면 강의를 틀고 선생님께서 주시는 힌트를 약간 받아 다시 도전3) 그래도 안된다면 선생님 강의를 듣고 무릎을 탁 침4) 어떠한 문제로 풀지 못했는지 메모5) 바로 다시 풀어보기 현재는 이런 과정을 거치고 있는데요기존 풀어본 문제도 다시 계속 풀어봐야 하나요?오랜만에 다시 풀어보려니까 전에 풀지 못한 문제는 기억이 나지 않는 것들도 있어서요.. 코딩테스트는 무조건 많이 풀어보는게 중요하다! 는 말을 많이 들어서계속 치고 나가는게 좋을지치고 나가는 속도는 좀 더디더라도 복습을 하면서 치고 나가야할지 선생님의 조언을 기다립니다. 저는 현재 인텔리제이에서 연습하고 있는데 괜찮을까요..?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 확인 부탁드립니다.
package inflearn.ch03; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* 5. 연속된 자연수의 합(투 포인터) */ public class Problem_5 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] array = new int[N]; for(int i = 0; i < N; i++){ array[i] = i+1; } solution(N,array); } public static void solution(int N, int[] array){ int start = 0; int end = 0; int sum = 0; int count = 0; while (end < N-1){ sum += array[end++]; if(sum == N){ count++; } while (sum >= N){ sum -= array[start++]; if(sum == N){ count++; } } } System.out.println(count); } }강의와 다르게 범위를 줄이지 않고 while 문으로 사용해서 정답 통과를 했는데 나중에 범위가 커지면 문제가 발생할 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
친구인가에서 Union&Find 알고리즘 질문있습니다.
Union 함수에서if (fa != fb) unf[fa] = fb; 해주는 부분이 있는데왜 unf[fb] = fa 를 쓰는 것과의 차이가 있을까요?다른 웹사이트에서 찾아보니깐 fa < fb 일때 unf[fb] = fa하고이외에는 unf[fa] = fb 를 해주는 방식을 채택하고 있길래궁금해서 질문드립니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
PriorityQueue 클래스를 사용해보고 싶은데 뭐 때문에 오류가 나는지 모르겠어요
테스트 5에서 오류가 나던데 뭐가 문제인지를 못찾겠어요ㅠ import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;class Person implements Comparable<Person> {int id;int priority;public Person(int id, int priority) {this.id = id;this.priority = priority;}@Overridepublic int compareTo(Person o) {return o.priority - this.priority;}}public class Main {public static int solution(int n, int m, int[] arr) {int answer = 0;Queue<Person> queue = new PriorityQueue<>();for(int i=0; i<n; i++) {queue.offer(new Person(i, arr[i]));}while(!queue.isEmpty()) {Person tmp = queue.poll();answer++;if(tmp.priority == arr[m] && tmp.id == m) {return answer;}}return answer;}public static void main(String[] args){Scanner in = new Scanner(System.in);int n = in.nextInt();int m = in.nextInt();int[] arr = new int[n];for (int i=0; i<n; i++) {arr[i] = in.nextInt();}System.out.println(solution(n, m, arr));}}
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
j가 속한 for문 순회 질문드립니다.
j 순회에서 0부터 i-1까지 앞에서부터 순회하도록 해도 정답이 됩니다. 뒷 강의 들어보니까, 동전 문제처럼 동전이 무한한 경우는 앞에서부터 순회한다고 하셨고 최대 점수문제처럼 문제가 유한한 경우는 뒤에서부터 순회한다고 하셨습니다.(말씀하신 내용은 강의 10-6 섹션, 8:20쯤에서 나옵니다) 혹시 이 문제도 그거랑 연관이 있어서 강의에서처럼 뒤에서부터 순회하신 풀이로 푸신 건가요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드의 이 부분을 다르게 풀었는데, 괜찮은지 질문드립니다!
private static void bfs() { while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { Point now = queue.poll(); for (int j = 0; j < 4; j++) { int nextX = now.x + dx[j]; int nextY = now.y + dy[j]; if (nextX >= 0 && nextY >= 0 && nextX < n && nextY < m) { if (board[nextX][nextY] == 0) { board[nextX][nextY] = 1; day[nextX][nextY] = day[now.x][now.y] + 1; queue.offer(new Point(nextX, nextY)); } } } } } }코드의 bfs 메서드이고, 큐의 사이즈만큼 순회하는 로직int size = queue.size(); for (int i = 0; i < size; i++) { Point now = queue.poll();을 추가했습니다. 결과나 과정 측면에서 봤을 때, 강의에서의 코드와 무슨 차이가 있는지 모르겠는데, 혹시 성능 상에서 기존 코드보다 많이 떨어지는 코드일까요? 이렇게 작성해도 되는지 궁금합니다. 이전 bfs 강의에서는 이렇게 큐의 사이즈를 구해서 순회하는 로직을 사용하더라구요.
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
해당 문제 다른 풀이에 대한 질문입니다.
import java.io.*; import java.util.*; class Time implements Comparable<Time> { int startTime, endTime; public Time(int startTime, int endTime) { this.startTime = startTime; this.endTime = endTime; } @Override public int compareTo(Time time) { if (this.endTime == time.endTime) { return this.startTime - time.startTime; } else { return this.endTime - time.endTime; } } } public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); List<Time> times = new ArrayList<>(); StringTokenizer st; int startTime, endTime; for (int i = 0; i < n; i++) { st = new StringTokenizer(br.readLine()); startTime = Integer.parseInt(st.nextToken()); endTime = Integer.parseInt(st.nextToken()); times.add(new Time(startTime, endTime)); } System.out.print(solution(times)); } private static int solution(List<Time> times) { int answer = 0; int endTime = 0; int count = 1; Collections.sort(times); for (Time time : times) { if (time.startTime < endTime) { count++; } else { answer = Math.max(answer, count); count = 1; endTime = time.endTime; } } return answer; } } 이렇게 로직을 구현했는데, 왜 오답 처리되는지 궁금합니다.다른 예외 케이스가 존재할까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
DFS 풀 때 재귀 함수 매개변수로 L값만 넘겨주는 이유가 뭔가요?
DFS를 풀 때 매개변수로 int L 값만 계속 넘겨주잖아요ch[] 배열은 항상 static으로 전역으로 선언해두시고,그리고 재귀 진입 전에 ch[i] = 1 하고 돌고 나서 ch[i] = 0하는데L값도 재귀 진입 전에 L++하고 돌고 나서 L--하면 같은 결과가 나오는데매개변수로 L값만 넣는 이유가 궁금합니다.넣을 꺼면 둘 다 넣거나 둘 다 빼거나 할 것 같은데.
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
변수 L에 대한 질문입니다.
변수 L이 level을 나타내는 것 같은데요.이 문제에서의 L은 level이 아닌, 인덱스로서의 의미로 작용하는 것 같습니다. level과 인덱스의 구분 개념이 헷갈리는데, 혹시 명확하게 잡아주실 수 있으실까해서 질문 남깁니다! 트리에서는 depth라는 용어를 사용하고 1부터 시작한다.그래프에서는 level이라는 용어를 사용하고 0부터 시작한다. 라고 알고 있는데, 제가 알고 있는 개념이 맞는 것인지 궁금합니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8. 응급실 문제에서 큐에 넣어준 임시변수를 null 값을 새로 할당할 필요가 없지 않을까요?
while문 안의 for문 안에서 if문에 큐에 넣어준 변수 temp에 null을 할당하지 않아도 로직상으로 문제가 안된다고 생각하는데, 그렇게 생각해도 될까요? import java.util.*;import java.io.*;class Person {int id;int priority; // 위험도public Person(int id, int priority) {this.id = id;this.priority = priority;}}public class Main {public int solution(int n, int m, int[] arr) {int answer = 0;Queue<Person> q = new LinkedList<>();for (int i = 0; i < n; i++) {q.offer(new Person(i, arr[i]));}while (!q.isEmpty()) {Person temp = q.poll();for (Person person : q) {if (person.priority > temp.priority) {q.offer(temp);// temp = null;break;}}if (temp != null) {answer++;if (temp.id == m) {return answer;}}}return answer;}public static void main(String[] args) throws IOException {Main main = new Main();BufferedReader br = new BufferedReader(new InputStreamReader(System.in));StringTokenizer st = new StringTokenizer(br.readLine());int n = Integer.parseInt(st.nextToken());int m = Integer.parseInt(st.nextToken());int[] arr = new int[n];st = new StringTokenizer(br.readLine());for (int i = 0; i < n; i++) {arr[i] = Integer.parseInt(st.nextToken());}System.out.println(main.solution(n, m, arr));}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임에러(ArrayIndexOutOfBound) 가 나는 이유
안녕하세요 강사님 강사님 강의 문제에 대한 질문이 아니라 답변하기 힘드시면 괜찮습니다.강사님 강의를 다 듣고 추천해주신 백준 문제들을 풀다가 질문이 있어 질문드립니다. 백준 9019 문제에 관한 질문인데 백준에서 채점 받을때 ArrayIndexOutOfBound 가 나는 이유를 제 코드를 살펴봐도 어디서 문제이지 찾을 수 없어 질문드립니다. 9019 의 문제의 솔루션을 구글링 해봐도 다 똑같은 코드로만 작성을 해놔서 제가 작성한 코드가 어디가 문제였는지 알고 싶어 질문드립니다.package Baekjoon; import java.util.*; class DSLR { public int result; public String command; DSLR(int result, String command) { this.result = result; this.command = command; } } public class _9019 { static boolean[] ch = new boolean[10000]; static ArrayList<String> list = new ArrayList<>(); public void BFS(int input, int output) { Arrays.fill(ch, false); Queue<DSLR> q = new LinkedList<>(); q.offer(new DSLR(input, "")); while(!q.isEmpty()) { DSLR tmp = q.poll(); if (tmp.result == output) { list.add(tmp.command); break; } for (int i = 0; i < 4; i++) { if(i == 0) { int next_result = (tmp.result * 2) % 10000; if (!ch[next_result]) { String next_command = tmp.command + 'D'; ch[next_result] = true; q.offer(new DSLR(next_result, next_command)); } } if (i == 1) { int next_result = tmp.result - 1; if (next_result == 0) next_result = 9999; if (!ch[next_result]) { String next_command = tmp.command + 'S'; ch[next_result] = true; q.offer(new DSLR(next_result, next_command)); } } if (i == 2) { int next_result = (tmp.result % 1000) * 10 + (tmp.result / 1000); if (!ch[next_result]) { String next_command = tmp.command + 'L'; ch[next_result] = true; q.offer(new DSLR(next_result, next_command)); } } if (i == 3) { int next_result = (tmp.result % 10) * 1000 + tmp.result / 10; if (!ch[next_result]) { String next_command = tmp.command + 'R'; ch[next_result] = true; q.offer(new DSLR(next_result, next_command)); } } } } } public static void main(String[] args) { _9019 T = new _9019(); Scanner sc = new Scanner(System.in); int test = sc.nextInt(); for (int i = 0; i < test; i++) { int a = sc.nextInt(); int b = sc.nextInt(); ch[a] = true; T.BFS(a, b); } for(String x : list) { System.out.println(x); } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
스택이 멀티쓰레드에 안전하지 않은걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 강의 잘 듣고 있습니다.문제와 관련 없긴 한데, 궁금해서 질문 드립니다.동일한 코드의 메서드 solution1, solution2를 main 메서드에서 순차적으로 실행했을 때 결과값이 다른데, 스택이 멀티쓰레드에 안전하지 않아서 발생하는 문제일까요?하나씩 실행하면 올바른 정답이 나옵니다. package 스택; import java.util.Scanner; import java.util.Stack; public class _03_크레인인형뽑기 { public int solution1(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); for (int pos : moves) { for (int i = 0; i < board.length; i++) { if (board[i][pos - 1] != 0) { int tmp = board[i][pos - 1]; board[i][pos - 1] = 0; if (!stack.isEmpty() && (stack.peek() == tmp)) { stack.pop(); answer += 2; } else { stack.push(tmp); } break; } } } return answer; } public int solution2(int[][] board, int[] moves) { int answer = 0; Stack<Integer> stack = new Stack<>(); // 1. 크레인 위치에 해당하는 인형을 찾는다. (밑으로 행을 이동하면서 인형 찾기) for (int pos : moves) { for (int i = 0; i < board.length; i++) { // 2. 비어 있지 않은 인형 캐치 (배열의 index는 0부터 시작하기 때문에 -1) if (board[i][pos - 1] != 0) { // 인형 꺼냄 int tmp = board[i][pos - 1]; // board의 인형은 비어줌 board[i][pos - 1] = 0; // 바구니에 겹치는게 있으면 모두 꺼냄 if (!stack.isEmpty() && (stack.peek() == tmp)) { stack.pop(); answer += 2; } else { // 아니면 바구니에 인형 담기 stack.push(tmp); } // 다음 위치로 이동 break; } } } return answer; } public static void main(String[] args) { _03_크레인인형뽑기 t = new _03_크레인인형뽑기(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] board = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { board[i][j] = sc.nextInt(); } } int m = sc.nextInt(); int[] moves = new int[m]; for (int i = 0; i < m; i++) { moves[i] = sc.nextInt(); } System.out.println("1번 : " + t.solution1(board, moves)); System.out.println("2번 : " + t.solution2(board, moves)); } }결과값 5 0 0 0 0 0 0 0 1 0 3 0 2 5 0 1 4 2 4 4 2 3 5 1 3 1 8 1 5 3 5 1 2 1 4 1번 : 4 2번 : 0
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2-6)런타임에러 질문입니다.
import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { public String solution(String[] arr) { String answer= ""; ArrayList<Integer> newlist = new ArrayList<>(); for(int i=0; i<arr.length; i++) { StringBuffer sb = new StringBuffer(arr[i]); newlist.add(Integer.parseInt(sb.reverse().toString())); } for(int i=0; i<newlist.size(); i++) { if((int)newlist.get(i)==1) { newlist.remove(i); } } for(int i=0; i<newlist.size(); i++) { for(int j=2; j<newlist.get(i); j++) { if(newlist.get(i)%j==0) { newlist.remove(i); } } } for(int i=0; i<newlist.size(); i++) { answer += newlist.get(i)+ " "; } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb=new Scanner(System.in); int N = kb.nextInt(); String[] arr = new String[N]; for(int i=0; i<N; i++) { arr[i] = kb.next(); } System.out.println(T.solution(arr)); return ; } } 맨 처음에 string[]배열로 입력값을 받은후stringbuffer을 이용해서 뒤집고, Integer.parseInt하면 0이 제거 되는 숫자화가 됩니다.그 이후에 arraylist에 순서대로 담아서, 소수가 아니면 제거하는 방식으로 풀었는데런타임에러가 나는 이유를 모르겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Object 클래스의 clone() 메서드 질문
Object 클래스의 clone() 메서드는 깊은 복사가 아니라 얕은 복사로 알고 있습니다.강의에서의 선생님의 말씀대로 clone() 메서드는 깊은 복사가 맞나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Scanner next() 메소드 관련 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1)int n = kb.nextInt();String str = kb.nextLine();==============================2)int n = kb.nextInt();String str = kb.next(); 1)과 2) 차이점이 궁금합니다.예를들어 5 \r\n 3 을 입력하는 경우,1)의 경우에는 콘솔창에엔터를 치면 입력이 안되고, 2)의 경우에는 엔터를 쳐서 따로 입력이 가능한데 왜 그런지 궁금합니다ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
크레인 인형뽑기(카카오)에 대한 제 풀이 코드에 어떤 문제가 있는지 질문드립니다
다음과 같이 코드를 작성했는데, 테스트케이스 4, 5번이 틀린 것으로 나오네요. 제 코드에 어떤 문제가 있는지 이해가 되지 않아서 질문 드립니다. import java.util.*; import java.io.*; public class Main { public int solution(int[][] board, int[] moves) { int answer = 0; List<Integer> dollList = new ArrayList<>(); Stack<Integer> stack = new Stack<>(); for (int i = 0; i < moves.length; i++) { stack = new Stack<>(); for (int j = 0; j < board.length; j++) { if (board[j][moves[i] - 1] != 0) { stack.push(board[j][moves[i] - 1]); board[j][moves[i] - 1] = 0; break; } } if (stack.isEmpty()) { continue; } dollList.add(stack.pop()); // 바구니에 인형을 넣음 if (dollList.size() >= 2) { for (int j = 0; j < dollList.size() - 1; j++) { if (dollList.get(j) == dollList.get(j + 1)) { dollList.remove(dollList.get(j)); dollList.remove(dollList.get(j)); answer += 2; } } } } return answer; } public static void main(String[] args) throws IOException { Main main = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] board = new int[n][n]; for (int i = 0; i < n; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); for (int j = 0; j < n; j++) { board[i][j] = Integer.parseInt(st.nextToken()); } } int m = Integer.parseInt(br.readLine()); int[] moves = new int[m]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i < m; i++) { moves[i] = Integer.parseInt(st.nextToken()); } System.out.println(main.solution(board, moves)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장정하기 질문 있습니다.
아래의 3중 for문에 print문을 넣어서 실행해보면 자기자신과 같은 경우도 포함되어 if문에 들어가게 되는데, 그렇게 해서 count에 1이 더해지는 것은 잘못된 로직 아닌가요? 그렇다면 3중 for문 안의 if문 조건에 i != j 를 포함시켜야 맞지 않을까요? public int solution(int n, int[][] arr) { int answer = 0; int max = Integer.MIN_VALUE; for (int i = 1; i <= n; i++) { // i번 학생 int count = 0; for (int j = 1; j <= n; j++) { // j번 학생 for (int k = 1; k <= 5; k++) { // k : 학년 if (arr[i][k] == arr[j][k]) { System.out.println("arr[" + i + "][" + k + "] = " + arr[i][k] + " / arr[" + j + "][" + k + "] = " + arr[j][k]); count++; System.out.println("count : " + count); System.out.println(); break; } } } if (count > max) { max = count; answer = i; } } return answer; }