월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장 정하기 런타임 에러 관련 질문 드립니다.
강사님 안녕하세요. 좋은 강의 잘 듣고 있습니다. 임시반장 정하기 문제에서 강사님이 작성해주신 코드와 동일하게 solution 메서드를 만들었다고 보이는데 런타임 에러로 나오는거 같습니다. 혹시 원인을 알 수 있을까요? 감사합니다. import java.util.*; public class Main { public int Solution(int n, int[][] array) { int answer=0, max=Integer.MIN_VALUE; for(int i=1; i <=n; i++) { int cnt = 0; for(int j=1; j<=n;j++) { for(int k=1; k<=5;k++) { if(array[i][k] == array[j][k]) { cnt++; break; } } } if(cnt>max) { max = cnt; answer = i; } } return answer; } public static void main(String[] args) { Scanner in=new Scanner(System.in); int n = in.nextInt(); Main T = new Main(); int[][] array = new int[n][n]; for(int i = 0; i < n ; i++) { for(int j = 0; j < n ; j++) { array[i][j] = in.nextInt(); } } System.out.println(T.Solution(n, array)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요 공부 방법 문의 드립니다.
현재 제 상황은 강사님께서 설명해주시는 내용은 모두 이해가 되는 상태입니다!!일단은 강사님이 말씀해주신대로 복습 3 / 진도 7 비율로 강의 전체를 2~3번 정도 반복해서 본 뒤에 혼자서 문제를 깊이있게 풀어보는 식으로 공부를 하는데 이것도 괜찮은 방법일까요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
점화식을 발견하기 위해서 규칙을 찾아봐야 하나요?
안녕하세요. 이 문제를 풀려면,점화식을 유추하기 위해서 입력예제 1을 활용해서 직접 dy 배열을 그려보고 1원 2원 5원 동전들을 활용하여 최소 몇개씩 필요한지 직접 써내려가면서 규칙을 찾아내는 순서로 푸는게 맞는 방법인가요? 강의에서는 선 규칙 찾기, 후 유추의 방식으로 설명하지 않으시는 것으로 생각되어 질문드립니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 풀이는 어떤가요?
package hash; import java.util.HashMap; import java.util.Scanner; public class Anagram { public static String solution(String str, String str2) { String result = "YES"; HashMap<Character, Integer> map = new HashMap<>(); for(char ch : str.toCharArray()) { map.put(ch, map.getOrDefault(ch, 0)+1); } for(char ch : str2.toCharArray()) { map.put(ch, map.getOrDefault(ch, 0)-1); } for(char ch : map.keySet()) { if(map.get(ch) != 0) { result = "NO"; break; } } return result; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); String str2 = sc.next(); System.out.println(Anagram.solution(str, str2)); } }str, str2 둘다 같은 Map을 써서 str에 +1, str2에 -1 해주어서 0이 아닐시 NO를 반환하게 코딩하였습니다. 답은 맞게 나오는데 허점? 이 있나 궁금하여 글 남깁니다.
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Section3_01. 두 배열 합치기에서 런타임 에러 미해결
package Section3; import java.util.Scanner; public class Q1 { /** * 내가 구현한 방법 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int[] first = new int[N]; for (int i = 0; i < N; i++) { first[i] = sc.nextInt(); } int M = sc.nextInt(); int[] second = new int[M]; for (int i = 0; i < M; i++) { second[i] = sc.nextInt(); } int total = N + M; int p1 = 0, p2 = 0; int[] third = new int[total]; for (int i = 0; i < total; i++) { if (p1 < N && first[p1] < second[p2]) { third[i] = first[p1]; p1++; } else{ third[i] = second[p2]; p2++; } } for (int i = 0; i < total; i++) { System.out.print(third[i] + " "); } } }3_01. 두 배열 합치기 문제에 대한 답안 작성코드 입니다. IDE에서 예제1 케이스에 대해서 직접 대입해보면 정상 작동하고, 정답 출력과 동일하게 출력됩니다. 하지만, 채점을 받아보면 1번 케이스에서 런타임 에러가 발생합니다. 계속 수정하고, 고민해봐도 어느 부분에서 런타임 에러가 발생하는지 모르겠어서 질문 남깁니다 !
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트케이스 2번 질문
안녕하세요 선생님! 문제 의도상 K개의 합이 모두 같을 수도 있으니,K번째 수가 없다면 -1을 출력하는 조건은 이해하였습니다그런데 문제에 K는 50 이하의 값이라고 명시되있는데테스트케이스에는 K가 1200인 케이스가 있어서 저는 이 부분이 잘못되었다고 생각하여 글 올립니다!감사합니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
idle로 실행 질문
지금 인텔리제이로 실행을 해보려고 하고있는데 입력을 어떻게 받아서 써야하는지 감이 안옵니다... 이런상태입니다... 어떻게 하면 될지 알려주시면 감사하겠습니다!!!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-11 미로의 최단거리 (BFS)
import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Main { static int[][] miro, dis; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int min; static boolean flag; public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); miro = new int[9][9]; dis = new int[9][9]; min = 0; flag = false; for (int i = 0; i < 9; i++) { if (i == 0 || i == 8) { for (int j = 0; j < 9; j++) { miro[i][j] = 1; } } else { miro[i][0]=1; miro[i][8]=1; } } for (int i = 1; i <= 7; i++) { for (int j = 1; j <= 7; j++) { miro[i][j] = sc.nextInt(); } } miro[1][1]=1; dis[1][1]=0; T.BFS(new int[]{1, 1}); System.out.println(min); } void BFS(int[] loca) { Queue<int[]> Q = new LinkedList<>(); int[] cl = loca; Q.offer(cl); while (!Q.isEmpty()) { if (flag) { return; } cl = Q.poll(); for (int i = 0; i < 4; i++) { int[] nl = {cl[0] + dx[i], cl[1] + dy[i]}; if (miro[cl[0] + dx[i]][cl[1] + dy[i]] == 0) { Q.offer(nl); dis[cl[0] + dx[i]][cl[1] + dy[i]] = dis[cl[0]][cl[1]]+1; miro[cl[0] + dx[i]][cl[1] + dy[i]] = 1; if (Arrays.equals(nl,new int[]{7,7})) { min = dis[cl[0] + dx[i]][cl[1] + dy[i]]; flag = true; return; } } } } } }좌표를 클래스로 정의하지 않고 배열로 매개변수를 사용해서 BFS 구현을 하였는데 오답이 나옵니다 ㅜㅜ 출력 12는 나오는데 무엇이 문제일까요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러 질문 있습니다.
배열 11. 임시반장 정하기 에서 문제를 풀고 있는데해당 코드에서 런타임 에러가 발생하는데 이유를 알 수 있을까요? import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { 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][n]; // int[] arr2 = new int[n]; for (int i = 0 ; i < n; i++){ for (int j =0; j < n; j++) arr[i][j] = in.nextInt(); } // for (int i = 0 ; i < n; i++){ // arr2[i] = in.nextInt(); // } int test = t.solution11(n,arr); System.out.print(test); } // 11번 임시반장 private int solution11(int n, int[][] arr){ int answer = 0; int MAX = 0; for (int i =0; i < 5; i ++){ int cnt = 0; for (int j=0; j < n;j++){ int temp = arr[j][i]; for (int k =0; k <n; k++){ if (k == j) continue; else if (temp == arr[k][i]){ cnt++; } } if (cnt > MAX){ MAX = cnt; answer = j; } } } return answer; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대 매출 코드 풀이랑 동일한 시간복잡도가 나오나요?
package slidingwindow; import java.util.Scanner; public class MaximumSales { static int solution(int n, int k, int[] arr) { int p1 = 1; int sum = 0; int max = 0; for(int i = 0; i < k; i++) { sum += arr[i]; } // 최초 값을 max에 대입 max = sum; // 최초 p[0] + p[1] + p[2] .... 값 제외 // p[1] + p[2] ... 부터 while(p1 < n-k+1) { sum = sum - arr[p1-1] + arr[p1+k-1] ; p1++; max = max > sum ? max : sum; } return max; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } System.out.println(MaximumSales.solution(n, k, arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1번문제 틀린 이유를 모르겠습니다.
import java.util.Scanner; // Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`, // then press Enter. You can now see whitespace characters in your code. public class Main { public int solution(String data, char what) { int count = 0; data = data.toLowerCase(); for (char a : data.toCharArray()) { if (a == what) { count++; } } return count; } public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); String data = scanner.nextLine(); char what = scanner.nextLine().charAt(0); System.out.println(T.solution(data, what)); } }1번 문제인데 이대로 제출하니까 틀렸다고 합니다. 원인을 모르겠어요 ㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-1 합이 같은 부분집합
정확하게 출력이 되는것 같은데 오답이라고 나옵니다 선생님.. 제가 잘못 짠 부분이 있을까요??import java.util.Scanner; class Main { static int n,total; static int[] array; static boolean flag; public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); n = sc.nextInt(); total =0; array = new int[n]; for (int i = 0; i < n; i++) { array[i] = sc.nextInt(); total += array[i]; } flag = false; T.DFS(0, 0); if (flag) { System.out.println("YES"); } else { System.out.println("NO"); } } void DFS(int L, int sum) { if (L == n) { return; } if (sum == total / 2) { flag = true; return; } if (sum > total / 2) { return; } DFS(L + 1, sum + array[L]); DFS(L + 1, sum); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 사이트 연결
우측 상단에 채점 버튼을 누르면 브라우저 새 창만 열리고 사이트가 정상적으로 안 뜨는데 어디서 채점사이트를 이용해야하나요??
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 오류
import java.io.*; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static int solution(int[] arr, int K) { int max = 0; Queue<Integer> zeroPoint = new LinkedList<>(); int lp = 0, length = 0; for (int rp = 0; rp < arr.length; rp++) { if (arr[rp] == 0) { zeroPoint.offer(rp); // 0이 꽉 찼을 경우 if (zeroPoint.size() > K) { length = rp - lp; max = Math.max(length, max); Integer poll = zeroPoint.poll(); lp = poll + 1; } } } return max; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.parseInt(st.nextToken()); int[] arr = new int[N]; StringTokenizer st2 = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(st2.nextToken()); } System.out.print(solution(arr, K)); } } 6. 최대 길이 연속 부분수열파트에서 이 코드가 정답이라고 나옵니다. 테스트 케이스가 부족해서 모든 문제에서 이런 현상이 발생하는건지, 이 문제에만 오류가 있는건지 궁금합니다. 반례 테스트 케이스 : 14 21 1 0 0 1 1 0 1 1 0 0 1 1 1 기댓값 : 7출력값 : 6
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2번만 RuntimeError가 뜨는데요
package twopointers; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class CommonElements { static ArrayList<Integer> solution(int n, int m, int[] arr, int[] arr2) { ArrayList<Integer> list = new ArrayList<>(); Arrays.sort(arr); Arrays.sort(arr2); int p1 = 0; int p2 = 0; while (p1 < n && p2 < m) { if (arr[p1] == arr2[p2]) { list.add(arr[p1]); p1++; p2++; } else if (arr[p1] < arr2[p2]) { p1++; } else { p2++; } } return list; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int m = sc.nextInt(); int[] arr2 = new int[n]; for (int i = 0; i < m; i++) { arr2[i] = sc.nextInt(); } for (int result : CommonElements.solution(n, m, arr, arr2)) { System.out.print(result + " "); } } } 뭐가 문제일까요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Array.sort 사용 구분
앞 문제에서 Collection.sort를 쓰면 문제에서 효율적이지 못하다는 댓글을 봐서 처음부터 Array.sort를 해서 정렬하는 방법을 생각을 못했는데 어떤 문제에선 사용하고 사용하지말고 구분이잘 안되는데 이럴땐 어떻게 하나요...
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
카운트 부분 질문드립니다.
if(count(arr, mid)==c) {answer=mid;lt=mid+1;} else if(count(arr, mid)<c) rt=mid-1;else lt=mid+1;카운트가 c보다 큰 값인 경우에 answer=mid를 해주지 않으면 왜 오답으로 나오는지 모르겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
매출액의 종류 문제 풀이 질문 있습니다
매출액의 종류 문제 풀이 질문 있습니다.public ArrayList<Integer> solution(int n, int k, int[] arr) { ArrayList<Integer> answer = new ArrayList<>(); Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < k - 1; i++) { map.put(arr[i], map.getOrDefault(arr[i], 0) + 1); } return answer; }처음에 k-1 개만 map에 세팅해줘야 하는 이유가 뭔가요?k개까지 세팅해야 하지 않나요? 만약에 k개까지 세팅한다면 코드를 다음과 같이 할 수 있는데,이때 두번째 for문의 if문의 조건에서 왜 HM.get(arr[lt])이 1보다 큰지의 여부로 바뀌는 것인가요? public ArrayList<Integer> solution(int n, int k, int[] arr) { ArrayList<Integer> answer = new ArrayList<>(); Map<Integer, Integer> map = new HashMap<>(); for (int i = 0; i < k; i++) { map.put(arr[i], map.getOrDefault(arr[i], 0) + 1); } answer.add(map.size()); int left = 0; for (int right = k; right < n; right++) { map.put(arr[right], map.getOrDefault(arr[right], 0) + 1); if (map.get(arr[left]) > 1) { map.put(arr[left], map.get(arr[left]) - 1); } else { map.remove(arr[left]); } left++; answer.add(map.size()); } return answer; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 오답처리 되는지 모르겠습니다.
package infren.section1; import java.util.Scanner; public class section1_10 { static String solution(String s, String t) { String answer = ""; int[] tmp = new int[s.length()]; int p = 1; for (int i = 0; i < tmp.length; i++) { if (String.valueOf(s.charAt(i)).equals(t)) { tmp[i] = 0; p = 1; } else { tmp[i] = p++; } } p = 1000; for (int i = tmp.length - 1; i >= 0; i--) { if (String.valueOf(s.charAt(i)).equals(t)) { tmp[i] = 0; p = 1; } else { tmp[i] = Math.min(tmp[i], p++); } } for (int i = 0; i < tmp.length; i++) { answer += tmp[i] + " "; } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] tc = sc.nextLine().split(" "); String s = tc[0]; String t = tc[1]; String answer = solution(s, t); System.out.println(answer); } }출력값은 정답과 동일하게 나오는데 제출을 하면 오답처리로 되는데 어디가 문제인지 모르겠습니다
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님이 풀어주신 코드와 로직은 같은데 왜 채점은 타임에러 뜨는지 모르겠습니다.
선생님이 풀어주신 코드는 한번 더 확인하는 과정을 거쳐서 board의 수만큼 시간 복잡도가 그만큼 더 늘어나는 것 같아서 익지 않은 토마토의 개수를 세어서 그 수만큼 익으면 days를 반환하는 코드를 짰는데 왜 타임에러가 발생하는지 궁금합니다. 제가 놓치고 있는 부분이 무엇일까요?..package testSection8; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Point{ int x,y; Point(int x, int y){ this.x = x; this.y = y; } } public class Main{ static int n,m,days=0,total=0,cnt; static int[][] board; static int[] dx = {-1,0,1,0}; static int[] dy = {0,1,0,-1}; static Queue<Point> q = new LinkedList<>(); public int BFS(){ while (!q.isEmpty()){ days++; int size = q.size(); for(int i=0; i<size; i++){ Point point = q.poll(); for(int j=0; j<4; j++){ int nx = point.x+dx[j]; int ny = point.y+dy[j]; if(nx>=0 && nx<n && ny>=0 && ny<m && board[nx][ny] == 0){ if(++cnt == total) return days; board[nx][ny] = 1; q.offer(new Point(nx,ny)); } } } } return -1; } public static void main(String[] args) { MainT = new Main(); Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); board = new int[n][m]; for(int i=0; i<n; i++){ for (int j=0; j<m; j++){ board[i][j] = sc.nextInt(); if(board[i][j] == 1) q.offer(new Point(i,j)); else if(board[i][j] == 0) total++; } } System.out.println(T.BFS()); } }