월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
블로그..
안녕하세요 선생님 :) 혹시 문제내용과 풀이를 블로그에 (벨로그) 올려도 될까요?? 공부한 기록을 남기고 싶어서요 안된다면은 절대 올리지않겠습니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
HashMap으로 풀어봤는데 괜찮을까요
강의를 보기 전에 먼저 HashMap으로 풀어봤는데 괜찮은 코드라고 봐도 될까요...? import java.util.HashMap; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String in = kb.next(); System.out.println(solution(in)); } public static String solution(String in) { String answer = ""; char[] chrArr = in.toCharArray(); HashMap<Character, Integer> map = new HashMap<>(); for(int i=0; i<in.length(); i++) { if (!map.containsKey(chrArr[i])) { answer += chrArr[i]; } map.put(chrArr[i], 1); } return answer; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Run time 에러 원인을 찾다 찾다가 못찾겠습니다 ㅠ.. 도움이 필요해요 ㅠ.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. IDE에서는 오류가 나지 않습니다. 채점화면만 나는데 제가 간과한 부분이 있을까요? import java.util.ArrayList; import java.util.Scanner; public class Main { public static ArrayList<Integer> solution(int[] arr1, int[] arr2) { ArrayList<Integer> result = new ArrayList<>(); int index1 = 0; int index2 =0; for(int i =0; i<(arr1.length + arr2.length);i++ ) { if((index1 >= arr1.length) || (index2 >= arr2.length)){ if((arr1.length)> (arr2.length)) { result.add(arr1[index1]); index1++; } else { result.add(arr2[index2]); index2++; }// if - else }else { if(arr1[index1] > arr2[index2]) { result.add(arr2[index2]); index2++; } else { result.add(arr1[index1]); index1++; }// if-else }//if- else }// for return result; } // solution public static void main(String[] args) { Scanner sc = new Scanner(System.in); int input1 = sc.nextInt(); int[] arr1 = new int[input1]; for(int i=0;i<input1;i++) { arr1[i]= sc.nextInt(); } //for int input2 = sc.nextInt(); int[] arr2 = new int[input2]; for(int i=0;i<input2;i++) { arr2[i]= sc.nextInt(); } //for for(int answer :solution(arr1, arr2)) { System.out.print(answer+" "); }//for } // main }// end class
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
static 사용에 대한 질문 입니다 !!
선생님 이번 문제 말고 즉, 순열 문제 같은 문제? 전체적인 문제를 봤을때 static으로 변수와 배열을 선언 하는것은 좋은 방법 인가 궁금합니다 !!면접관님들 입장에서는 static을 사용하는것을 좋아하지 않으려나 하는 생각도 있습니다.. 제가 잘못 생각하고 있는 것일까요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
소수 구하기 (에라토스테네스의 체) 빅오 표기법 질문 입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 배열 강의 중 소수 구하기 (에라토스테네스의 체) 문제를 풀때 저는 계속 이중포문으로 진행하여 시간 초과 에러가 났습니다. 그래서 에라토스테네스의 체 라는 개념을 전혀 알지 못해서 일단 강의를 듣고 다시 풀어보자 라는 생각으로 강의를 진행했습니다. 에라토스테네스의 체 알고리즘을 이용하면 이중 for문이지만 빅오 표기법으로 O (N log logN) 이기 떄문에 시간초과가 나지않고 효과적으로 빠르게 코드가 실행되는것같습니다. 근데 제가 에라토스테네스의 체 에 해당하는 빅오표기법이 N log logN 이 나오도록 증명을 하고 싶은데, 제 머리가 멍청해서인지, 왜 N log logN 이 나오는지 잘 모르겠습니다. 구글링을 통해서 증명과정을 보려고해도 다들 그냥 N log logN 이라고 적어놓기만 했지 , 어떻게 해서 N log logN 이 되는지 자세히 설명한 글을 찾을 수 가 없습니다. ㅠㅠ 혹시 에라토스테네스의 체 의 빅오 계산이 어려운게 정상인가요?,, 그냥 다른 글들처럼 에라토스테네스의 체의 빅오 표기는 O(N log logN) 이 된다. 라고만 알고있어도 코딩테스트를 볼때 무리가 없을까요? 아니면 증명과정을 이해하는게 좋을까요? 혹시 이해해야 한다면 N log logN 이 되는 과정을 단순하게라도 설명해주신다면 감사하겠습니다 ㅠㅠ!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 사이트 관련 문의드립니다.
안녕하세요 강사님. 꾸준히 수업 듣고 있는 수강생입니다. 최근 채점 사이트에서 맞은 문제가 문제 목록에서 맞았다는 표시가 뜨지 않는 문제가 있어 매번 몇 번 문제를 풀 차례인지 한 눈에 안들어오는 경우가 있습니다. 또한 저는 출퇴근 시간에 휴대폰으로 코딩을 해서 답안을 제출하곤 하는데 최근 들어서 채점 사이트의 로그인이이 풀려 다시 로그인 하려고 인프런에서 로그인을 누르면 인프런 사이트로 리다이렉트될 뿐 채점 사이트에서는 여전히 로그인이 안되는 문제가 있어 곤란을 겪고 있습니다. 그래서 강의의 채점 사이트 이동 버튼을 찾았으나, 모바일 웹, 앱에서는 해당 버튼이 제공되지 않아 채점 사이트를 들어갈 수가 없습니다. 확인 후 조치가 가능한 부분이라면 부탁드리겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
가위바위보 문제에서 각각의 정수형 배열에 숫자 입력할때 에러 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 가위바위보 문제를 풀다가 A,B 인원의 가위바위보 정보를 입력받는 부분을 어디에 두냐에 따라 컴파일 에러가 나거나 안나거나해서 원인이 궁금하여 이렇게 질문드립니다. import java.util.Scanner; public class RSP { static Scanner sc = new Scanner(System.in); public char[] Solution(int num, int[] A, int[] B) { for (int i = 0; i < num; i++) { A[i] = sc.nextInt(); } for (int i = 0; i < num; i++) { B[i] = sc.nextInt(); } char[] answer = new char[num]; for (int i = 0; i < num; i++) { if (A[i] == B[i]) { answer[i] = 'D'; } else if (A[i] == 1) { if (B[i] == 2) { answer[i] = 'B'; } if (B[i] == 3) { answer[i] = 'A'; } } else if (A[i] == 2) { if (B[i] == 1) { answer[i] = 'A'; } if (B[i] == 3) { answer[i] = 'B'; } } else if (A[i] == 3) { if (B[i] == 1) { answer[i] = 'B'; } if (B[i] == 2) { answer[i] = 'A'; } } } System.out.print(answer); return answer; } public static void main(String[] args) { RSP main = new RSP(); Scanner sc = new Scanner(System.in); System.out.print("입력: "); int num = sc.nextInt(); int[] A = new int[num]; int[] B = new int[num]; for (char c : main.Solution(num, A, B)) { System.out.println(c); } } } 위와 같이 Solution 메소드 안에 A,B의 가위바위보 정보를 입력받을때는 컴파일 에러가 납니다. (문제의 입력 사항을 한꺼번에 복사해서 넣었을경우에 에러가 남. 직접 하나하나 손으로 키보드로 입력하면 에러가 안납니다.) package Array; import java.util.Scanner; public class RSP { static Scanner sc = new Scanner(System.in); public char[] Solution(int num, int[] A, int[] B) { char[] answer = new char[num]; for(int i = 0; i<num; i++) { if(A[i] == B[i]) { answer[i] = 'D'; } else if(A[i] == 1) { if(B[i] == 2) { answer[i] = 'B'; } if(B[i] == 3) { answer[i] = 'A'; } } else if(A[i] == 2) { if(B[i] == 1) { answer[i] = 'A'; } if(B[i] == 3) { answer[i] = 'B'; } } else if(A[i] == 3) { if(B[i] == 1) { answer[i] = 'B'; } if(B[i] == 2) { answer[i] = 'A'; } } } System.out.print(answer); return answer; } public static void main(String[] args) { RSP main = new RSP(); Scanner sc = new Scanner(System.in); System.out.print("입력: "); int num = sc.nextInt(); int[] A = new int[num]; int[] B = new int[num]; for(int i = 0; i<num; i++) { A[i] = sc.nextInt(); } for(int i = 0; i<num; i++) { B[i] = sc.nextInt(); } for(char c : main.Solution(num, A, B)) { System.out.println(c); } } } 하지만 이렇게 main 메소드 안에 A, B의 가위바위보 정보를 입력받도록 하는 메소드를 진행했을때에는 에러가 나지 않습니다. (한꺼번에 입력결과를 입력해도 에러 안남) 이유가 궁금합니다 ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
동전교환문제 dfs 질문입니다.
채점사이트에 dfs 방식으로 풀이후 제출해보았는데 오답처리가 되어 강사님 강의를 확인했는데 Integer[] arr 을 static 처리를 했는지 여부를 제외하고 전부 코드가 같았습니다. 강사님의 코딩을 그대로 클론하여 검사받아도 오류가 나오고 제가 짠 코드로도 오답이 나오는데 혹시 이유를 알 수 있을까요? 코드 첨부하겠습니다. package section8;import java.util.Arrays;import java.util.Collections;import java.util.Scanner;public class p05 { static int n; static int money; static int answer = Integer.MAX_VALUE; public static void DFS(int count, int sum, Integer[] arr){ if(sum > money)return; if(sum >= answer) return; if(sum == money){ answer = Math.min(answer,count); } else{ for(int i = 0; i<n; i++){ DFS( count+1,sum+arr[i], arr); } } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); Integer[] arr = new Integer[n]; for(int i = 0; i<n; i++) arr[i] = sc.nextInt(); money = sc.nextInt(); Arrays.sort(arr, Collections.reverseOrder()); DFS(0,0, arr); System.out.println(answer); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Node클래스 생성시 에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 'Node' is already defined in this compilation unit 라는 에러가 뜹니다. 프로젝트 내에 같은 클래스명으로 선언된 클래스는 없어요..어떻게 해결해야할까요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
String.valueOf()
String.valueOf() 하지 않으면 answer 변수에 저장되지 않는 건가요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 합칠때의 질문이 있습니다.
인풋대상을 하나의 배열로 만들어 놓고. N, M이 길지 않기 떄문에 O(N2)인 선택정렬을 통해서 진행을 하였습니다. N, M 100 미만이라서 이리 선택한건데요 요것만으로도 충불할지 문의 드립니다. (물론 N, M 이 등가 된다면, 당연히 O(logN)을 써야겠지만요.;
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
stack으로 구현
아래 코드와 같이 stack으로 구현했는데 접근 방식이 잘못된 걸까요? 삽입 정렬이 떠오르지 않아서 이렇게 했습니다 ㅠㅠ import java.io.*;import java.util.*;public class Main {public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));public static StringTokenizer st;public static void main(String[] args) throws IOException{st = new StringTokenizer(br.readLine()," ");int size = Integer.parseInt(st.nextToken());int num = Integer.parseInt(st.nextToken());st = new StringTokenizer(br.readLine()," ");Stack<Integer> s = new Stack<>();for(int i =0 ;i<num ;i++) {int t = Integer.parseInt(st.nextToken());// 먼저 이미 있는 건지 확인if (s.contains(t)) {// 이미 들어있으면 삭제하고 맨 위에 넣어s.remove(s.indexOf(t));s.push(t);}// 없는 값이 들어왔을 때else {// 일단 추가하고 s.push(t);// 사이즈가 초과됐으면if (s.size() > size) {s.remove(0); // 맨 밑에꺼 삭제해}}}while(!s.isEmpty()){bw.write(s.pop() + " ");}bw.flush();br.close();}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-5. 특정 문자 뒤집기 관련하여 질문드립니다.
강사님 안녕하세요. 1-5. 특정 문자 뒤집기 관련하여 질문 드립니다. 아래의 코드는 제가 작성해본 코드입니다. 'lt와 rt가 모두 알파벳일 때만 서로 위치를 바꿔준다. ' 라고 문제를 이해하고 풀었습니다. 채점 사이트에서 오답으로 처리가 되어서 원인이 무엇인지 꽤 오래 생각해봤는데 원인을 파악할 수 없어서 질문드립니다. 어떤 부분이 문제가 되었는지 확인해주시면 감사하겠습니다. 강의 잘 듣고 있습니다. 감사합니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public String solution(String str) { String answer = ""; char[] chrArr = str.toCharArray(); int lt = 0; int rt = str.length() - 1; while (lt < rt) { if ((chrArr[lt] >= 65 && chrArr[lt] <= 90) || (chrArr[lt] >= 97 && chrArr[lt] <= 122)) { if ((chrArr[rt] >= 65 && chrArr[rt] <= 90) || (chrArr[rt] >= 97 && chrArr[rt] <= 122)) { char tmp = chrArr[lt]; chrArr[lt] = chrArr[rt]; chrArr[rt] = tmp; } } lt++; rt--; } answer = String.valueOf(chrArr); return answer; } public static void main(String[] args) throws IOException { Main m = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); br.close(); System.out.println(m.solution(str)); } }
- 미해결자바(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같이 큰 수로 테스팅하면 오답이라고 나오네요... 혹시 어떤 점이 문제인지 알 수 있을까요?