월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
지역변수 질문이요
안녕하세요 강의 잘 듣고있습니다혹시 int cnt=0을 for(i)반복문 밑에 선언한것은 j,k 반복문이 끝나고 cnt를 0으로 초기화 하실려고 저 위치에 선언한게 맞으실까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장 정하기 질문
- 우선 채점사이트에서 정답처리 받은 코드이고요, 핵심부분입니다.int answer = 0, max=0 ; int cnt=0; for(int i=1; i<=n; i++){ // i학생이 cnt=0; for(int j=1; j<=n; j++){ //j학생들을 탐색하면서 for(int k=1; k<=5; k++){ //학년 돌면서 탐색 if(arr[i][k] == arr[j][k]){ cnt++; break; // 한번이라도 같은반인게 조건이기 때문에 } } if(max < cnt){ max = cnt; answer=i; } } }- 이 코드의 조건문 부분 코드if(arr[i][k] == arr[j][k]){이것을, 학생들을 탐색할때 자기자신을 탐색하지 않기 위해 아래와 같이 조건문을 바꾸었더니 오답처리 되었습니다. 오답처리 된 이유가 궁금합니다.if(i != j && arr[i][k] == arr[j][k]){ *참고용 전체 코드import java.util.*; public class Main { public int solution(int n, int [][] arr){ int answer = 0, max=0 ; int cnt=0; for(int i=1; i<=n; i++){ // i학생이 cnt=0; for(int j=1; j<=n; j++){ //j학생들을 탐색하면서 for(int k=1; k<=5; k++){ //학년 돌면서 탐색 if( i != j && arr[i][k] == arr[j][k]){ cnt++; break; // 한번이라도 같은반인게 조건이기 때문에 } } if(max < cnt){ max = cnt; answer=i; } } } return answer; } public static void main(String[] args) { Main M = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int [][] arr = new int[n+1][6]; for(int i=1;i<=n;i++){ for(int j=1;j<=5;j++){ arr[i][j] = kb.nextInt(); } } System.out.print(M.solution(n,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
매출액의 종류 문제에서 시간초과 에러가 뜨는데요...
public static void main(String[] args){ Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int[] arr = new int[a]; for(int i = 0 ; i < a ; i++) { arr[i] = in.nextInt(); } String answer = ""; HashMap<Integer, Integer> map = new HashMap<>(); for(int i = 0 ; i <= (a - b) ; i++) { map.clear(); for(int j = i ; j < (i+b) ; j++) { map.put(arr[j], map.getOrDefault(arr[j], 0) + 1); } answer = answer + map.size() + " "; } System.out.println(answer); }저는 이렇게 짰는데요...아무리 봐도 강의에서 알려주신 것과 크게 차이를 못 느끼겠는데... 혹시 어떤 부분에서 문제가 되는걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 - bfs 시간초과
안녕하세요, 바둑이 승차를 bfs로 풀어보다가, 시간 초과 에러가 떠서 여쭤봅니다.!아래는 제 코드입니다.import java.util.*; public class Main { static class Node { int sum; int level; public Node(int sum, int level) { this.sum = sum; this.level = level; } } static int n; static int w; static int[] puppies; static int result; public int bfs() { Queue<Integer> Q = new LinkedList<>(); Q.offer(puppies[0]); Q.offer(0); int L = 0; while(!Q.isEmpty()) { int len = Q.size(); if(L==n) break; for(int i=0 ; i<len; i++) { int tmp = Q.poll(); if(tmp>w) continue; result = Math.max(tmp, result); if(L<n-1 ) { int next = puppies[L+1]; Q.offer(tmp + next); Q.offer(tmp); } } L++; } return result; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); w = sc.nextInt(); n = sc.nextInt(); puppies = new int[n]; for(int i=0; i<n; i++) { puppies[i] = sc.nextInt(); } T.bfs(); System.out.println(result); } } bfs, dfs 모두 모든 노드를 방문한다는 점에서, 같을 것 같은데, 왜 bfs는 시간 초과가 날까요.?제가 break을 놓친 부분이 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-1 왜 런타임 에러가 나오는지 모르겠습니다
package org.example; import java.util.Scanner; import static java.lang.Character.*; public class Main { public static int solution(String str, String ch){ int result = 0; for(int i = 0; i < str.length(); i++){ if(toLowerCase(str.charAt(i)) == toLowerCase(ch.charAt(0))){ result++; } } return result; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String ch = scanner.next(); System.out.println(solution(str, ch)); } }IDE에서는 정상적으로 실행되는데채점사이트에서는 런타임에러가 나네요 ㅠㅠ이유를 모르겠습니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요
for(int i = 0;i<s.length();i++){ if(s.charAt(i)>='a' && s.charAt(i)<='z'){ s.charAt(i) = s.charAt(i) - 32; System.out.print(s.charAt(i)); } else{ s.charAt(i) = s.charAt(i) +32; System.out.print(s.charAt(i)); } } 안녕하세요 위와 같이 풀었을때s.charAt(i) = s.charAt(i) - 32;이 코드에서 s.charAt(i) 인덱스에 직접 문자값을 저장할 수 없는 이유는 무엇인가요?? 리터럴이라서 그런건가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장 정하기 런타임 오류 피드백 부탁드립니다
비슷한 질문을 확인했는데, 제 경우에는 인덱스 범위를 맞게 설정한거 같고 인풋 아웃풋 결과도 문제가 없는거 같은데 채점 사이트에서만 런타임 오류라고 뜨네요 ㅠㅠ 왜그런지 봐주세요. 1학년부터 5학년까지라고 하셨지만 저는 5*5배열을 만들어서 해결하고 싶었습니다.아래 코드에서 어떻게 고치면 될까요?? import java.util.*; public class Main { public int solution(int n,int[][] arr){ int answer=0, max=Integer.MIN_VALUE; for(int i=0;i<n;i++){ int cnt=0; for(int j=0;j<n;j++) { for(int k =0;k<5;k++) { if(arr[i][k] == arr[j][k]){ cnt++; break; } } } if(max<cnt){ max=cnt; answer= i+1; } } 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][n]; for(int i=0; i<n; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = kb.nextInt(); } } System.out.print(T.solution(n,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
제가 공부한 내용을 블로그에 기록하고 싶습니다.
안녕하세요 선생님. 제가 요즘 공부하는 것을 블로그(velog)에 기록하고 있는데 블로그 공유 관련 글을 찾아보니까 문제를 통으로 올리는 건 불가능하지만 소스코드를 올리는 건 괜찮다고 답변해 주신것을 보았습니다. 저 또한 문제를 올리지는 않고 문제 대충 설명한 후에 소스코드의 대한 해석을 기록하고자 하는데 괜찮을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
공주 구하기 문제 풀이 시간 복잡도 질문
안녕하세요 제가 푼 코드와 강의의 풀이가 차이가 있어서 질문 드립니다. 저는 아래와 같이 문제를 풀어 봤는데요. 강의와 제 풀이의 시간 복잡도가 어떻게 되는건지 궁금합니다. 제 풀이는 while문이 하나 있으니 O(n)으로 표시하면 되는 것일까요? 강의 풀이는 while문 안에 for문이 있는데 그럼 O(n^2) 인건가요? 아니면 K를 상수로 보고 O(n) 이라고 생각하면 되는 걸까요.. public int solution(int n, int k) { int answer = 0; Queue<Integer> queue = new LinkedList<>(); for (int i = 1; i <= n; i++) { queue.add(i); } int cnt = 1; while (queue.size() > 0) { if (cnt == k) { answer = queue.poll(); cnt = 1; } else { queue.add(queue.poll()); cnt++; } } return answer; } 두 코드 중 어떤 것이 더 효율적인 코드인지 궁금합니다. 실행 시간을 비교해서 더 짧게 나오는 것이 효율적인 코드라고 봐도 되는 걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 질문입니다!
package other.study; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import static java.lang.Integer.MIN_VALUE; import static java.lang.Math.max; import static java.lang.System.in; // todo: 해결 필요!! public class Main3 { static int[] ch = new int[100000000]; static int c, n, answer = MIN_VALUE; public static void main(String[] args) { Scanner kb = new Scanner(in); c = kb.nextInt(); n = kb.nextInt(); ch = new int[n]; int[] arr = new int[n + 1]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } // DFS(0, 0, arr); BFS(0, arr); System.out.println("answer = " + answer); } static void DFS(int L, int sum, int[] arr) { if (sum > c) return; if (L == n) { answer = max(answer, sum); } else { DFS(L + 1, sum + arr[L], arr); DFS(L + 1, sum, arr); } } static void BFS(int L, int[] arr) { Queue<Node> Q = new LinkedList<>(); Q.offer(new Node(0, arr[0])); while (!Q.isEmpty()) { int len = Q.size(); for (int i = 0; i < len; i++) { Node tmp = Q.poll(); if (tmp.weight > c) continue; if (L == n) { answer = max(answer, tmp.weight); } else { Q.offer(new Node(tmp.level + 1, tmp.weight + arr[tmp.level + 1])); Q.offer(new Node(tmp.level + 1, tmp.weight)); } } System.out.println(); L++; } } static class Node { private int level, weight; public Node(int level, int weight) { this.level = level; this.weight = weight; } } }안녕하세요 선생님!명품 강의 정말 잘 듣고 있어요! 바둑이 승차를 BFS로도 풀어봤는데, 문제되는 부분이 있을까해서 질문 드립니다! 늦었지만 새해 복 많이 받으세요!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
쇠막대기 풀이 질문
안녕하세요, 첫번째 else 문에서 바로 pop을 해줘도 오류가 나지 않는 이유, 두번째 if문에서 stack.isEmpty() 체크를 해주지 않는 이유가 무조건 처음 한번은 '(' 괄호가 들어가기 때문인가요? for (int i = 0; i < arr.length; i++) { if (arr[i] == '(') stack.push(arr[i]); else { stack.pop(); if (arr[i - 1] == '(') answer += stack.size(); else answer++; } } import java.util.*; public class Main { public int solution(String str) { int answer = 0; Stack<Character> stack = new Stack<>(); char[] arr = str.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] == '(') stack.push(arr[i]); else { stack.pop(); if (arr[i - 1] == '(') answer += stack.size(); else answer++; } } return answer; } public static void main(String[] args) throws Exception { Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(T.solution(str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11.문자열 압축 문제 결과가 맞게 나오는거 같은데 채점사이트에서 오답이라고 합니다. 피드백 주시면 감사하겠습니다.
import java.util.*; public class Main { public String solution(String str){ StringBuilder answer = new StringBuilder(); char [] tmp = str.toCharArray(); int dis_Count = 1; for(int i=0; i<tmp.length; i++){ //연속으로 들어올때 if(i>0 && tmp[i]== tmp[i-1]){ dis_Count++; } //연속으로 들어오다 끊길 때 else if(i>0 && tmp[i]!= tmp[i-1]){ if(dis_Count > 1){ answer.append(dis_Count); dis_Count = 1; } } if(dis_Count == 1){answer.append((tmp[i]));} } return answer.toString(); } public static void main(String[] args) { Main Main = new Main(); Scanner kb = new Scanner(System.in); String str = kb.next(); System.out.println(Main.solution(str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
조건문에 의한 시간초과
package 인프런; import java.io.*; import java.util.*; public class i0302 { public static ArrayList<Integer> solution (int N, int M, int[] arrN, int[] arrM) { ArrayList<Integer> answer = new ArrayList<>(); Arrays.sort(arrN); Arrays.sort(arrM); int p1 = 0; int p2 = 0; while(p1 < N && p2 < M) { if (arrN[p1] == arrM[p2]) { answer.add(arrN[p1]); p1++; p2++; } else if (arrN[p1] > arrM[p2]) { p2++; } else if (arrN[p1] < arrM[p1]) { p1++; // 여기가 문제 } } return answer; } public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int[] arrN = new int[N]; st = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i++) { arrN[i] = Integer.parseInt(st.nextToken()); } st = new StringTokenizer(br.readLine()); int M = Integer.parseInt(st.nextToken()); int[] arrM = new int[M]; st = new StringTokenizer(br.readLine()); for (int i = 0; i < M; i++) { arrM[i] = Integer.parseInt(st.nextToken()); } ArrayList<Integer> answer = solution(N, M, arrN, arrM); for(int x: answer) { System.out.print(x + " "); } } } 안녕하세요. 강의 학습 전에 코드를 작성했는데 자꾸 시간초과가 나서 확인해보니 강사님 강의에서 14번째 라인(else p2++)를 저는 else if를 사용해서 나는 문제였던 것 같습니다. 마지막에 else if를 else로 바꾸는 것이 크리티컬하게 성능 차이를 낼 수 있는 것인가가 궁금합니다. 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 코드는 왜 안되는 건가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(solution(str)); } private static String solution(String str) { String str1 = str.replaceAll("[^a-zA-Z]", "").toLowerCase(); System.out.println(str1); StringBuilder builder = new StringBuilder(str1.toLowerCase()); return !str1.isEmpty() && str1.contentEquals(builder.reverse()) ? "YES" : "NO"; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
12번 암호문 런타임에러
14e972338646 import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner kb = new Scanner(System.in); int num = Integer.parseInt(kb.nextLine()); String str = kb.nextLine(); solution(str, num); kb.close(); } private static void solution(String str, int num) { List<String> binlist = new ArrayList<>(); for (int i = 0; i < str.length(); i += (str.length() / num)) { int end = Math.min(i + str.length() / num, str.length()); binlist.add(str.substring(i, end)); } for (String each : binlist) { StringBuilder tmp = new StringBuilder(); for (char mos : each.toCharArray()) { if (mos == '#') tmp.append(1); if (mos == '*') tmp.append(0); } binlist.set(binlist.indexOf(each), tmp.toString()); } for(String each : binlist){ solution2(each); } } private static void solution2(String bin) { int ascii = Integer.parseInt(bin,2); System.out.print((char)ascii); } } 다른 질문 글에도 런타임 에러 질문이 있는거 같은데 명확한 답변을 못 찾아 글을 올려봅니다. 12번 암호문제구요.2,3,4,5 테스트 케이스 다 통과했다는데 1번 테스트케이스에서 런타임에러가 나옵니다.다른 글에서 보니 1번은 문제에서 제시한 테스트케이스라는데 로컬에서는 정상 작동을 확인했습니다. 어떤 부분이 문제일까요? 런타임에러가 어떤 상황인지도 알고 싶습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
슬라이딩
이미 알거 같지만 한 번 더 질문을 해볼게요 !!슬라이딩 유형은 미리 셋팅이 있어야 하는 것인가요?? 또한 import java.util.*; class Main { private int[] solution(int n, int m, int[] arr) { HashMap<Integer, Integer> map = new HashMap<>(); int index = 0, lt = 0; int[] answer = new int[n - m + 1]; while(lt < n - m + 1) { for (int rt = 0; rt < m; rt++) { map.put(arr[lt + rt], 1); } lt++; answer[index++] = map.size(); map.clear(); } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = in.nextInt(); } for(int a : T.solution(n, m, arr)) { System.out.print(a + " "); } } } 이렇게 풀면 시간 복잡도가 O(N^2) 이라서 시간 초과가 일어나는 것이죠 !?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[최대 길이 연속부분수열] 틀린 이유
import java.util.*; class Main { public int solution(int n, int m, int[] arr) { int lt = 0, sum = 0, max = 0, count = 0; for(int rt = 0; rt < n; rt++) { if(arr[rt] == 1) { sum += arr[rt]; } else if (arr[rt] == 0) { if(count++ < m) { sum += 1; } else { if (sum >= max) { max = sum; sum = 0; lt ++; rt = lt; count = 0; } } } } return max; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int m = in.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = in.nextInt(); } System.out.print(T.solution(n, m, arr)); } }논리적으로 틀린건 없는거 같고, 예시코드도 틀린게 없는데 왜 오답이 나오는지 모르겠습니다 !!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트 케이스 하나가 오답인데 어떤 부분이 문제인지 모르겠습니다ㅠ
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; class Main { public static void main(String[] args) throws IOException { Main T = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String str2 = br.readLine(); System.out.println(T.solution(str1, str2)); } public static String solution(String str1, String str2) { HashMap<Character, Integer> map1 = new HashMap<>(); HashMap<Character, Integer> map2 = new HashMap<>(); for (char x : str1.toCharArray()) { map1.put(x, map1.getOrDefault(x, 0) + 1); } for (char x : str2.toCharArray()) { map2.put(x, map2.getOrDefault(x, 0) + 1); } String answer = ""; for (char x : map1.keySet()) { if (map1.containsKey(x) == map2.containsKey(x)) { if (map1.get(x) == map2.get(x)) answer = "YES"; else answer = "NO"; } } return answer; } }테스트케이스 하나를 통과하지 못하는데 제가 생각하지 못한 부분이 있는지 궁금합니다!코드가 효율적이지 않을 수는 있으나 저렇게 해도 풀리지 않을까? 해서 작성해봤는데.. 뭐가 문제일까요테스트 케이스ABCDqtqtqEFqGHIJKLMNOPQRSTUVWetagdgXYabcdefghijklmnopqrstuwxyzaBcdewrqwtqFghIJklMnOpqrsTuegagaeVxyYAbCDEfGHijKLmNoPQRStUwWXz
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3중 for문으로 변경해서 정답
import java.util.Scanner; public class 멘토링 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int m = scan.nextInt(); int[][] intArrArr = new int[n][m]; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ int temp = scan.nextInt(); intArrArr[temp-1][i] = j; } } System.out.println(solution(n,m,intArrArr)); } private static int solution(int n, int m, int[][] intArrArr) { int answer = 0; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ boolean flag = true; for(int k=0;k<m;k++){ if(intArrArr[i][k] >= intArrArr[j][k]){ flag = false; break; } } if(flag){ answer++; } } } return answer; } } input을 받을 때 학생이 행에 오도록 변경을 해서 등 수를 열로 변경해서 받으면 3중 for문으로도 가능합니다. 참고가 될까 싶어 올려봅니다 화이팅!!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강의 보지 않고 혼자 풀었는데
안녕하세요 혼자 푸는 중에 주어진 테스트케이스는 통과했으나 오답이 나왔습니다.질문에 들어와보니 테스트케이스가 여러개라는데 제 눈에는 문제에있는 한가지 테스트 케이스만 보여서요 다른 테스트 케이스는 어디서 볼 수 있나요?