월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
송아지 찾기
while (!queue.isEmpty()) {int size = queue.size(); for (int i = 0; i < size; i++) { int current = queue.poll(); if (current == E) {return jumps; for 문 돌리는 코드에서 for(int i=0; i<queue.size; )로 직접 돌리면 size값이 달라지던데 이게 왜 그런걸까요 ?이해가 잘 안가서 질문드립니다
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션7 그래프 최단거리 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.섹션 7 마지막문제 그래프최단거리의 BFS함수 내부에서 dis[v]를 0으로 다시 초기화해주는 이유가 궁금합니다. 0으로 초기화해주지 않아도 배열을 선언하고 처음 초기화할때 0으로 자동 초기화가 일어나지 않나요?public static void BFS(int v){ Queue<Integer> queue = new LinkedList<>(); ch[v] = 1; dis[v] = 0; //왜?? queue.add(v); while (!queue.isEmpty()){ int currV = queue.poll(); for (Integer nextV : graph.get(currV)) { if(ch[nextV]==0){ //방문한 적이 없는지 확인 ch[nextV] = 1; queue.add(nextV); dis[nextV] = dis[currV]+1; } } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
while 대신 else if
while문 사용하는 이유가 if(sum==m) answer++;같은 코드 반복 하지 않기 위함이겠죠???아니면 또 다른 이유가 있을까요~? 감사합니다.import java.util.Scanner;public class Main { public int solution(int n, int m, int[] arr) { int answer = 0, lt=0, sum=0; for(int rt=0; rt<n; rt++) { sum += arr[rt]; if(sum==m) answer++; else if(sum>=m) { sum -= arr[lt++]; if(sum==m) answer++; } else { sum+=arr[rt]; if(sum==m) answer++; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[] arr = new int[n]; for(int i=0; i<n; i++) { arr[i] = sc.nextInt(); } System.out.println(T.solution(n,m,arr)); }}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3강 4번에 대해 질문이 있습니다
public int solution(int n, int m, int arr[]){int answer =0;int sum=0;int start= 0;int end =start+1;while(start<n-1 && end<n){if(arr[start]==m) answer++;if(sum<m-arr[start]){sum += arr[end];end++;}else if(sum==m-arr[start]){answer++;sum=0;start++;end=start+1;}else{sum=0;start++;end=start+1;}} 혹시 sum에 end 값을 더해서 누적 시키고 m(특정 숫자)에서 start 뺀 것과 비교해서 같다면 start를 1 증가시키고 end를 그 다음 위치시키고크다면 start와 end를 위와 같이 방식으로 증가 시키는 접근 방식은 잘못되었을까요? 제출 결과 케이스에 따라 정답도 있고 오답은 무조건 정답에서 -1 이라 헷갈리네요 ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
쇠막대기 오답 질문
닫는 괄호를 만날 때마다 count++를 해주는 방식은 왜 정답이 안나오는 지 알 수 있을까요?import java.util.Scanner; import java.util.Stack; public class Main { public static int solution(String str){ int answer = 0; char[] strTochars = str.toCharArray(); Stack<Character> stack = new Stack<>(); int count = 0; for (int i=0; i<strTochars.length; i++) { if (strTochars[i] == '(') stack.push('('); else { if (!stack.isEmpty() && stack.peek() == '(') { stack.pop(); count ++; if (i>0 && strTochars[i-1] != '(') { // 막대 answer += count; count = 0; } } } } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.nextLine(); System.out.println(solution(str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문장속단어 강의에서 질문
String의 문장속단어 강의에서"int m = Integer.MIN_VALUE, pos;" 이부분이요. m이라는 변수에 Integer.MIN_VALUE이라는 상수값을 초기화하고,pos라는 변수는 선언만 한건가요? 풀어서 쓰면, "int m = Integer.MIN_VALUE; int pos;" 이거를 한 줄로 나타낸건가요???
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션 6에 장난꾸러기 질문 있습니다!
장난꾸러기 문제를 풀었는데 테스트케이스들은 잘 나오는데 채점을 돌리면 오답으로 나와서요,혹시 어디가 문제인지 확인해주실 수 있나요...?코드 텍스트는 아래에 첨부합니다!import java.util.Scanner; public class Kids { public static void solution(int[] arr){ StringBuilder sb = new StringBuilder(); int index = 0; for (int i = 0; i < arr.length-1; i++) { if(arr[i]>arr[i+1]){ if(index==0) { sb.append(i+1).append(" "); //철수 index++; } else sb.append(i+2).append("\n"); //철수 짝꿍 } } System.out.println(sb); } 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(); solution(arr); } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
오답처리 원인
import java.util.ArrayList; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; Maininf = new Main(); ArrayList<Integer> answerList = inf.solution(nums); for (int i : answerList) { System.out.print(i + " "); } } public ArrayList<Integer> solution(int[] nums) { ArrayList<Integer> answerList = new ArrayList<>(); answerList.add(nums[0]); for (int i = 1; i < nums.length; i++) { if(nums[i] > nums[i-1]) { answerList.add(nums[i]); } } return answerList; } }위는 제 코드인데.. IDE에서는 결과가 잘 리턴되는데, 채점 사이트에서 리턴이 자꾸 0으로 나온다고 오답처리합니다..! 문제가 뭔지 모르겠습니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
씨름 O(n)으로 풀었는데 런타임 에러가 떠요
package GreedyAlgorithm;import java.util.*;public class SsireumSelection {static Scanner sc = new Scanner(System.in); static ArrayList<Body> athlete = new ArrayList<>(); static int n = sc.nextInt(); static int answer; static int maxWeight=Integer.MIN_VALUE; public static void main(String[] args) {for (int i = 0; i < n; i++) {athlete.add(new Body(sc.nextInt(), sc.nextInt())); }Collections.sort(athlete); for (Body b : athlete) {if (b.weight > maxWeight) {answer++; maxWeight=b.weight; }}System.out.println(answer); }public static class Body implements Comparable<Body> {public int height; public int weight; public Body(int height, int weight) {this.height = height; this.weight = weight; }@Override public int compareTo(Body o) {return o.height - this.height; }}}90ms~126ms, 26mb 나옵니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3강 1번에 대해 질문이 있습니다
안녕하세요 이번에 처음 코테를 공부해보는 학생입니다.혹시 아래와 같은 코드도 투 포인터 알고리즘이라고 할 수 있을까요? 그리고 좀 더 개선점이 있을까요? public class Main{public ArrayList<Integer> solution(int n,int m,ArrayList<Integer> arys){int start=0;while(start <n+m-1){if(arys.get(start)<=arys.get(start+1)){start++;}else{int tmp = arys.get(start);arys.set(start,arys.get(start+1));arys.set(start+1,tmp);start--;}}return arys;}public static void main(String[] args) {Main T = new Main();Scanner sc = new Scanner(System.in);int n = sc.nextInt();ArrayList<Integer> arys = new ArrayList<>();for(int i=0; i<n; i++){arys.add(sc.nextInt());}int m = sc.nextInt();for(int i=0; i<m; i++){arys.add(sc.nextInt());}for(int x:T.solution(n,m,arys)) System.out.print(x+" ");}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2_11 임시반장정하기 질문있습니다.
if (arr[i][k] == arr[j][k])라는 조건이 본인과 본인일 때도 카운터가 되기 때문에 (정답에는 지장이 없지만)if (i != j && arr[i][k] == arr[j][k]) i 와 j 가 다를 때만 카운트 하게 조건을 추가해줬는데 오답입니다가 뜹니다.다른 사람일 때만 같은 반인지 확인하면 되는 줄 알았는데 왜 안되는지 궁금합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
4. 모든 아나그램 찾기 질문
안녕하세요 다음 제 풀이가 테스트케이스 1,2번에서만 오류가 나는데 코드의 어느 부분이 잘못되었는지 모르겠어서 질문 드리고 싶습니다.import java.util.HashMap; import java.util.Scanner; public class Main { public static int solution(String S,String T){ int answer = 0; HashMap<Character,Integer> ThashMap = new HashMap<>(); for (char x: T.toCharArray()){ ThashMap.put(x, ThashMap.getOrDefault(x, 0)+1); } HashMap<Character,Integer> ShashMap = new HashMap<>(); // 1번째 윈도우 for (int i=0; i<T.length(); i++){ ShashMap.put(S.charAt(i), ShashMap.getOrDefault(S.charAt(i), 0)+1); } if (ThashMap.equals(ShashMap)) answer ++; // 나머지 윈도우 for (int i=T.length(); i<S.length()-1; i++){ ShashMap.put(S.charAt(i), ShashMap.getOrDefault(S.charAt(i), 0)+1); ShashMap.put(S.charAt(i-T.length()), ShashMap.get(S.charAt(i-T.length()))-1); if (ShashMap.get(S.charAt(i-T.length())) == 0) ShashMap.remove(S.charAt(i-T.length())); if (ThashMap.equals(ShashMap)) answer ++; } return answer; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.nextLine(); String str2 = sc.nextLine(); System.out.println(solution(str1,str2)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[코드리뷰 요청]2중 포문 안썼는데도 시간초과 발생하는 이유가 뭘까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이중 포문 사용하면 O(N제곱) 나올 것 같아서 조건문에서 ++해주는 방법으로 사용했는데도 시간초과가 나오는 이유가 뭘까요? import java.util.Scanner; // 이중 포문을 피해서 로직을 만들었는데도 시간초과 발생 public class Main { public int solution(int n, int m, int[] arr) { int answer = 0; int start = 0; int sum = arr[start]; for (int i = start+1; i < n; i++) { sum += arr[i]; if (sum == m) { answer++; start ++; i = start; sum = arr[start]; } if (i == n-1) { start ++; // 1 i = start; //2 sum = arr[start]; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int m = kb.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = kb.nextInt(); } System.out.println(T.solution(n,m,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
dis 배열 없이 풀어봤습니다
import java.io.*; import java.util.*; class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } } public class Main { static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, -1, 0, 1}; static int[][] board = new int[8][8]; public static void BFS(int x, int y) { int L = 0; Queue<Point> Q = new LinkedList<>(); Q.offer(new Point(x,y)); while(!Q.isEmpty()) { int len = Q.size(); for(int i=0; i<len; i++) { Point tmp = Q.poll(); for(int j=0; j<4; j++) { int nx = tmp.x + dx[j]; int ny = tmp.y + dy[j]; if (nx >= 1 && nx <= 7 && ny >= 1 && ny <= 7 && board[nx][ny] == 0) { board[nx][ny] = L+1; Q.offer(new Point(nx, ny)); } } } L++; } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); for(int i=1; i<=7; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); for(int j=1; j<=7; j++) { board[i][j] = Integer.parseInt(st.nextToken()); } } BFS(1,1); if(board[7][7] == 0) System.out.println(-1); else System.out.println(board[7][7]); } }dis 배열없이 레벨과 board 배열만으로 풀었는데, 채점 결과 맞긴했는데 이렇게 짜도 될까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
tmp.legnth() > 0 공집합일때 출력 안하기 위해..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. tmp.legnth가 0일 경우 공집합이라서0보다 클 경우에만 tmp를 출력하는걸로 하셨는데,이 코드가 잘 이해가 안됩니다. 우선 tmp.legnth가 0일 경우 공집합이라는 것도 잘 모르겠어요.. 혹시 조금 더 쉽게 설명해주실 수 있을까요 ㅠㅠ if (tmp.length()> 0) System.out.println(tmp);
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
단어뒤집기 런타임에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 단어뒤집기에서, 제 코드 왜 runtime error가 나는지 보이지가 않아서 질문드립니다..ㅜimport java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); for (int i = 0; i < N; i++) { String str = in.next(); String answer = ""; for (int j = str.length() - 1; j >= 0; j--) { answer += str.charAt(j); } System.out.println(answer); } } } string이 계속 생성돼서 그런걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Java 알고리즘 문제 풀이 02-08 컴파일 에러 문의
안녕하세요!IntelliJ로 실행해봤을 때는 이상 없는데채점사이트로 실행 시 컴파일 에러로 잡혀서 어느 부분이 문제인지 알려주시면 정말 감사합니다! import java.util.*; class Main{ public int[] solution(int n, int[] arr) { HashMap<Integer, Integer> rankMap = new HashMap<>(); ArrayList<Integer> sortList = new ArrayList<>(){{ for(int i = 0; i < n; i++) add(arr[i]); }}; int[] answer = new int[n]; sortList.sort(Collections.reverseOrder()); for (int i = 0; i < n; i++) { if (i == 0) rankMap.put(sortList.get(i), 1); else if (sortList.get(i-1).equals(sortList.get(i))) continue; else rankMap.put(sortList.get(i), i+1); } for (int i = 0; i < n; i++){ answer[i] = rankMap.get(arr[i]); } return answer; } public static void main(String[] args) { // 실행 시간 측정 // long beforeTime = System.currentTimeMillis(); // 측정 코드 시작 Main T = new Main(); 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 i : T.solution(n, arr)) System.out.print(i + " "); sc.close(); // 측정 코드 끝 // long afterTime = System.currentTimeMillis(); // long diffTime = afterTime-beforeTime; // System.out.println("실행시간(ms) " + diffTime); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3시간 고민해서 풀었습니다.
매번 문제 풀때마다 너무 어렵게 문제를 접근해서 푸는거같아서 질문 남깁니다...항상 문제를 풀때 저도 알아보기 어렵게 코드를 짜는거같은데 제가 짠 코드도 다시 설명하라하면 못하겠는데 이럴땐 어떻게 하는게 좋나요??package algorithm; import java.util.ArrayList; import java.util.Scanner; public class Ascii_12 { public String solution(int n, String str) { int len = n * 7; String resultStr = ""; if(str.length() != len) { System.out.println("문자의 개수가 입력 조건과 상이합니다."); }else { str = str.replace('#', '1'); str = str.replace('*', '0'); } for(int i = 0; i < n; i++) { String newStr = str.substring(i*7, (i+1)*7); int result = 0; // System.out.println(newStr); for(int j = newStr.length()-1; j>=0; j--) { if(newStr.charAt(j) == '1') { int jAbs = Math.abs(j-6); // System.out.println(jAbs); result += (int)(Math.pow(2, jAbs)); } } // System.out.println((char)result); resultStr += (char)result; } return resultStr; } public static void main(String[] args) { Ascii_12 t = new Ascii_12(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String str = sc.next(); System.out.println(t.solution(n, str)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이번 문제 접근방식 질문드립니다.
저도 배열로 접근했고 cnt와 answer 2가지 변수를 선언한 것까지는 동일했지만...solution은 전혀 달랐습니다. 현재 문제의 정답여부와 이전 문제의 정답여부를 비교하면...총 4가지 케이스가 있다는 걸 알게 되어..1 1 현재 문제도 맞고 이전 문제도 맞은 경우1 0 현재 문제가 맞고 이전 문제는 틀린 경우0 1 현재 문제는 틀리고 이전 문제는 맞은 경우0 0 현재 문제도 틀리고 이전 문제도 틀린 경우로..코딩하였더니 소스도 길어지고..답도 틀렸습니다.... 명쾌한 영상을 보고 나니왜 단순하게 선생님처럼문제가 정답일 때만 코드를 작동하도록생각하지 못 했을 가요...? 사고방식에 문제가 있는 건 아닌지..문제를 파악하는 노하우가 있을 가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
뮤직비디오
안녕하세요 선생님! 다름이 아니라 저는 최소용량크기를 곡들의 분을 더한 값 M으로 나눈걸로 시작했는데 안되는 걸까요? 채점사이트에서는 성공했는데 혹시 그렇게 시작하면 안되는 이유가 있을지 궁금해서요!