월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
int m = Integer.MIN_VALUE, pos; 가 이해가 잘 안돼요 선생님
int a, b = 5; 라고 두가지 변수에 같은 값을 동시에 넣는 것은 본적이 있는데요.m이라는 변수에 두가지 값을 동시에 넣는 거로 해석이 돼서 이해가 안 갑니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 결과 pending
안녕하세요! 최근에 문제를 풀고있습니다.제 컴퓨터가 이상한건지 모르겠는데,,, 제가 처음에 작성한 코드를 넣든 아니면 강사님의 풀이를 넣어도 처음에는 무조건 pending 결과가 유지되다가 새로고침하면 정답입니다. 라고 표출되는데... 원래 이런건가요..?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Comparator와 Comparable
안녕하세요 선생님, 다음과 같이 코드 구현 하였는데 혹시 피드백 부탁드려도 되겠습니까?Comparable과 Comparator중 어떤 걸 써도 상관없는지가 궁금합니다. 또한 class 생성시 이렇게 내부 클래스로 생성하여도 괜찮나요? import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; class Main{ Coordinate[] solution(Coordinate[] arr, int n) { Arrays.sort(arr, new Comparator<Coordinate>() { @Override public int compare(Coordinate o1, Coordinate o2) { // 순서 -> 음수값이 return 되게 해야한다. if (o1.getX() != o2.getX()) return o1.getX() - o2.getX(); else return o1.getY() - o2.getY(); } }); return arr; } public static void main(String[] args) { MainT = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); Coordinate[] arr = new Coordinate[n]; for (int i = 0; i < n; i++) { arr[i] = new Coordinate(sc.nextInt(), sc.nextInt()); } for (Coordinate i : T.solution(arr, n)) System.out.println(i.getX() + " " + i.getY()); } static class Coordinate { private int x; private int y; public Coordinate(int x, int y) { this.x = x; this.y = y; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 테스트 5번만 오답으로 뜨는데 틀린점을 못 찾겠습니다
테스트 5번만 리턴값이 0으로 나와서 오답처리되는데틀린점을 못 찾겠습니다ㅠㅠimport java.util.*; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { String s = sc.next(); String t = sc.next(); System.out.print(solution(s, t)); } static int solution(String s, String t) { int answer = 0; HashMap<Character, Integer> HM = new HashMap<>(); HashMap<Character, Integer> HM2 = new HashMap<>(); char[] arr1 = s.toCharArray(); char[] arr2 = t.toCharArray(); int lt = 0; // t에 대한 해쉬맵 먼저 생성 for(char x:arr2) { HM2.put(x, HM.getOrDefault(x, 0)+1); } for(int i=0; i<arr2.length-1; i++) { HM.put(arr1[i], HM.getOrDefault(arr1[i], 0)+1); } for(int rt=arr2.length-1; rt<arr1.length; rt++) { HM.put(arr1[rt], HM.getOrDefault(arr1[rt], 0)+1); if(HM.equals(HM2)) answer++; HM.put(arr1[lt], HM.get(arr1[lt])-1); if(HM.get(arr1[lt])==0) HM.remove(arr1[lt]); lt++; } return answer; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3-5 연속된 자연수의 합
문제를 직접 풀며, 강의에서 진행되었던 코드를 순서를 조금 변경하면가독성있고, 조금 더 간결한 코딩을 완성할 수 있지 않을까 하여 강사님 확인을 받고싶어 남깁니다.--강의 solution 메서드 public static int solution (int n) { int answer = 0, sum=0, lt = 0; int m = n/2+1; int[] arr = new int[m]; for(int i =0; i<m; i++) arr[i] = i+1; for(int rt = 0; rt<m; rt++) { sum+= arr[rt]; if(sum == n) answer++; while(sum>=n) { sum-=arr[lt++]; if(sum==n) answer++; } } return answer; } --학생 작성 solution 메서드 public static int mySolution (int n) { int answer = 0, sum = 0, lt = 1; for(int i =1 ; i<=n; i++) { sum+=i; while(sum>n) sum-=lt++; if(sum==n) answer++; if(i>(n/2)) break; } return answer; }sum을 먼저 체크하여 lt를 차감 후 answer에 합산하는 순서가 조금 더 간결하지 않을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간초과 에러
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int headCnt = sc.nextInt(); int testCnt = sc.nextInt(); int[][] array = new int[testCnt][headCnt]; for(int i=0; i<testCnt; i++) { for(int j=0; j<headCnt; j++) { array[i][j] = sc.nextInt(); } } System.out.print(solution(headCnt, testCnt, array)); } public static int solution(int headCnt, int testCnt, int[][] arr) { int answer = 0; for(int i=1; i<=headCnt; i++) { for(int j=1; i<=headCnt; j++) { int cnt=0; for(int k=0; k<testCnt; k++) { int pi = 0, pj = 0; for(int s=0; s<headCnt; s++) { //등수 if(arr[k][s] == i) pi = s; if(arr[k][s] == j) pj = s; } if(pi < pj) cnt++; } if(cnt == testCnt) { answer++; } } } return answer; } }왜 에러가 나는지 잘 모르겠습니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임오류가 나는데 코드 확인 부탁드리겠습니다.
import java.util.Scanner; public class Main { static Scanner sc = new Scanner(System.in); public static void main(String[] args) { int n = sc.nextInt(); int[] arr1 = new int[n]; for(int i=0; i<n; i++) { arr1[i] = sc.nextInt(); } int m = sc.nextInt(); int[] arr2 = new int[m]; for(int i=0; i<m; i++) { arr2[i] = sc.nextInt(); } for(int x : solution(arr1, arr2, n,m)) System.out.print(x + " "); } static int[] solution(int[] arr1, int[] arr2, int n, int m) { int[] answer = new int[n+m]; int a=0,b=0,c=0; while(c<n+m) { if(a<n && b<m && arr1[a]<=arr2[b]) { answer[c] = arr1[a]; a++; c++; } else if(a<n && b<m && arr1[a]>arr2[b]){ answer[c] = arr2[b]; b++; c++; } else if(a>=n || b>=m) { if(n>=m) { answer[c] = arr1[a]; a++; c++; } else { answer[c] = arr2[b]; b++; c++; } } } return answer; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어떤 자료구조를 사용해야하는지
아래 제 코드는 O(n*m)으로 더 느리며 필수과목을 중복 수강경우 오답이 되는 풀이라고 판단됩니다.이렇게 이런 중복이 가능하며 순서가 유지되어야 할때 queue 자료구조를 사용하면 코드가 간결해지고 적절하게 사용할 수 있다는 것을 알 수 있었는데, 이렇게 문제를 계속 풀어보면 나중에는 언제 어떤 자료구조를 적절히 사용할 수 있는지 감이 올까요? String solution(String need, String plan) { // C B B A면 yes 반환해야함. String s = ""; for (char x : plan.toCharArray()) { for (char y : need.toCharArray()) { if (x == y) s += x; } } if (need.equals(s)) return "YES"; else return "NO"; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Integer.MIN_VALUE
Integer.MIN_VALUE, Integer.MAX_VALUE찾아봤을때 정수의 최대, 최소값을 출력한다고 되어있는데 여기서 이것 때문에 에러가 왜 나는건지 이해를 잘 못했습니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간복잡도는..
강의에서 알려준 코드의 시간복잡도는O(nlogn) 일까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정렬 후 더하면 왜 오답이 나오는지 궁금합니다!
안녕하세요, 강의 잘 듣고있습니다.다름이 아니라 저는 먼저 배열을 정렬 한 다음, 큰수 -> 작은수 순서대로 더하면 합한 값도 큰 순서대로 될것이라 생각하여 다름과 같이 코드를 작성하였습니다.중복된 sum 값은 코드에서 볼 수 있듯, 이전 sum값과 같으면 제거를 해 주었고요.아래 제 코드가 어떤 면에서 잘못되었는지 궁금합니다!감사합니다.int solution(int n, int k, Integer[] arr) { // arr 중에 3장을 뽑아 적힌 수를 합하려고 할때, k번째로 큰수 Arrays.sort(arr, Comparator.reverseOrder()); int count = 0; int sum = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int l = j + 1; l < n; l++) { if (sum == arr[i] + arr[j] + arr[l]) continue; sum = arr[i] + arr[j] + arr[l]; count++; System.out.println(count + " : " + (arr[i] + arr[j] + arr[l])); if (count == k) return (arr[i] + arr[j] + arr[l]); } } } return -1; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간복잡도
fibo[] 이전 시간복잡도 2^n fibo[] 이후 시간복잡도 어떻게 되나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
6-7 좌표 정렬 문제 질문
안녕하세요 강의 잘 듣고 있습니다. compareTo 메소드를 정의하는게 이해가 잘 안되는 부분이 있습니다.compareTo 메소드를 재정의 해주었는데 그러면 Collections.sort(리스트); 이렇게 해주면 Collections 내부에서 제가 재정의한 compareTo 메소드를 사용해 알아서 리스트를 정렬해준다고 이해하면 되는걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3-2 공통원소구하기 문제 강의듣기전 풀이한 코드에대해 질문이있습니다.
강의를 듣기 전에 풀이했었던 코드입니다.문제 예시와 여러가지 입력들을 테스트 해보았을때는 문제없이 답이 나오는 것 같아 보였는데 채점사이트에서는 런타임 에러가 나옵니다. 어느 부분에서 문제가 있는지 알고싶습니다.import java.io.IOException; import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; import java.util.StringTokenizer; public class Main { static String solution(int[] arr1, int[] arr2) { String result = ""; StringBuilder sb = new StringBuilder(); int[] countArr = new int[1000000001]; for(int i=0; i < arr1.length; i++) { countArr[arr1[i]]++; } for(int i=0; i < arr2.length; i++) { countArr[arr2[i]]++; } for(int i=0; i < countArr.length; i++) { if(countArr[i] == 2) { sb.append(i).append(" "); } } sb.deleteCharAt(sb.length() - 1); result = sb.toString(); return result; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st; int input = Integer.parseInt(br.readLine()); int[] array1 = new int[input]; st = new StringTokenizer(br.readLine(), " "); for(int i=0; i < array1.length; i++) { array1[i] = Integer.parseInt(st.nextToken()); } input = Integer.parseInt(br.readLine()); int[] array2 = new int[input]; st = new StringTokenizer(br.readLine(), " "); for(int i=0; i < array2.length; i++) { array2[i] = Integer.parseInt(st.nextToken()); } bw.write(solution(array1, array2)); bw.close(); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
dy dx 배열에 관련하여
안녕하십니까 코딩테스트 준비를 위해서 강의 수강중인 학생입니다.이 봉우리 문제에서 저같은 경우, 가장자리의 ArrayIndexOutOfBoundsException를 해결할 방법을 찾지 못해 일일히 이중for문을 돌면서 가로세로n+2의 배열을 만들어 문제 그림에 나와있는 것 같이 배열을 세팅하여 문제를 접근하고, 해결했습니다.문제를 풀고 난 후 강의를 들어 해답을 확인하였는데, dy dx 배열을 생성하는 점이 신선했습니다.이러한 dy dx 배열을 생성하는 것 같은 접근 방식은 어떻게 하면 배울수 있는 건가요? 통상적으로 좌표에 대해서 접근할때 dy dx 배열을 사용하는건지 궁금합니다. 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문 드립니다!
강사님 안녕하세요.위에 그림처럼 인덱스가 주어지고 해당 인덱스 주변으로 값을 채울 수 있는 문제를 접한 적이 있어 다시 찾아보려 하였지만 제 능력으로 찾을 수 없어 이렇게 문의 드리게 되었습니다!혹시 위와 같은 문제의 유형이나 문제 링크를 공유 주실수 있으실까요?ㅠㅠㅠ감사합니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
같을때도 빼는 이유
안녕하세요~ 태원님강의 7분42초 쯤에 같아도 빼는 이유가 이해가 안됩니다...public int solution(int num, int sumResult, int[] arr) { int answer = 0; int sum = 0; int lt = 0; for(int rt = 0; rt < num; rt++) { sum += arr[rt]; if(sum == sumResult) { answer++; } //같아도 빼야함 while (sum >= num) { sum -= arr[lt++]; if(sum == num) answer++; } } return answer; }while에 해당하는 내용 입니다.감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
풀이 질문
public int getNumber(int num, int sumResult, int[] arr) { int answer = 0; int sum = 0; int pi = 0; int i = 0; while(pi < num) { sum += arr[pi]; if(sum > sumResult) { pi = i++; sum = 0; } else if (sum == sumResult) { answer++; } pi++; } return answer; } 채점은 정답으로 나왔는데,,혹시 다른 예외상황이 있을까요...?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 안녕하세요! 입출력부분에서 질문이있습니다.
풀이방법은 유사하나, 저는 정답을 answer += map.size() + " ";로 하여 진행했는데 정답은 올바르게 나오나 시간초과가 나오더군요. 그래서 강사님께서 하신대로 리스트를 만들어 size넣고 반환하니까 시간초과가 안뜨는데 리스트에 넣어 출력하는것이 더 효율적인 이유가 궁금합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요. 문제풀이 사이트에 문제가 없어 문의드립니다.
안녕하세요. 문제풀이 사이트에 Recursive, Tree, Graph(DFS, BFS 기초) 관련 문제가 왜 없을까요?ㅜㅜ 8번 송아지찾기 문제만있고, 앞부분의 1번부터 재귀 ~문제가 없습니다.