월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(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; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 문자열 압축 알고리즘 질문 있습니다.
인강에서 4분 20초 경에 IndexOutOfBoundsException이 발생하기 때문에 다음 코드의 solution 메소드에서 인자로 받는 s 뒤에 " "(공백문자)를 추가해주어야 한다고 말씀하셨는데,s = s + " ";" "(공백문자)를 추가하는 이유가 IndexOutOfBoundsException 발생이 아니라 마지막 문자 개수를 제대로 카운트하기 위함이 아닌지 질문드립니다. 아니면 IndexOutOfBoundsException가 발생할 수도 있나요? 그 이유는 무엇이고, 해당 테스트케이스는 어떤 것인가요? import java.io.*; import java.util.*; public class Main { public String solution(String s) { String answer = ""; s = s + " "; int count = 1; for (int i = 0; i < s.length() - 1; i++) { if (s.charAt(i) == s.charAt(i + 1)) { count++; } else { answer += s.charAt(i); if (count > 1) { answer += String.valueOf(count); } count = 1; } } return answer; } public static void main(String[] args) throws IOException { Main main = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); System.out.println(main.solution(str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대매출 한번 봐주세요
package TwoPointers_SlidingWindow; import java.util.Scanner; public class _03_03_최대매출 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(), m = sc.nextInt(); int[] costs = new int[n]; for (int i = 0; i < n; i++) { costs[i] = sc.nextInt(); } int maxC = 0; int sum = 0; for (int i = 0; i < n; i++) { if (i < m) { sum += costs[i]; continue; } else { sum -= costs[i-m]; sum += costs[i]; } maxC = Math.max(maxC, sum); } System.out.println(maxC); } }안녕하세요 강의를 듣기 전에 미리 풀었는데요for문이 처음 시작될 때 윈도우의 길이만큼 채우고 시작하려고 if문을 써서 윈도우 값을 채워넣었습니다.윈도우 값이 덜 채워졌을 때는 continue를 써서 최대 비교를 하지 않으려고 했는데요윈도우의 길이를 충족할 때만 최대 비교가 되게하려고 짠 로직인데 오답이 납니다.그런데 continue를 빼면 정답이 되고요.어떤 부분에서 오류가 뜨는 건지 궁급합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로 최단거리(BFS) 코드리뷰좀 부탁드립니다.
package DFS_BFS; import java.util.Scanner; public class _08_11 { static int[][] board; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; // 좌, 상, 우, 하 static int answer = Integer.MAX_VALUE; public void BFS(int L, int x, int y) { if (L >= answer) return; if (x == 7 && y == 7) { answer = Math.min(answer, L); } else { for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; // 좌상우하 if (nx >= 1 && nx <= 7 && ny >= 1 && ny <= 7 && board[nx][ny] == 0){ board[nx][ny] = 1; BFS(L + 1, nx, ny); board[nx][ny] = 0; } } } } public static void main(String[] args) { _08_11 T = new _08_11(); Scanner sc = new Scanner(System.in); board = new int[8][8]; for (int i = 1; i <= 7; i++) { for (int j = 1; j <= 7; j++) { board[i][j] = sc.nextInt(); } } board[1][1] = 1; T.BFS(0,1,1); if (answer == Integer.MAX_VALUE) System.out.println(-1); else System.out.println(answer); } } 해설하신 Queue 를 이용하지 않고 풀었는데 해설과 비교하였을때 괜찮은 코드인가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Arrays.fill에 Integer.MAX_VALUE로 하면 안되는 거 아닌가용 ..? (10-5 동전 교환 문제)
3 2 3 4 15 라고 했을 때 답이 4가 나와야 되는데Integer.MAX_VALUE로 했을 때는 -2147483645가 나오더라구여 .. 문제랑 채점 사이트에 있는 예제 6개에서 모두 동전 종류에 1이 있어서 오류가 안 뜬 거 같은데동전 종류에 1이 없을 경우 위 예시와 같이 문제가 생길수도 있는거 아닌가용 ..? Integer.MAX_VALUE가 아니라 M 같은 수로 채워야되는 게 아닌가 궁금합니닷
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문 있습니다!
03-03번의 '최대 매출' 문제에서 슬라이딩 윈도우를 사용하실 때, 총 7개 중에서 4개씩 연속해서 옆으로 이동하실 때는, 처음 for문에서 4개의 연속된 값을 넣으셨습니다.ex) 1,2,3,4,5,6,7 이라면 첫 for문에서는 1,2,3,4 하지만 이번 문제에서는 7개 중에서 4개씩 연속해서 옆으로 이동하실 때는 첫 for문에서는 3개만 일단 넣고 시작하셨는데요.ex) 1,2,3,4,5,6,7 이라면 첫 for문에서는 1,2,3 이렇게 처음 for문에서의 연속된 값의 개수가 다른 점이 문제마다 의도가 다 다르기 때문에 다른 것이 맞나요? 문제마다 유연한 사고를 하기 위한 조언을 구하고 싶습니다 ㅠ
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
임시반장문제 오답케이스를 모르겠습니다.
import java.util.*; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int N = kb.nextInt(); int [][] input = new int[N][5]; for (int i = 0; i < N; i++) { for (int j = 0; j < 5; j++) { input[i][j] = kb.nextInt(); } } int answer = solution(N, input); System.out.println(answer); kb.close(); } private static int solution(int N, int[][] grid) { int answer = -1; int max = -1; for (int stdnt = 0; stdnt < N; stdnt++) { int count = 0; for (int i = 0; i < 5; i++) { int classNum = grid[stdnt][i]; for (int j = 0; j < N; j++) { if ( grid[j][i] == classNum ) { count++; } } } if ( count > max) { max = count; answer = stdnt; } } return answer+1; } }테스트케이스 많이 넣어봤는데, 오답케이스를 못찾겠습니다.여러명일때 작은 번호 출력하는것도, 하고 여러가지 넣어봤는데 잘 안되네요 ㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간과 점수 변수를 넘길 때 선언과 동시에 더한 값을 넘기게 되면 어떻게 되나요 ??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. static void DFS(int level, int time, int score, Exam[] arr) {if(time > m) return; if(level == n) {if(time <= m) {answer = Math.max(answer, score);}}else {DFS(level+1, time+=arr[level].time, score+=arr[level].point, arr);DFS(level+1, time, score, arr);}} else 부분에 time+= arr[level].time 처럼 선언과 동시에 더한 값을 메소드에 넘기게 되면 time 값이 가장 마지막으로 선언 된 time 값으로 고정이 되어 이전 값으로 안 돌아오게 되나요 ?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어떤 부분이 오답인지 궁금합니다
import java.io.*; public class Main { public int solution(int n) { int answer = 0, sum = 0, lt = 0; for (int rt = 0; rt <= n/2+1; rt++) { sum += rt; if (sum == n) answer++; while (sum >= n) { sum -= lt++; if (sum == n) answer++; } } 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()); System.out.print(main.solution(n)); } } 따로, n/2+1 크기만큼의 배열을 생성해주지 않는 풀이인데, 어느 부분이 잘못되서 오답처리가 되는 것인지 잘 모르겠습니다.
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어디가 잘못된 것인지 모르겠습니다.
import java.io.*; import java.util.*; public class Main { private int solution(int n, int[][] arr) { int[] cntArr = new int[n]; int answer = 0, max = 0; for (int i = 0; i < n; i++) { int cnt = 0; for (int j = 0; j < 5; j++) { boolean flag = false; int cur = arr[i][j]; for (int k = 0; k < n; k++) { if (i == k) continue; int compare = arr[k][j]; if (cur == compare) { flag = true; break; } } if (flag) cnt++; } cntArr[i] = cnt; max = Math.max(max, cntArr[i]); } for (int i = 0; i < n; i++) { if (cntArr[i] == max) { answer = i+1; break; } } System.out.println(Arrays.toString(cntArr)); 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[][] arr = new int[n][5]; StringTokenizer st; for (int i = 0; i < n; i++) { st = new StringTokenizer(br.readLine()); for (int j = 0; j < 5; j++) { arr[i][j] = Integer.parseInt(st.nextToken()); } } System.out.print(main.solution(n, arr)); } } 첫 번째 순회문(i)은 학생 번호를,두 번째 순회문(j)은 학년 번호를,세 번째 순회문(k)은 학생 번호를 순회하기 위한 for문입니다. 모든 학생을 일일이 순회하는데, 해당 학생이 위치한 학년의 학생들과 k 순회문으로 비교하는 로직입니다.(해당 학생이 위치한 학년을 비교하는, 열을 기준으로 비교하는) cntArr 배열에 각 학생의 같은 반인 횟수를 집어넣고, 최종적으로 그 중 가장 큰 값인 인덱스를 찾아 +1을 한 값을 반환합니다.이 풀이법이 틀린 이유가 무엇인가요..ㅜ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
for문 조건문 범위에 관련된 질문
강시님께서 풀어주신 TreeSet 변수 이름: set제가 풀었던(오답처리가 난) TreeSet 변수 이름: ex 강사님께서 풀어주신 for문의 형태입니다.제가 처음에 풀 때 for 문의 형태입니다.indexOutOfBoundsException이 발생하거라고 생각하여 위와 같이 조건문을 실행하였습니다. (indexOutOfBoundsException이 발생할것이라는 것은 잘못 생각한 부분입니다.) 처음에 계속 오답이 나서 조건문을 강사님과 같이 수정하니 정답처리가 되었습니다.하지만 제가 풀었던 for문의 조건문은 사실상 강사님께서 풀어준것과 똑같은 결과를 도출할 것이라 예상하였고, 실제로 set과 ex를 equals 메서드를 이용해보면 true를 반환합니다. 왜 for문의 조건문을 제가 푼 방식대로 설정하면 객체는 true를 반환하지만(같은 객체라고 판단된다고 생각됩니다.) 정답은 오답처리가 되는걸까요?