월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
if 조건식에서 불완전트리일 경우에 대한 처리
자식이 하나밖에 없는 불완전 트리일 경우 재귀로 반환된 자기 자신이 root인지 검사하면 되는 것 아닐까요? 아래 소스처럼 수정해도 정답이 나오는 것 같습니다. 반례가 떠오르지 않는데.. 혹시 있을까요? ``` if (root == null || (root.lt == null && root.rt == null)) { return L;} else {...} ```
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
두가지 질문이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1. 선생님이 설명해주신 코드상에서는 , 부분합이 M보다 큰 경우 lt를 한칸 이동하고 - 부분합 수정 - 그럼에도 부분합이 계속 M보다 크면 -> lt를 계속 앞으로 이동시키셨는데요 그러면 lt가 rt보다 앞서서 lt와 rt 위치가 역전되는 경우가 발생하지 않는지 질문 드립니다. 예를 들어 M이 6인데 1 1 7 ... 인 경우 lt가 1 rt가 7을 가리키다가 lt가 결국 rt위치인 7까지 이동하는데, 그래도 7은 6보다 크니까 lt는 한칸 뒤로 이동할 텐데, 그러면 sum += arr[rt] 를 할때 lt가 rt보다 앞서서 잘못된 부분합이 계산되지는 않을지 질문 드립니다. 2. 이 문제는 결국 각 원소를 부분합의 시작 지점으로 했을 때, 부분합이 M이 되면 무조건 count하는데요, 만약 1, 2, 3, 1, 2, 3 이고 M이 6이면 {1,2,3}이 2번 count 될 텐데, "수열" 이니깐 {1,2,3}이 2번 count되면 안되는 것은 아닌지 잘 모르겠습니다. => 이부분은 제가 너무 과하게 생각한 거 같기도 합니다...ㅎㅎ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
원소에 6이 포함될경우 이것도 카운팅되는거같아요
원소에 6이 주어지면 이게 카운팅이 되는데, 잘못된것 아닌가요 ? 예를들어 입력값이 8 61 2 1 3 1 1 1 6 이렇다고 치면 while(sum>=m){ sum-=arr[lt++]; if(sum==m) answer++; } 이 부분때문에 합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}, { 6 }로 { 6 } 까지해서 총 4가지가 나오는것같은데, { 6 } 은 연속된숫자의 합이 아니니까 포함되어야되지 않는거 아닌가요 ?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문드립니다!
안녕하세요! 강의 정말 잘 수강하고있습니다. 다름이 아니라 해쉬맵 강의 중 3번 매출액의 종류 부분에서 어떠한 생각으로 인해 k-1로 접근하는 지 모르겠습니다. 발상의 과정과 이유가 궁금합니다!(과정이 너무 궁금)
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
while문 안 질문있습니다.
while(sum >= m) 으로 작성해주셨는데요 while(sum > m)으로 해도 반복 횟수는 똑같은거 같은데 맞나요? 그냥 궁금해서.. 확인차 글 남깁니다 !
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
k번째 큰 수 조건이 추가되어야 할 것 같아요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. // input -> 1, 1, 1, 1, 3, 2, 2, 2, 2, 2 // expected -> -1 // 현재코드에선 5로 나옵니다. // 3개의 숫자가 중복이 되면 안되는 조건이 없어 추가해야합니다. if (arr[i] != arr[j] && arr[j] != arr[l] && arr[l] != arr[i]) { tSet.add(arr[i] + arr[j] + arr[l]); }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션2 5번 소수구하는 문제 질문
import java.util.Scanner;public class Main { public int solution(int num) { int count = 4; //2 ,3, 5, 7 은 미리 포함시켜줌. for (int i = 2; i <= num; i++) { //1은 소수가 아닌데 if문에 해당하므로 2부터 시작 if (i % 2 != 0 && i % 3 != 0 && i % 5 != 0 && i % 7 != 0) { count++; } } return count; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); System.out.println(T.solution(num)); }} 안녕하세요 소수가 2,3,5,7의 배수를 제거하면 남는 수라는 점을 이용해서 2,3,5,7로 나눴을때 하나라도 나머지가 0이면 2,3,5,7중 하나의 배수라는 거니까 나머지가 0이 아닌 경우를 구해서 카운팅하는 방식으로 코드를 짰는데요 (2,3,5,7은 나머지가 0이지만 소수이므로 미리 포함시켜서 count를 4부터 시작했습니다!) 100정도 이하의 숫자 넣었을땐 답이 맞게 나오는데 정답 제출란에서 20000이나 30000같이 큰 수로 테스팅하면 오답이라고 나오네요... 혹시 어떤 점이 문제인지 알 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러이유가 멀까요?
String answer = "NO"; Stack<Character> st = new Stack(); for(int i=0; i<str.length(); i++){ if(str.charAt(i)=='('){ st.push(str.charAt(i)); }else{ st.pop(); } } if (st.isEmpty()){ answer = "YES"; } return answer;}테스트케이스에서 런타임 에러가 발생했는데 이유가멀까요?!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
재귀 이진수 변환 출력이 강의와 다릅니다
public class Example02 { public static void main(String[] args) { int n = 11; //이진수 : 1011 recursion(n); } static void recursion(int n) { if(n/2 == 0) { return; } recursion(n/2); System.out.print(n%2); } } 안녕하세요 강사님, 위는 제가 작성한 코드 입니다. 코드 상 강사님이 작성하신 코드와 출력이 다를 이유는 없다고 생각이 드는데, 제 출력값은 항상 1011 이 아닌, 011이 나오네요... 조금 수정해서, 위 소스코드의 if 문을 if( n/2 == 0 && n%2 ==1) { System.out.print(1); return; } 으로 변경하니, 정상적인 결과가 출력 되었습니다. 혹시 이건 왜그런지 알 수 있을까요? 위 소스코드는 강의의 코드와 출력이 다르게 나올 이유가 없을것 같은데, 출력이 달라서요 강의가 알고리즘을 공부하는데 참 많은 도움이 됩니다. 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
eclipse에서 실행되는데 채점은 pending나네요
import java.util.Scanner; class Main { public String solution(String str) { String answer = ""; for(int i=0; i< str.length(); i++) { if(Character.isUpperCase(str.charAt(i))){ // 대문자라면 str=str.replace(str.charAt(i),Character.toLowerCase(str.charAt(i))); }else if(Character.isLowerCase(str.charAt(i))) { // 소문자라면 str=str.replace(str.charAt(i),Character.toUpperCase(str.charAt(i))); } } answer= str; return answer; } public static void main(String[] args){ Main T = new Main(); Scanner in=new Scanner(System.in); String str = in.next(); System.out.println(T.solution(str)); } } 강의정답이 아니라 제가 푼 정답인데, 이클립스에서는 실행되는데, 왜 채점하기하면 pending이라고 뜰까요 ,,?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
혼자 노가다로 풀었는데 강의보고 반성하러 갑니다.. : )
package 배열1_2차원;import java.util.Scanner;public class 격자판최대합9 { static int solution(int n , int [][] arr ) { int answer =0; int [] aArr = new int [n]; int [] bArr = new int [n]; int aMax = 0; // 가로 int bMax = 0; // 세로 int c = 0; int d = 0; //가로합 -> aArr 배열에 추가 for (int i = 0; i < n; i ++ ) { for (int j = 0; j < n; j++) { aArr[i] += arr[i][j]; } } for (int i = 0; i < aArr.length; i++) { if(aMax < aArr[i]) { aMax = aArr[i]; } } //세로합 -> bArr 배열에 추가 for (int i = 0; i < n; i ++ ) { for (int j = 0; j < n; j++) { bArr[i] += arr[j][i]; } } for (int i = 0; i < bArr.length; i++) { if(bMax < bArr[i]) { bMax = bArr[i]; } } // 우하향 대각선 for (int i = 0; i < n; i++) { for (int j = i; j <= i; j++) { c += arr[i][j]; } } // 좌하향 대각선 for (int i = n-1; i >= 0; i--) { for (int j = i; j <= i; j++) { d += arr[i][j]; } } int [] maxArr = new int[] {aMax , bMax , c, d}; for (int i = 0; i < maxArr.length; i++) { if(answer < maxArr[i]) { answer = maxArr[i]; } } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int [][] arr = new int [n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(solution(n,arr)); }}
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트 케이스 한 개 통과하지 못하는 문제
solution 코드를 아래와 같이 작성했습니다. public static int solution(int n, int[][] board, int m, int[] moves) { int answer = 0; // stack 만들기 List<Stack<Integer>> stacks = new ArrayList<>(); for (int i = 0; i < n; i++) { Stack<Integer> tmp = new Stack<>(); for (int j = n - 1; j >= 0; j--) { if (board[j][i] == 0) break; tmp.push(board[j][i]); } stacks.add(tmp); } Stack<Integer> bucket = new Stack<>(); for (int i : moves) { if (!stacks.get(i-1).isEmpty()){ int newItem = stacks.get(i-1).pop(); if (!bucket.isEmpty() && bucket.peek() == newItem) { bucket.pop(); answer += 2; } else bucket.push(newItem); } } return answer; } board의 상단 인형에 접근하는 방법으로 저는 Stack의 List를 만들어 사용했고, 강사님은 직접 배열에 접근했다는 것이 차이점인 것 같습니다. 위 코드로 채점을 해보면 4번 test case까지는 통과하지만 마지막 5번 test case를 통과하지 못합니다. (리턴 : 22, 답 : 16) 코드의 효율성 문제를 떠나서 위 코드도 제대로 동작해야 될 것 같은데 마지막 케이스만 통과하지 못하는 이유를 도저히 못 찾겠네요ㅜㅜ 혹시 이유를 아시는 분이 계실까요..?ㅜ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
뒤집은 수를 넣을 배열을 하나 더 추가했는데 크게 상관없을까요?
강의보기전에 좀 걸려서 혼자 풀어보고 통과는했는데,배열을 추가해서 풀었는데 크게 상관없는지 궁금합니다 !!package 배열1_2차원;import java.util.ArrayList;import java.util.Scanner;public class 뒤집은소수6O { public static boolean isPrime(int num) { if (num == 1) return true; for (int i = 2; i < num; i++) { if (num % i == 0) { return true; } } return false; } static ArrayList<Integer> solution(int n, int[] arr) { ArrayList<Integer> answer = new ArrayList<>(); int[] c = new int[n]; // 배열을 뒤집어서 저장할 배열 생성 for (int i = 0; i < n; i++) { while (arr[i] > 0) { c[i] = c[i] * 10 + arr[i] % 10; arr[i] = arr[i] / 10; } } for (int i = 0; i < c.length; i++) { if (isPrime(c[i]) == false) { answer.add(c[i]); } } return answer; } 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(); } for (int x : solution(n, arr)) { System.out.print(x + " "); } }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
수열에 음수가 주어질 경우
수열에 음수가 주어지는 경우에는, sum이 더 작을 때 rt를 움직이고, 더 클 때 lt 를 움직이는 방법은 적절하지 않다고 생각되는데, 맞나요?? sum이 더 작다고 rt를 움직이더라도, 우측에 있는 수가 음수라면, lt를 움직이는 게 하나의 방법이 될 수도 있다고 생각합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드중에 잘못된 부분이있을까요?
안녕하세요. replaceAll 사용안하고 풀었는데, 예시입력 부분은 정상적으로 출력이 되는데, 제출하면 틀렸다고 나오는데, 혹시 잘못된 부분이 있을까요 ?? package 문자열;import java.util.Scanner;public class 팰린드롬8 { public static String solution(String str) { str = str.toUpperCase(); String answer = "NO"; for (int i = 0; i < str.length()/2; i++) { if('A' <= str.charAt(i) && str.charAt(i) <= 'Z') { if(str.charAt(i) == str.charAt(str.length()-1-i)) { answer = "YES"; } } else { continue; } } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(solution(str)); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
+= , = 연산자 차이 오류
package DfsBfs;import java.util.Arrays;import java.util.Collections;import java.util.Scanner;public class 동전교환 { static int n, m; static Integer[] arr; static int answer = Integer.MAX_VALUE; public static void main(String[] args){ 동전교환 T = new 동전교환(); Scanner sc= new Scanner(System.in); n = sc.nextInt(); arr = new Integer[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } Arrays.sort(arr, Collections.reverseOrder()); m = sc.nextInt(); T.DFS(0, 0); System.out.println(answer); } public void DFS(int L, int sum){ System.out.println(L + " :::: " + sum); if(sum > m) return; if(L >= answer) return; if(sum == m) { answer = Math.min(L, answer); }else{ for (int i = 0; i < n; i++) { DFS(L+1 , sum + arr[i]); //sum += arr[i] ?????????? } } } }. 강사님 안녕하세요 강의 잘보고 있습니다. DFS재귀로 도는 시점에 "sum+= arr[i]" 로 두면 왜 오답이 나오는건가요?? " sum = sum + arr[i] " "sum + arr[i]" 같은거 아닌가요??..............
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제해결능력
안녕하세요. 강의 너무 잘 듣고 있습니다. 감사드립니다!!질문드리고 싶은 건.. 제가 문제를 보면 너무 생각이 나질 않아 문제해결능력이 많이 부족하구나.. 생각이 듭니다. 계속하다 보면 괜찮은 건지.. 아니면 문제해결능력을 기르기 위한 다른 방법이 있는지 여쭤보고 싶습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Node객체 생성시 주소 질문이 있습니다.
그림도 따라그려보고 하다가 질문이 있어서 올립니다. Node객체를 생성할때, Node(1) -> 100 Node(2) -> 200 Node(3) -> 300 .. Node(7) -> 700 이라는 값을 설정해 주지 않았는데, 주소값이라고 생각하면 될까요? 주소값은 생성되면 100단위로 생성이 되는 걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
if문 하나 추가해도 괜찮을지 확인 부탁드립니다!
public void DFS(int L, int sum) { if (flag) return; if (sum > f) return; //추가하면 더 좋을까요? if (L == n) {
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임에러 문제..
안녕하세요~ 아래와 같이 작성한코드로 문제답변 입력시 런타임 에러가 나오고 있습니다. 어느쪽이 잘못된건지 도저히 모르겠어서 문의드립니다 ㅠㅠ