월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님 안녕하세요! String toString 차이가 궁금해요
toString 을 쓰는 이유가 주로 어떨때 어떤 이유로 쓰이나요? 구글 쳐보니까 디버깅 용도외에는 안쓰는게 좋다 이러길래 우리가 사용하는 코테수준의 코드에서 어떤 용도와 어떤 이유로 쓰면 좋을지 알고 싶습니다.특히 !! StringBuild 에서 쓰는 이유도요!StringBuild 를 이용하만 일반적인 String 이랑 형이 다르게 변하는 건가요?? 그리고 valueOf같은경우에 저는 주로 charArray 같은 경우를 나중에 String 으로 만들고 싶을때 주로 사용하거든요? StringValueOf(charArr) 이런식으로요 이 기능 외에도 쓰일때가 있나요?코테 수준에서 ValueOf의 주 기능이 알고싶어요있다면 알려주시면 정말 감사하겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
풀어보면 좋은 문제목록 글자가 이상합니다
다 깨진건지 한글로 어떻게 쓰여있는지 알고싶습니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 합치기 다른 방법
안녕하세요 강사님 배열 합치기 문제에서제가 먼저 풀었을때는 아래와 같이 풀어서 accept가 떴긴 했는데 강사님이 강의해주신 코드와 제 코드 시간 비교를 해보니 10ms 정도 차이가 나더라고요 (제 코드가 조금 더 running time이 깁니다.)혹시 아래 코드를 코딩테스트에서 사용해도 딱히 무방한가요??? - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import java.util.*; public class Main { public ArrayList<Integer> solution(int n, int[] arr1, int m, int[] arr2) { ArrayList<Integer> answer = new ArrayList<>(); for (int x : arr1) answer.add(x); for (int x : arr2) answer.add(x); Collections.sort(answer); return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[] arr1 = new int[n]; for (int i = 0; i < n; i++) { arr1[i] = kb.nextInt(); } int m = kb.nextInt(); int[] arr2 = new int[m]; for (int i = 0; i < m; i++) { arr2[i] = kb.nextInt(); } for (int x : T.solution(n, arr1, m, arr2)) { System.out.print(x + " "); } } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
송아지 찾기 문제
package dfs_and_bfs; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class Solution_7 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String positions[] = br.readLine().split(" "); int S = Integer.parseInt(positions[0]); int E = Integer.parseInt(positions[1]); Queue<Integer> queue = new LinkedList<>(); int levels[] = new int[10001]; boolean[] visited = new boolean[10001]; queue.offer(S); levels[S] = 0; visited[S] = true; int[] dis = {1, -1, 5}; while(!queue.isEmpty()) { int pos = queue.poll(); if(pos == E) { System.out.println(levels[pos]); break; }else { for(int i = 0; i < dis.length; i++) { int newPos = pos + dis[i]; if(newPos >=1 && newPos <= 10000 && !visited[newPos]) { queue.add(newPos); levels[newPos] = (levels[pos] + 1); visited[newPos] = true; } } } } } } 혹시 이런 식으로 구현하게 되면 levels 라는 배열이 필요하게 되는데 맞나요? 채점 사이트에서는 맞았다고 나옵니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러가 뜨는 이유가 궁금합니다!
강의를 보기 전에 혼자 고민하고 작성했던 코드입니다. 출력은 잘 나오는데 채점 사이트에서 런타임 에러가 떴는데, 런타임 에러 어떤 상황에서 나오는지 궁금합니다!import java.util.*; public class Main { public int solution(int n, int[][] arr2) { int answer = 0; int sum = 0; // 각 행의 합 for (int i = 0; i < n; i++) { sum = 0; for (int j = 0; j < n; j++) { sum += arr2[i][j]; } answer = Math.max(sum, answer); } // 각 열의 합 for (int i = 0; i < n; i++) { sum = 0; for (int j = 0; j < n; j++) { sum += arr2[j][i]; } answer = Math.max(sum, answer); } // 두 대각선의 합 // 00 -> 11 -> 22 -> 33 -> 44 // 04 -> 13 -> 22 -> 31 -> 40 sum = 0; for (int i = 0; i < n; i++) { sum += arr2[i][i]; } answer = Math.max(sum, answer); sum = 0; for (int i = 0; i < n; i++) { sum += arr2[i][n-i-1]; } answer = Math.max(sum, answer); 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[5][5]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { arr[i][j] = kb.nextInt(); } } System.out.println(T.solution(n, arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
숙제 코드 리뷰 부탁드립니다.
이전 문제와 비슷하게 graph 인접리스트를 이용하고, ch 배열을 사용해여 이미 방문한 곳을 체크했습니다.import java.util.*; import java.io.*; class Main { static int answer = 0; static ArrayList<ArrayList<Integer>> graph; static int n, m; static int[] dis, ch; public static void bfs(int v) { Queue<Integer> Q = new LinkedList<>(); Q.offer(v); int L = 0; while (!Q.isEmpty()) { int len = Q.size(); for (int i = 0; i < len; i++) { int cur = Q.poll(); dis[cur] = L; for (int nv : graph.get(cur)) { if (ch[nv] == 0) { ch[nv] = 1; Q.offer(nv); } } } L++; } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = null; st = new StringTokenizer(br.readLine()); n = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); graph = new ArrayList<>(); for (int i = 0; i <= n; i++) { graph.add(new ArrayList<>()); } for (int i = 0; i < m; i++) { st = new StringTokenizer(br.readLine()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); graph.get(a).add(b); } ch = new int[n + 1]; dis = new int[n + 1]; ch[1] = 1; bfs(1); for (int i = 2; i <= n; i++) { System.out.println(i + " : " + dis[i]); } } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[3-4]연속 부분수열 오답 질문드립니다..
[3-4] 연속 부분수열 이제 공부를 시작한지 얼마안된 코린이입니다.. 어디가 잘못되었는지 모르겠어요.. 케이스 3,5 에서 리턴값 1차이로 틀리네요.. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int lt = 0, rt = 0, sum = 0, answer = 0; int count = sc.nextInt(); int target = sc.nextInt(); int[] arr = new int[count]; for (int i = 0; i < count; i++) { arr[i] = sc.nextInt(); } while (rt < count) { if (sum == target) { answer++; sum -= arr[lt++]; } else if (sum < target) { sum += arr[rt++]; } else { sum -= arr[lt++]; } } while(lt < count) { sum -= arr[lt++]; if(sum == target) { answer++; } if(sum < target) break; } System.out.println(answer); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이거는 왜 오답인가요? 1-1;
import java.util.Scanner; public class Main1_1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next().toUpperCase(); char c = str.charAt(0); System.out.println(c); int answer = 0; for(int i=0; i <str.length(); i++) { if( str.charAt(i) == c) { answer++; } } System.out.println(answer); } }테스트는 잘되는데 왜오답인지모르겠습니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
토마토 문제 질문
강사님 안녕하세요! 토마토 문제 강의 듣다가 질문이 있어서 문의 드립니다.강의 내용 9:56 부분에서dis 부분에 (2,4) 부분이 3 이 아니라2가 되어야 하지 않나 싶어서 질문드립니다!이유는 level 1 - (2,5)에서 level 2가 될때 (2,4)가 2일 차에 토마토가 익어서 그렇게 될거 같은데,제가 이해를 잘못하고 있는 것인지 알 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색 질문있습니다
이런식으로 왔던길을 되돌아가는 것을 제외하지 않으면 경우의 수가 8가지 이상이 되는데 조건부족아닌가요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속수열에 음수가 포함되는 경우
연속부분수열에서 음수인 수도 포함되는 경우, lt와 rt 사이의 길이가 길어질수록 합이 반드시 커진다는 명제가 성립되지 않아서 two pointer를 사용하는 sliding window 해결방법을 사용할 수 없는 것 같습니다. 이런 경우에는 어떻게 접근해야할까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
무엇이 오답인지 모르겠습니다...
예시 입력 이 외 다른 값으로 입력해도 올바른 값이 나오는데 오답이 나오는 이유가 무엇일까요...? public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] arr = new int[n][5]; for (int i = 0; i < n; i++) { for (int t = 0; t < 5; t++) { arr[i][t] = in.nextInt(); } } int[] result = new int[n]; for (int i = 0; i < n; i++) { for (int t = 0; t < 5; t++) { for (int j = 0; j < n; j++) { if (i == j) continue; if (arr[i][t] == arr[j][t]) { result[i]++; break; } } } } int max_index = 0; for (int i = 0; i < result.length; i++) { if (result[i] > result[max_index]) { max_index = i; } } System.out.print(max_index + 1); } 예시 입력을 넣으면5 2 3 1 7 3 4 1 9 6 8 5 5 2 4 4 6 5 2 6 7 8 4 2 2 2 학생 순서대로 학년마다 같은 반 이였던 적이 있는 학생이면 +1을 해서 result 배열에 넣어주었습니다.[0, 1, 2, 3, 1] 마지막으로 result 배열 안에 가장 큰 수를 가진 인덱스에 +1을 해서 출력했습니다. 4
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제를 풀어보고 강의를 다보고나서 바로 백준으로 가도 될까요??
안녕하세요.강사님 덕분에 무사히 강의 완주를 할 수 있었고, 문제 유형에 따라 풀어보면서 알고리즘 개념을 익힌 것 같습니다. 다름이 아닌 앞으로의 공부 방향성에 대해 여쭤볼게 있습니다.이 강의를 완주하고 나서 바로 백준 사이트에서 문제를 풀지 아니면 이 강의에서 푼 문제들 중에 틀린 문제만 다시 풀어볼지 고민입니다.선택의 가이드를 주시면 감사하겠습니다.아래 사이트는 제가 문제를 풀면서 틀린 문제들을 정리한 개인 노트입니다.https://stirring-zone-39a.notion.site/000a85a88dc64def8241b7fa5baff59b
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 틀렸는지 이유를 잘 모르겠습니다..
import java.util.Scanner; public class Main { public static void main(String[] args) { Main main = new Main(); Scanner sc = new Scanner(System.in); String s = sc.next(); String solution = main.solution(s); System.out.println(solution); } public String solution(String str) { String answer = ""; char[] chArr = str.toCharArray(); if (chArr.length % 2 == 1) { return answer = "NO"; } int lt = 0; int rt = chArr.length - 1; while (lt < rt) { char startWord = Character.toUpperCase(chArr[lt]); char lastWord = Character.toUpperCase(chArr[rt]); if (!(startWord == lastWord)) { return answer = "NO"; } lt++; rt--; } return answer = "YES"; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러 질문 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요,12번 테스트 2,3,4,5 번에서 런타임 에러가 나는데 테스트 케이스가 어떤 것인지 알려주실 수 있을까요...?그리고 아래와 같이 풀었봤는데무엇이 문제일까요? import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(int n, String str) { String answer = ""; str = str.replace("#", "1"); str = str.replace("*", "0"); ArrayList<String> arrStr = new ArrayList<String>(); for(int i=0; i<n; i++) { String tmp = str.substring(0, 7); arrStr.add(String.valueOf((char)Integer.parseInt(tmp, 2))); str = str.substring(7); } answer = String.join("", arrStr); return answer; } public static void main(String[] args) throws Exception { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); String str = kb.next(); System.out.println(T.solution(n, str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-5번 문제 질문 올립니다
안녕하세요. 문자 뒤집기 문제에서해당 내용과 같이 코드를 작성 했는데답은 똑같이 출력이 되는데 채점에서 오답인이유가 무엇일까요 ?import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System.out.println(solution(s)); } //a#b!GE*T@S //S#T!EG*b@a public static String solution(String s){ char[] c = s.toCharArray(); for (int i=0; i < c.length / 2 ; i++){ if(Character.isAlphabetic(c[i]) && Character.isAlphabetic(c[c.length-i-1])){ char tmp = c[i]; c[i] = c[c.length-i -1]; c[c.length-i -1] = tmp; } } return String.valueOf(c); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
메모이제이션 리턴값 질문입니다.
DFS 함수에서 n이 2보다 클 경우 fibo[n]=DFS(n-2)+DFS(n-1) 이렇게 출력을 하고있는데 여기서 n이 1, 2 일 경우 fibo[n]=1; 으로 저장만 하고 있는데 어떻게 두 값이 더해져서 리턴을 하게 되는지 궁금합니다. fibo 배열에 저장이 될 때 자동으로 그 값이 반환되는 건가요??알려주심 감사하겠습니다.!
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대매출 왜 오답일까요?
public class Main { public int solution(int input1, int input2, int[] arr){ int max = 0; for(int i=0; i<=input1-input2; i++){ max = Math.max(max,arr[i]+arr[i+1]+arr[i+2]); } return max; } public static void main(String[] args){ Scanner sc=new Scanner(System.in); int input1 = sc.nextInt(); int input2 = sc.nextInt(); int[] arr = new int[input1]; for(int i=0; i<input1; i++){ arr[i] = sc.nextInt(); } Main T = new Main(); System.out.println(T.solution(input1, input2, arr)); return ; } } 슬라이딩 윈도우로 풀기 전에 위와같이... 완전탐색(?)형식으로 풀었는데 오답인 이유는 뭔가요?!! 시간초과인가요...?? for문 하나니까 시간복잡도 N 아닌가요 ㅜㅜ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시작시간을 기준으로 해도 답이 나오는데 괜찮나요?
전 문제와 비슷하게 시작시간을 내림차순으로 정렬하고,아래와 같이 로직을 짰는데 정답 처리가 되었습니다.제가 푼 방법이 문제를 이해한 것이 맞을까요?import java.util.*; import java.io.*; class Conf implements Comparable<Conf> { int st; int et; public Conf(int st, int et) { this.st = st; this.et = et; } @Override public int compareTo(Conf o) { return o.st - this.st; } } class Main { public static int solution(int n, ArrayList<Conf> list) { int answer = 0; int min = Integer.MAX_VALUE; //st Collections.sort(list); for (Conf conf : list) { if (conf.et <= min) { min = conf.st; answer++; } } return answer; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stz = null; int n = Integer.parseInt(br.readLine()); ArrayList<Conf> list = new ArrayList<>(); for (int i = 0; i < n; i++) { stz = new StringTokenizer(br.readLine()); int st = Integer.parseInt(stz.nextToken()); int et = Integer.parseInt(stz.nextToken()); list.add(new Conf(st, et)); } System.out.println(solution(n, list)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
어디가 다른 부분인지 모르겠습니다.
import java.util.Arrays; import java.util.Scanner; public class Main { static int n; static int f; static int[] b; static int[] p; static int[] ch; static boolean find = false; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); f = scanner.nextInt(); b = new int[n]; p = new int[n]; ch = new int[n + 1]; for (int i = 0; i < n; i++) { b[i] = memoizationFactorial(n - 1, i); } solution(0, 0); } public static void solution(int level, int sum) { if (find) { return; } if (level == n) { if (sum == f) { for (int i : p) { System.out.print(i + " "); } } find = true; } else { for (int i = 1; i <= n; i++) { if (ch[i] == 0) { ch[i] = 1; p[level] = i; solution(level + 1, sum + (p[level] * b[level])); ch[i] = 0; } } } } static int[][] memorize = new int[35][35]; private static int memoizationFactorial(int n, int c) { if (memorize[n][c] > 0) { return memorize[n][c]; } if (n == c || c == 0) { return 1; } else { return memorize[n][c] = memoizationFactorial(n - 1, c) + memoizationFactorial(n - 1, c - 1); } } }제가 푼 방식으로는 안풀려서 선생님 코드를 그대로 썼는데 어디가 누락됬는지 모르겠습니다. ㅠㅠ