월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 문제 강의 코드랑 비슷한데 오류가 나는 이유가 뭘까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.public class Main { static int m, n; static int max = 0; public static void DFS(int k, int sum, int[] arr) { if(sum > m) return; if(k == n - 1) { max = Math.max(sum, max); return; } DFS(k + 1, sum + arr[k + 1], arr); DFS(k + 1, sum, arr); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); int[] arr = new int[n]; IntStream.range(0, n).forEach(i ->{ arr[i] = sc.nextInt(); }); DFS(0, arr[0], arr); System.out.println(max); } }강의 코드랑 다른 점은 sum이 0에서 출발하고 저는 arr[0]부터 출발했다는 것 같습니다.코드 채점에서는 대부분의 경우가 맞지만 딱 마지막 경우의 수에서 오류가 나더라고요.제 코드에서 틀린 점이 무엇일까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정답오류가 있는것 같습니다.
안녕하세요 선생님다름이 아니라 제가 작성한 코드가 정답처리가 되었는데 이 코드는 정답이 되면 안되는 코드가 아닌가 해서 여쭤보고 싶어서 질문글 남깁니다.예를들면 첫번째 문제에서는 CBA 순서로 무조건 짜야하지만제 코드에서 str1 은 꼭 순서를 지켜야 하는 값이고str2는 C의 순서를 알 수 없는데 정답처리가 되어서 제가 작성한 코드가 제대로 정답이 맞는건지 궁금해서 질문글을 남깁니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
백준 17141 추가문제 입니다. 8-15번 피자문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 교수님교수님께서 알려주신 8-15번 풀이를 적용하여추가문제 백준 17141 연구소 2를 풀고 있습니다그런데 어떻게 풀어도 계속 메모리 초과가 나서 뭐가 문젠지 모르겠습니다...import java.util.*;class Pointo{ int y; int x; Pointo(int y, int x){ this.y=y; this.x=x; } }public class Main { static int n; static int m; static int[][] arr; static int[] pm; static int[] dx= {0,0,+1,-1}; static int[] dy= {+1,-1,0,0}; static ArrayList<Pointo> list=new ArrayList<>(); static int answer=Integer.MIN_VALUE; public static void main(String[] args) { Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); m=scanner.nextInt(); arr=new int[n][n]; pm=new int[m]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { arr[i][j]=scanner.nextInt(); if(arr[i][j]==2) { list.add(new Pointo(i,j)); } } } dfs(0,0); if(answer!=0)System.out.println(answer); else System.out.println("-1"); } public static void dfs(int val, int next) { if(val==m) { bfs(0); return; } else { for(int i=next; i<list.size(); i++) { //list에서 m개뽑자 pm[val]=i; dfs(val+1,i+1); } } } public static void bfs(int val) { int[][] copyarr=new int[n][n]; int[][] dis=new int[n][n]; Queue<Pointo> q=new LinkedList<>(); for(int i=0; i<pm.length; i++) { int l=pm[i]; int qx=list.get(l).x; int qy=list.get(l).y; q.add(new Pointo(qy,qx)); copyarr[qy][qx]=2; } //copyarr 벽 만들기 for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(arr[i][j]==1) { copyarr[i][j]=1; } } } while(!q.isEmpty()) { Pointo p=q.poll(); for(int i=0; i<4; i++) { int nx=p.x+dx[i]; int ny=p.y+dy[i]; if(nx>=0 && ny>=0 && nx<n && ny<n) { if(copyarr[ny][nx]!=1) { copyarr[ny][nx]=2; dis[ny][nx]=dis[p.y][p.x]+1; q.add(new Pointo(ny,nx)); } } } } count(copyarr,dis); } public static void count(int[][] arr, int[][] dis) { int maxy=0; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(dis[i][j]>maxy) maxy=dis[i][j]; } } answer=Math.max(maxy,answer); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 6 뒤집은 소수 문제
강사님이 알려주신 정답에서 다른 풀이 함수만 써서 쪼금 응용했는데왜 런타임 에러가 계속 뜰까요 ㅠ한참을 고민해봐도 왜 안되는지 답이 안나오네요 ㅠ import java.util.*;class Main {public boolean isPrime(int num){if(num==1) return false;for(int i=2; i<num; i++){if(num%i==0) return false;}return true;}public ArrayList<Integer> solution(int n, int[] arr){ArrayList<Integer> answer = new ArrayList<>();for(int i=0; i<n; i++){int tmp=Integer.parseInt(new StringBuilder(arr[i]).reverse().toString());if(isPrime(tmp)) answer.add(tmp);}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];for(int i=0; i<n; i++){arr[i]=kb.nextInt();}for(int x : T.solution(n, arr)){System.out.print(x+" ");}}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
크레인 인형뽑기(카카오) 왜 오답이 뜨는지 모르겠어요 ㅠㅠ
package hello; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Stack; public class Main { public int solution(int n, int[][] board, int m, int[] moves) { Stack<Integer> baguny = new Stack<>(); int count = 0; //크레인 for(int i=0; i<moves.length; i++) { //크레인 작동위치에서 인형빼와서 바구니에 담기 for(int j=0; j<board.length; j++) { if(board[j][moves[i]-1] != 0) { if(baguny.contains(board[j][moves[i]-1])) { baguny.pop(); count += 2; board[j][moves[i]-1] = 0; break; } else { baguny.push(board[j][moves[i]-1]); board[j][moves[i]-1] = 0; break; } } } } return count; } public static void main(String[] args) { Main t = new Main(); 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(t.solution(n, board, m, moves)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 2_6번 런타임에러
배열을 이용하지 않고 StringBuilder 를 이용해서 코드를 짜봤는데 런타임에러가 뜹니다따로 이유가 있나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[오타] 2-4. 피보나치 수열
안녕하세요, 김태원 강의자님!강의 잘 듣고 있습니다 :)채점 사이트에 오타가 있어 글을 남깁니다.환절기 건강 조심하시기 바랍니다 🙂☘️ [오타 내용]2-4. 피보나치 수열설명 1) '피보나키' 수열
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이중 for문 런타임 에러 문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.제가 이번 문제를 two pointers 알고리즘으로 풀기 이전이중 for문으로 구현을 했었는데요, 채점 사이트에서 돌려보니 시간 초과가 났습니다.제가 궁금한 점은,지난 문제에서는 4중 for문까지도 채점 사이트에서 정답이 떴었는왜 이번엔 이증 for문도 런타임 에러가 나는지 모르겠습니다.답변주시면 감사하겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리문제에서 이해가되지않는부분이있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 받은 행렬은 0으로 초기화 한 가장자리가없는데 왜 그러한 행렬을 만들어주는 작업이 없는거죠?? 잘 이해가 되지않습니다.. 가장자리는 무조건 작다 라고 하는거도 이해가되는데 없는 행렬을 어떻게 비교할수있는지 모르겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
궁금한점있습니다.
안녕하세요. 강사님재귀함수로 구현을 할 때 아래 코드에서 어떤 코드를 추가해야지 원소를 나열 할 수 있을까요? public class Main{ public int solution(int n){ if(n < 3){ return 1; } return solution(n - 2) + solution(n - 1); } public static void main(String[] args) { MainT = new Main(); int n = 10; System.out.println(T.solution(n)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제 풀이 내용 기록
안녕하세요 강사님 강의 잘 듣고 있습니다.문제를 풀면서 아래와 같이 주석만 담고 개인적으로 풀이한 내용을 깃허브에 올려도 괜찮을까요? 문제 내용은 따로 작성하지 않고 리드미에 강의 링크를 걸어두려 합니다. 문제들을 직접 만드신 것 같아 문의드립니다. /** * className : Q02 * author : eeesnghyun * date : 2023/02/27 * description : 02-02 보이는 학생 * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * 2023/02/27 eeesnghyun 최초 생성 */ public class Q02 {
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
궁금한게생겼습니다.
공부하다가 보니 원소의 개 수 말고 원소를 뽑아내려고 하는데public int solution(int n, int[] arr) { int answer = 1, max = arr[0]; for (int i = 1; i < n; i++) { if (arr[i] > max) { answer = arr[i]; i++; System.out.print(answer + " "); } } return answer; }이렇게 해도 이상하지는 않을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 성능 향상 질문
안녕하세요. 바둑이 승차(DFS) 질문입니다.해당코드에서 성능을 더 향상시킬수있지 않을까 해서 질문드립니다.강사님이 작성하신 코드에서 if(L==N) 전에 if(sum==C)가 나오면 더이상 코드 진행을 하지 않아도 되는거 아닌가요? 그 때 flag값을 하나 추가해서 모든 재귀를 return 시키는 방법을 쓰면 더 좋을것같은데 제 생각이 맞나 궁금하네요.답변 부탁드리겠습니다.감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
혼자 코드를 짜봤는데
안녕하세요. 강사님자료구조 공부하다가 방금 전 숫자만 추출하는 강의를 보고 이번 강의에서 응용해 보았는데 출력 값은 동일하나 채점 사이트에서는 오답이라고 나와서 어떤 부분에서 틀렸으며 어떻게 고쳐야 할까요?완전 코드를 잘못 구현했다면 제가 설명에서 어느 부분을 이해하지 못한 것일 까요? import java.util.Deque; import java.util.LinkedList; import java.util.Scanner; public class Main { public int solution(String s) { String answer = ""; s = s.replaceAll("[^0-9]", ""); // 숫자만 추출 while (s.length() > 0 && s.charAt(0) == '0') { s = s.substring(1); } Deque<Character> deque = new LinkedList<>(); // Deque 선언 (제네릭 타입 명시) // 문자열 s의 각 자리를 Deque에 추가 for (int i = 0; i < s.length(); i++) { deque.offer(s.charAt(i)); } // Deque에서는 0 제거 이후 while (!deque.isEmpty()) { char c = deque.peek(); if (c != '0') { answer += c; } deque.poll(); } return Integer.parseInt(answer); } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(T.solution(str)); } }위 코드는 오류가 나고 아래 코드는 컴파일 에러가 납니다.import java.util.Scanner; public class Main { public int solution(String s) { String answer = ""; s = s.replaceAll("[^0-9]", ""); // 숫자만 추출 while (s.length() > 0 && s.charAt(0) == '0') { answer = s.substring(1); } return Integer.parseInt(answer); } public static void main(String[] args) { StringTest1_9 T = new StringTest1_9(); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(T.solution(str)); } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
String 2번 대소문자 변환
제가 짠 코드인데 입력값 : Abdsg 을 입력하면 출력값 : aBDSG 앞에 공백이 생겨 출력이 됩니다.어떤 부분이 잘못된건지 모르겠어서 질문드립니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 2개로 푸는 것도 괜찮은 방법인가요 ?
import java.util.*; import java.io.*; public class P03_결혼식 { public static void main(String[] args) throws Exception { // 초기 세팅 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] starts = new int[73]; int[] ends = new int[73]; for (int i=0; i<N; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int start = Integer.parseInt(st.nextToken()); int end = Integer.parseInt(st.nextToken()); starts[start]++; ends[end]++; } // 로직 int max = 0; int count = 0; for (int i=0; i<starts.length; i++) { count += starts[i]; count -= ends[i]; max = Math.max(max, count); } // 출력 System.out.println(max); } } 저는 이렇게 풀었는데 따로 정렬하는 Class 안 만들고 이렇게 하는것도 괜찮나여 ? 방대한 데이터가 들어왔을 경우에도 문제없는 코드인지 궁금합니다 !
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8.수열 추측하기
이 문제에서 N이 만약 5일 경우, 더한 결과값이 값에 각각 4C0 4C1 4C2 4C3 4C4 를 곱해서 더한것과 같다고 하셨는데 왜 그런지 이유를 모르겠습니다..!!ㅜㅜ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
9_6 친구인가(서로소문제)
안녕하세요 교수님, 질문이있어서 글 남깁니다.교수님과 살짝 다른풀이로 풀었는데, 채점하는 사이트에서 계속 첫번째 케이스에서 runtime error가 나서요ㅠㅠ다른 테스트케이스들은 잘돌아가는데 첫번째만 안돌아갑니다ㅜㅜ자바 이클립스에서도 문제없이 예제테스트케이스 (첫번째 테스트케이스) 돌아갑니다.... // 서로소 집합 (유니온파인드) import java.util.*; class Main { static int n,m=0; //n:학생수, m:순서쌍개수static int[] parent; public static int find(int x) {if(x==parent[x]) return x;elsereturn parent[x]=find(parent[x]); //최상위 부모 누구인지 } public static void main(String[] args) {Main tree=new Main();Scanner scanner=new Scanner(System.in);n=scanner.nextInt();m=scanner.nextInt();parent=new int[n+1]; //배열 초기화 해야됨 - 자기자신이 부모가 되도록 초기화for(int i=1; i<=n; i++) {parent[i]=i;} //입력받아서 배열만들기for(int i=1; i<=m; i++) {int par=scanner.nextInt();int son=scanner.nextInt();parent[son]=par;} int a=scanner.nextInt();int b=scanner.nextInt(); if( (tree.find(a)) != (tree.find(b)) ){ System.out.print("NO"); } else System.out.print("YES"); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
DFS, BFS 풀이 차이점
import java.util.*; import java.io.*; /* 다음과 같이 여러 단위의 동전들이 주어져 있을때 거스름돈을 가장 적은 수의 동전으로 교환해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 입력 : 첫 번째 줄에는 동전의 종류개수 N(1<=N<=12)이 주어진다. 두 번째 줄에는 N개의 동전의 종류가 주어지고, 그 다음줄에 거슬러 줄 금액 M(1<=M<=500)이 주어진다.각 동전의 종류는 100원을 넘지 않는다. 출력 : 첫 번째 줄에 거슬러 줄 동전의 최소개수를 출력한다. ex. 3 1 2 5 15 -> 3 ( 출력 설명 : 5 5 5 동전 3개로 거슬러 줄 수 있다. ) */ public class P05_동전교환 { static int N, total, answer; static Integer[] coins; public static void main(String[] args) throws Exception { // 초기 세팅 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); coins = new Integer[N]; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i=0; i<N; i++) { coins[i] = Integer.parseInt(st.nextToken()); } total = Integer.parseInt(br.readLine()); // 로직 Arrays.sort(coins, Collections.reverseOrder()); // coins 내림차순 정렬 (int[] 배열이 아닌 Integer[] 배열이여야 함 !!) // 방법1. BFS // BFS(); // 방법2. DFS answer = total; DFS(0, 0); // 출력 System.out.println(answer); } public static void BFS() { Queue<Integer> q = new LinkedList<>(); for (int i=0; i<N; i++) { q.offer(coins[i]); } int count = 1; while (true) { int size = q.size(); for (int i=0; i<size; i++) { int tmp = q.poll(); for (int j=0; j<N; j++) { int next = tmp + coins[j]; if (next == total) { answer = count + 1; return; } q.offer(next); } } count++; } } public static void DFS(int count, int sum) { if (sum > total || count >= answer) { return; } if (sum == total) { answer = Math.min(answer, count); } else { for (int i=0; i<N; i++) { DFS(count+1, sum+coins[i]); } } } } 처음에 혼자 풀 때 BFS 문제인 것 같아 BFS로 풀었고, 강의보고 나서 다시 DFS로 풀어봤는데DFS와 BFS 풀이 방법 중 어느 것이 더 좋은 방법인가요 ?성능면에서 DFS와 BFS 중 어떤 것이 더 좋은지 궁금합니다 .. !
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
return; 유무
public static void DFS(int index, int sum) { if (sum > C) { return; } if (index == N) { answer = Math.max(answer, sum); return; } else { DFS(index+1, sum+arr[index]); DFS(index+1, sum); } }if(index == N) {} << 여기에서 강사님은 return;을 따로 쓰지 않으셨던데 return; 을 쓰거나 쓰지 않는 기준이 따로 있는건가요 ?? 어차피 저쪽으로 가게된다면 맨 마지막 줄이기 때문에 따로 return; 을 작성하지 않으신건가요 ?