월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리 문제 컴파일 에러
제 로컬 실행시에는 정답이 나오는데 채점 시 컴파일 에러가 나고있습니다.뭐가 문제인지 모르겠습니다.import java.util.Comparator; import java.util.List; import java.util.Scanner; public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int[][] answers = new int[num + 2][num + 2]; // (1,1) ~ (n,n) 까지 입력됨. - 테두리는 입력되지 않음 for (int row = 1; row <= num; row++) { for (int col = 1; col <= num; col++) { answers[row][col] = scanner.nextInt(); } } System.out.println(solution(answers)); } private static int solution(int[][] nums) { int size = nums.length; int count = 0; for (int row = 1; row < size - 1; row++) { for (int col = 1; col < size - 1; col++) { int n = nums[row][col]; int up = nums[row - 1][col]; int down = nums[row + 1][col]; int left = nums[row][col - 1]; int right = nums[row][col + 1]; List<Integer> controlGroup = List.of(n, up, down, left, right); int max = controlGroup.stream() .max(Comparator.comparing(Integer::intValue)) .get(); boolean isDistinct = controlGroup.stream() .filter(i -> i == max) .count() == 1; if (n == max && isDistinct) { count++; } } } return count; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
격자판 최대합 - 제가 너무 어렵게 생각하는걸까요?
public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int[][] answers = new int[num][num]; for (int row = 0; row < num; row++) { for (int col = 0; col < num; col++) { answers[row][col] = scanner.nextInt(); } } System.out.println(solution(answers)); } private static int solution(int[][] nums) { int size = nums.length; int[] colSum = new int[size]; int[] rowSum = new int[size]; int leftDiagonalSum = 0; int rightDiagonalSum = 0; for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { rowSum[row] += nums[row][col]; colSum[col] += nums[row][col]; if (row == col) { leftDiagonalSum += nums[row][col]; } if (row + col == 4) { rightDiagonalSum += nums[row][col]; } } } int colMax = Arrays.stream(colSum).max().getAsInt(); int rowMax = Arrays.stream(rowSum).max().getAsInt(); return Stream.of(colMax, rowMax, rightDiagonalSum, leftDiagonalSum) .max(Comparator.comparing(Integer::intValue)) .get(); } }전체를 돌면서 row, col 의 좌표값으로 대각선값을 구하게 했는데요.선생님 강의를 보면 더 단순하게 생각할 수 있다고 느낍니다.단순 코드차이로 보면 될까요? 아니면 제가 앞으로 문제를 풀면서 더 단순하게 생각해야할까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
처음 해시맵에 초기화시 질문
안녕하세요. 우선 강의 잘 듣고 있습니다. 감사합니다.궁금한게 처음 입력받은 t문자열을 해시맵에bm에 넣고,s문자열을 t-1의 길이만큼 다른 해시맵am에 넣고반복문을 돌려 t.length()-1을 시작점으로 주셨습니다.저도 이 부분에서 해답이 안나와 강사님 방법대로 해결하긴 했는데, 혹시 처음부터 am해시맵에 t의 길이만큼 초기화 하고 진행할수 있나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요 런타임에러 뜨는 이유좀 알수 있을까요 ??
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); HashMap<Character,Integer> map1 = new HashMap<>(); String str1 = sc.next(); String str2 = sc.next(); String answer = "YES"; for (char i : str1.toCharArray()){ map1.put(i,map1.getOrDefault(i,0)+1); } for (char i : str2.toCharArray()){ if (!map1.containsKey(i)|| map1.get(i)==0) { answer="NO"; } map1.put(i,map1.get(i)-1); } System.out.println(answer); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
팰린드롬(replaceAll) 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 스트링 객체로 쓰지않고 변수 lt, rt잡아서 비교하면 안된다고 뜨는데, 잘못된 코드인가요?? import java.util.*; public class Main {public static void main(String[] args){Scanner sc = new Scanner(System.in);String s=sc.nextLine(); s = s.toUpperCase().replaceAll("[^A-Z]",""); int lt=0;int rt=s.length()-1;boolean flag = false;while(lt<=rt) {if(s.charAt(lt)==s.charAt(rt)) {lt++;rt--;flag = true;}else {break;}}if(flag) System.out.print("YES");else System.out.print("NO");}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
마구간 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 마구간 문제에서 lt,rt를 음반 문제처럼Arrays.stream(arr).max().getAsInt();하면 rt가 9가되고,Arrays.stream(arr).min().getAsInt()해서 lt가 1로 되게해서는 코드를 짤수 없나요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 2-7 점수계산 문의드립니다.
안녕하세요 선생님덕분에 코딩테스트 열심히 준비하고 있는 학생입니다. 다름이 아니라 궁금한 점이 있어 이렇게 문의 드립니다. 강의와 같은 코드를 구현 후 로컬에서 실행 시켰을 경우에는 답이 정확하게 나오는데 채점 사이트에 올리면 오답이라고 답이 계속 나오는데 혹시 제가 잘못한 부분인건지, 아니면 채점 사이트에서 요구하는 것이 잘못된 것인지 여쭤보고 싶습니다. import java.util.*; class Main { public int solution(int number, int[] numArray) { int answer = 0; int cnt = 0; for (int i = 0; i < number - 1; i++) { if (numArray[i] == 1) { cnt++; answer += cnt; } else { cnt = 0; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); Integer number = kb.nextInt(); int[] numArray = new int[number]; for (int i = 0; i < number; i++) { numArray[i] = kb.nextInt(); } System.out.print(T.solution(number, numArray)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님 정렬파트 7. 좌표정렬 오답이나오는데 이유를 모르겠습니다
코드를 어디에 올려야할지 모르겠습니다정답은 똑같이 나오는데 오답이 뜨는데 이유를 모르겠습니다!!import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] arr = new int[n][2]; for (int i = 0; i < arr.length; i++) { StringTokenizer st = new StringTokenizer(br.readLine(), " "); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } for (int j = 0; j < arr.length; j++) { for (int i = 0; i < arr.length; i++) { if (arr[i][0] > arr[j][0]) { sort(arr, i, j); } } } for (int j = 0; j < arr.length; j++) { for (int i = 0; i < arr.length; i++) { if (yCondition(arr, i, j)) { sort(arr, i, j); } } } for (int i = 0; i < arr.length; i++) { for (int j = 0; j < 2; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } public static void sort(int[][] arr, int i, int j) { int x = arr[i][0]; int y = arr[i][1]; arr[i][0] = arr[j][0]; arr[i][1] = arr[j][1]; arr[j][0] = x; arr[j][1] = y; } public static boolean yCondition(int[][] arr, int i, int j) { return arr[i][0] == arr[j][0] && arr[i][1] > arr[j][1]; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
멘토링 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 작성한 if(arr[i][k]==arr[j][k])를 사용하면 코드 진행 순서가 k가 있는 for문이 먼저 진행되니까1)arr[1][1]==arr[1][1]2)arr[1][2]==arr[1][2]3)arr[1][3]==arr[1][3]으로 되지 않나요?? 그래서,if(matrix[i][j]==matrix[k][j]) 으로 하면 학년별 비교가 가능하지 않나요???전체코드public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();int[][] matrix = new int[n][5];int max = 0;int cnt=0;int answer = 0;for(int i=0; i<n; i++) {for(int j=0; j<5; j++) {matrix[i][j] = sc.nextInt();}}for(int i=0; i<n; i++) {cnt=0;for(int j=0; j<n; j++) {for(int k=0; k<5; k++) {if(matrix[i][j]==matrix[k][j]) {cnt++;}}}if(cnt>max) {max = cnt;answer = i+1;}}System.out.print(answer);}이렇게는 풀면안되는건가요?? 인프런에서는 런타임 오류가 뜨네요
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
응급실 문제 의문점
Person에 id부여할때 1번부터 부여해야 하는거 아닌가요?그냥 입력설정에서 m( 0<=m<n) 이라는 조건보고 0번부터 부여한다고 판단하는건가요...?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색(DFS) 질문드립니다
미로탐색(DFS) 문제 풀이중DFS함수내에if(nx>=1 && nx<=7 && ny>=1 && ny<=7 && board[nx][ny]==0) 가 있는데if(board[nx][ny]==0 && nx>=1 && nx<=7 && ny>=1 && ny<=7) 로 변경하면범위오류가 발생합니다 앤드조건임에도 순서를 고려해야할까요..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
queue를 배우다가 궁금한게 생겨서 질문드립니다.
응급실 문제를 풀고 강의를 듣고 왔는데요큐에서는 왜 get 매서드를 지원하지 않나요?FIFO에 어긋나나요?stack의 경우 vector를 확장해서 쓰기때문에 lifo에 어긋난다라는 글을 본적이 있어서 검색해보니 lifo는 삽입과 삭제의 경우에 해당하는거 같아서요 조회에는 해당하지 않는거 같은데 해당하나요? 아 물론 그냥 얘네가 그렇게 제공을 했다!! 하는거면 그런거겠지만요. 뭔가 그 개념적인? 이유가 있는지 궁금합니다 왜 궁금하냐면!! 어떻게보면 api?에서 제공하지 않는 get을 class를 만들어 편법?적으로 접근하신거같아서 입니다!! 조금 무례한 질문 죄송합니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[장난꾸러기]채점시 어디가 잘못된건가요 ?
테스트케이스는 통과하는데, 채점하면틀렸다고 나오네요 ..로직은처음에 정렬이 잘못돼있는 값의 위치(순서)를 answer[0]에 넣고, 해당 요소값을 temp에 넣음. 배열을 정렬 ( 바뀐 두 값이 서로 바뀜 )정렬된 배열을 돌면서 temp와 값이 같은 요소의 위치값 반환.. import java.util.*; import java.util.Arrays; class Main { public int[] solution(int n, int[] arr) { int[] answer=new int[2]; int temp=0; for(int i=1; i<arr.length; i++){ if(arr[i]<arr[i-1]) { answer[0] = i; temp=arr[i-1]; Arrays.sort(arr); break; } } for(int i=0; i<arr.length; i++){ if(arr[i]==temp) answer[1]=i+1; } return answer; } public static void main(String[] args) { Scanner kb = new Scanner(System.in); Main T = new Main(); int n=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i<arr.length; i++){ arr[i]=kb.nextInt(); } for(int x:T.solution(n,arr)) System.out.print(x+" "); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 합치기 질문입니다
package infrun;import java.util.ArrayList;import java.util.Scanner;//배열합치기 , 오름차순 정렬public class IN_3_1 { public ArrayList<Integer> soultion(int num, int num2, int[] arr,int []arr2) { int p1=0, p2=0; //for(int i=0; i<num; i++) { ArrayList<Integer> answer= new ArrayList<Integer>(); while(p1<num && p2<num2) { if(arr[p1]<arr[p2]) { answer.add(arr[p1++]); }else { answer.add(arr2[p2++]); } } while(p1<num) { answer.add(arr[p1++]); } while(p2<num2) { answer.add(arr2[p2++]); } return answer; } public static void main(String[] args) { Scanner sc= new Scanner(System.in); int num=sc.nextInt(); IN_3_1 i3= new IN_3_1(); int []arr= new int[num]; for(int i=0; i<num; i++) { arr[i]=sc.nextInt(); } int num2=sc.nextInt(); int []arr2= new int[num2]; for(int i=0; i<num2; i++) { arr2[i]=sc.nextInt(); } for(int x:i3.soultion(num, num2, arr, arr2)) { System.out.print(x+ " "); } }}처음 배열 갯수 입력받는 부분에서java.lang.ArrayIndexOutOfBoundsException:익셉션이뜨는데어느부분이 잘못됐는지 잘 몰라서 질문드립니다..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
String, ArrayList 런타임 에러 질문
import java.util.*; public class Main { public String solution(int n, int k, int[] num) { HashMap<Integer, Integer> tmp = new HashMap<Integer, Integer>(); String result=""; int lt=0, rt=k; for(int i=0; i<k; i++) { tmp.put(num[i], tmp.getOrDefault(num[i], 0)+1); } result += tmp.size() + " "; for(int i=lt; i<n-k; i++){ tmp.put(num[lt], tmp.get(num[lt])-1); if(tmp.get(num[lt]) == 0) tmp.remove(num[lt]); lt++; tmp.put(num[rt], tmp.getOrDefault(num[rt], 0)+1); rt++; result += tmp.size() + " "; } return result; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int k = in.nextInt(); int[] num = new int[n]; for(int i=0; i<n; i++) { num[i] = in.nextInt(); } System.out.print(T.solution(n, k, num)); } } 안녕하세요.질문이 있어 게시판에 글 남깁니다!위의 코드는 제가 작성한 코드인데 로직은 강사님의 설명과 같습니다.유일한 차이점은 결과값을 return 하는 부분이 강사님은 ArrayList에 담아서 출력하였고,저는 String에 담아서 += 으로 이어붙여서 출력하였는데타임리밋에러가 발생하여 String과 ArrayList 시간 소요 차이가 왜 그렇게 나는지 궁금하여 문의 남깁니다.제 생각에는 ArrayList 출력 구문은 for문도 한 번 더 돌아야 하기 때문에 만약 answer값이 굉장히 길다면 소요시간도 오래걸릴거라 생각하고 바로 string에 담아 출력했는데 예상과 달라 문의 남깁니다.답변 주시면 감사합니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
그래프 최단거리 (BFS) 질문
안녕하세요 강사님. 저 혼자 level로 풀었을땐 답이 잘 나왔는데 선생님의 div[]를 이용한 코드를 분명히 똑같이 작성했는데 div[] 값들이 0에서 바뀌질 않습니다. 디버깅을 해봤더니 이런 오류? 가 뜹니다. 제가 뭘 놓친걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Map 사용 이유 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 항상 강의 잘 듣고 있습니다.이번 문제의 경우에는 문자의 아스키코드값을 이용한다면 배열을 이용해서도 풀 수 있는데, Map을 사용하여 해결하셨습니다.혹시 그 이유가 배열의 인덱싱 속도보다 , Map의 key-value 매칭 속도가 더 빨라서 , 추후에 시간 제한이 많이 걸린 문제에 더 유용하기 때문인지 여쭤보고 싶습니다.감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
13. 섬나라 아일랜드(DFS) 질문
복습하는 과정에서 격자판 문제에 대하여 질문이 있습니다.격자판의 경우 2차원 배열이기 때문에board[i][j] 라고 할 때, DFS에서 i는 x로 j는 y로 문제를 풀어주셨습니다. ex)board[nx][ny]보통 j 열번호고, i가 행번호이기 때문에 x가 j에 해당하고 y가 i에 해당하는게 아닌가요?즉 => board[ny][nx]가 맞는게 아닌가라는 생각을 했습니다.board의 가로 세로가 길이가 다를 때 헷갈려서 질문드립니다. 또한 DFS를 아래와 같은 방식으로 풀었는데, 여기서board[y][x]로 하게되면 정답이 틀렸지만, board[x][y]로 하게되면 정답이 됩니다. 어떠한 차이인지 잘 모르겠습니다.import java.util.*; public class Main { static int[][] board; static int n; // 좌상 상 우상 우 우하 하 좌하 좌 static int[] dx = {-1, 0, 1, 1, 1, 0, -1, 1}; // j static int[] dy = {1, 1, 1, 0, -1, -1, -1, 0}; // i static void DFS(int x, int y) { if(board[y][x] == 0) return; else { board[y][x] = 0; for(int i=0; i<8; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if(nx>=0 && ny>=0 && nx<n && ny<n) { DFS(nx, ny); } } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); board = new int[n][n]; int cnt = 0; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { board[i][j] = sc.nextInt(); } } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(board[i][j] == 1) { DFS(j, i); // x, y cnt++; } } } System.out.println(cnt); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코딩테스트 누락 문의
안녕하세요. 강의 매우 유익하게 잘 듣고 있습니다.문제 푸는 도중 하기 문제가 누락되 공유 합니다. 7강 : 8번밖에 없음8강 : 4번, 6번, 9번, 15번9강 : 5번, 8번누락인데 언제 개선 될까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
5-6 공주구하기
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;public class Main { public int solution(int n,int m) { int answer= 0; Queue<Integer> qu = new LinkedList<>(); for(int i=0; i<n; i++) { qu.offer(i); } while(qu.size()!=1) { for(int i=0; i<m-1; i++) { qu.poll(); if(qu.size()==1) { break; }else{ qu.offer(qu.poll()); } } } answer = qu.peek(); return answer } public static void main(String[] args) { Scanner sc =new Scanner(System.in); Main T = new Main(); int N = sc.nextInt(); int M = sc.nextInt(); System.out.println(T.solution(N,M)); }} 예제를 입력하면 맞다고 나오는데 계속 수정해도 채점 사이트에서는 틀리다고 나와서 어느 부분에서 틀린지 잘모르겠어요 ㅠ.ㅠ