월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
특정 문자 뒤집기 시간 복잡도 질문 드립니다
lt와 rt가 알파벳인 경우에 포인터가 각각 움직이는 코드라면, 제가 최악의 경우라고 생각한 '문자열의 모든 문자가 특수문자인 경우'에는 lt가 rt보다 작을 때까지 계속 한쪽으로만 움직이는 것이므로 시간 복잡도는 O(n)이다 라고 할 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
격자판 최대합 질문입니다! 이렇게 풀어도되나요?
for문 한번으로 하려고 이렇게 풀었는데정답처리가 나오긴하는데 이렇게 풀어도되나요? 문제가 될만한게 있으면 알려주세요ㅠpublic int solution(int[][] arr) { int max = 0; //대각선 int diagonalR = 0; int diagonalL = 0; for (int i=0; i<arr.length; i++) { //가로행, 세로행 int tr = 0; int le = 0; for(int j = 0; j<arr.length; j++){ tr += arr[i][j]; le += arr[j][i]; if(i == j){ diagonalR += arr[i][j]; } } diagonalL += arr[i][arr.length-1-i]; max = Math.max(max,Math.max(tr, le)); } max = Math.max(max,Math.max(diagonalR, diagonalL)); return max; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
연속부분수열 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 연속부분수열 문제를 dfs로 풀려고 하는데 답이 이상하게 나옵니다. 가지치기로 배열의 숫자들을 선택해서 더할때, 선택안하고 넘어갈 때 2가지로 구분해서 풀었습니다. 아니면 혹시 연속된 수열이라서 dfs로는 못 푸는 건가요?? import java.util.*;public class Main {public static int n,m,answer;public static void main(String[] args) {Scanner sc = new Scanner(System.in); n=sc.nextInt();m=sc.nextInt();int[] num = new int[n]; for(int i=0; i<n; i++)num[i]=sc.nextInt(); dfs(0,0,num);System.out.print(answer);}public static void dfs(int L, int sum, int[] a) {if(sum>m) return;if(L==n) {if(sum==m) answer++;}else {dfs(L+1, sum+a[L], a);dfs(L+1, sum, a);}}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리 문제 컴파일 에러
제 로컬 실행시에는 정답이 나오는데 채점 시 컴파일 에러가 나고있습니다.뭐가 문제인지 모르겠습니다.import java.util.Comparator; import java.util.List; import java.util.Scanner; public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int[][] answers = new int[num + 2][num + 2]; // (1,1) ~ (n,n) 까지 입력됨. - 테두리는 입력되지 않음 for (int row = 1; row <= num; row++) { for (int col = 1; col <= num; col++) { answers[row][col] = scanner.nextInt(); } } System.out.println(solution(answers)); } private static int solution(int[][] nums) { int size = nums.length; int count = 0; for (int row = 1; row < size - 1; row++) { for (int col = 1; col < size - 1; col++) { int n = nums[row][col]; int up = nums[row - 1][col]; int down = nums[row + 1][col]; int left = nums[row][col - 1]; int right = nums[row][col + 1]; List<Integer> controlGroup = List.of(n, up, down, left, right); int max = controlGroup.stream() .max(Comparator.comparing(Integer::intValue)) .get(); boolean isDistinct = controlGroup.stream() .filter(i -> i == max) .count() == 1; if (n == max && isDistinct) { count++; } } } return count; }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
격자판 최대합 - 제가 너무 어렵게 생각하는걸까요?
public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int[][] answers = new int[num][num]; for (int row = 0; row < num; row++) { for (int col = 0; col < num; col++) { answers[row][col] = scanner.nextInt(); } } System.out.println(solution(answers)); } private static int solution(int[][] nums) { int size = nums.length; int[] colSum = new int[size]; int[] rowSum = new int[size]; int leftDiagonalSum = 0; int rightDiagonalSum = 0; for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { rowSum[row] += nums[row][col]; colSum[col] += nums[row][col]; if (row == col) { leftDiagonalSum += nums[row][col]; } if (row + col == 4) { rightDiagonalSum += nums[row][col]; } } } int colMax = Arrays.stream(colSum).max().getAsInt(); int rowMax = Arrays.stream(rowSum).max().getAsInt(); return Stream.of(colMax, rowMax, rightDiagonalSum, leftDiagonalSum) .max(Comparator.comparing(Integer::intValue)) .get(); } }전체를 돌면서 row, col 의 좌표값으로 대각선값을 구하게 했는데요.선생님 강의를 보면 더 단순하게 생각할 수 있다고 느낍니다.단순 코드차이로 보면 될까요? 아니면 제가 앞으로 문제를 풀면서 더 단순하게 생각해야할까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
처음 해시맵에 초기화시 질문
안녕하세요. 우선 강의 잘 듣고 있습니다. 감사합니다.궁금한게 처음 입력받은 t문자열을 해시맵에bm에 넣고,s문자열을 t-1의 길이만큼 다른 해시맵am에 넣고반복문을 돌려 t.length()-1을 시작점으로 주셨습니다.저도 이 부분에서 해답이 안나와 강사님 방법대로 해결하긴 했는데, 혹시 처음부터 am해시맵에 t의 길이만큼 초기화 하고 진행할수 있나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요 런타임에러 뜨는 이유좀 알수 있을까요 ??
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); HashMap<Character,Integer> map1 = new HashMap<>(); String str1 = sc.next(); String str2 = sc.next(); String answer = "YES"; for (char i : str1.toCharArray()){ map1.put(i,map1.getOrDefault(i,0)+1); } for (char i : str2.toCharArray()){ if (!map1.containsKey(i)|| map1.get(i)==0) { answer="NO"; } map1.put(i,map1.get(i)-1); } System.out.println(answer); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
팰린드롬(replaceAll) 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 스트링 객체로 쓰지않고 변수 lt, rt잡아서 비교하면 안된다고 뜨는데, 잘못된 코드인가요?? import java.util.*; public class Main {public static void main(String[] args){Scanner sc = new Scanner(System.in);String s=sc.nextLine(); s = s.toUpperCase().replaceAll("[^A-Z]",""); int lt=0;int rt=s.length()-1;boolean flag = false;while(lt<=rt) {if(s.charAt(lt)==s.charAt(rt)) {lt++;rt--;flag = true;}else {break;}}if(flag) System.out.print("YES");else System.out.print("NO");}}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
마구간 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 마구간 문제에서 lt,rt를 음반 문제처럼Arrays.stream(arr).max().getAsInt();하면 rt가 9가되고,Arrays.stream(arr).min().getAsInt()해서 lt가 1로 되게해서는 코드를 짤수 없나요??
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
강사님 2-7 점수계산 문의드립니다.
안녕하세요 선생님덕분에 코딩테스트 열심히 준비하고 있는 학생입니다. 다름이 아니라 궁금한 점이 있어 이렇게 문의 드립니다. 강의와 같은 코드를 구현 후 로컬에서 실행 시켰을 경우에는 답이 정확하게 나오는데 채점 사이트에 올리면 오답이라고 답이 계속 나오는데 혹시 제가 잘못한 부분인건지, 아니면 채점 사이트에서 요구하는 것이 잘못된 것인지 여쭤보고 싶습니다. import java.util.*; class Main { public int solution(int number, int[] numArray) { int answer = 0; int cnt = 0; for (int i = 0; i < number - 1; i++) { if (numArray[i] == 1) { cnt++; answer += cnt; } else { cnt = 0; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); Integer number = kb.nextInt(); int[] numArray = new int[number]; for (int i = 0; i < number; i++) { numArray[i] = kb.nextInt(); } System.out.print(T.solution(number, numArray)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님 정렬파트 7. 좌표정렬 오답이나오는데 이유를 모르겠습니다
코드를 어디에 올려야할지 모르겠습니다정답은 똑같이 나오는데 오답이 뜨는데 이유를 모르겠습니다!!import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[][] arr = new int[n][2]; for (int i = 0; i < arr.length; i++) { StringTokenizer st = new StringTokenizer(br.readLine(), " "); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } for (int j = 0; j < arr.length; j++) { for (int i = 0; i < arr.length; i++) { if (arr[i][0] > arr[j][0]) { sort(arr, i, j); } } } for (int j = 0; j < arr.length; j++) { for (int i = 0; i < arr.length; i++) { if (yCondition(arr, i, j)) { sort(arr, i, j); } } } for (int i = 0; i < arr.length; i++) { for (int j = 0; j < 2; j++) { System.out.print(arr[i][j] + " "); } System.out.println(); } } public static void sort(int[][] arr, int i, int j) { int x = arr[i][0]; int y = arr[i][1]; arr[i][0] = arr[j][0]; arr[i][1] = arr[j][1]; arr[j][0] = x; arr[j][1] = y; } public static boolean yCondition(int[][] arr, int i, int j) { return arr[i][0] == arr[j][0] && arr[i][1] > arr[j][1]; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
멘토링 문제 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 작성한 if(arr[i][k]==arr[j][k])를 사용하면 코드 진행 순서가 k가 있는 for문이 먼저 진행되니까1)arr[1][1]==arr[1][1]2)arr[1][2]==arr[1][2]3)arr[1][3]==arr[1][3]으로 되지 않나요?? 그래서,if(matrix[i][j]==matrix[k][j]) 으로 하면 학년별 비교가 가능하지 않나요???전체코드public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n=sc.nextInt();int[][] matrix = new int[n][5];int max = 0;int cnt=0;int answer = 0;for(int i=0; i<n; i++) {for(int j=0; j<5; j++) {matrix[i][j] = sc.nextInt();}}for(int i=0; i<n; i++) {cnt=0;for(int j=0; j<n; j++) {for(int k=0; k<5; k++) {if(matrix[i][j]==matrix[k][j]) {cnt++;}}}if(cnt>max) {max = cnt;answer = i+1;}}System.out.print(answer);}이렇게는 풀면안되는건가요?? 인프런에서는 런타임 오류가 뜨네요
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
응급실 문제 의문점
Person에 id부여할때 1번부터 부여해야 하는거 아닌가요?그냥 입력설정에서 m( 0<=m<n) 이라는 조건보고 0번부터 부여한다고 판단하는건가요...?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
미로탐색(DFS) 질문드립니다
미로탐색(DFS) 문제 풀이중DFS함수내에if(nx>=1 && nx<=7 && ny>=1 && ny<=7 && board[nx][ny]==0) 가 있는데if(board[nx][ny]==0 && nx>=1 && nx<=7 && ny>=1 && ny<=7) 로 변경하면범위오류가 발생합니다 앤드조건임에도 순서를 고려해야할까요..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
queue를 배우다가 궁금한게 생겨서 질문드립니다.
응급실 문제를 풀고 강의를 듣고 왔는데요큐에서는 왜 get 매서드를 지원하지 않나요?FIFO에 어긋나나요?stack의 경우 vector를 확장해서 쓰기때문에 lifo에 어긋난다라는 글을 본적이 있어서 검색해보니 lifo는 삽입과 삭제의 경우에 해당하는거 같아서요 조회에는 해당하지 않는거 같은데 해당하나요? 아 물론 그냥 얘네가 그렇게 제공을 했다!! 하는거면 그런거겠지만요. 뭔가 그 개념적인? 이유가 있는지 궁금합니다 왜 궁금하냐면!! 어떻게보면 api?에서 제공하지 않는 get을 class를 만들어 편법?적으로 접근하신거같아서 입니다!! 조금 무례한 질문 죄송합니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
[장난꾸러기]채점시 어디가 잘못된건가요 ?
테스트케이스는 통과하는데, 채점하면틀렸다고 나오네요 ..로직은처음에 정렬이 잘못돼있는 값의 위치(순서)를 answer[0]에 넣고, 해당 요소값을 temp에 넣음. 배열을 정렬 ( 바뀐 두 값이 서로 바뀜 )정렬된 배열을 돌면서 temp와 값이 같은 요소의 위치값 반환.. import java.util.*; import java.util.Arrays; class Main { public int[] solution(int n, int[] arr) { int[] answer=new int[2]; int temp=0; for(int i=1; i<arr.length; i++){ if(arr[i]<arr[i-1]) { answer[0] = i; temp=arr[i-1]; Arrays.sort(arr); break; } } for(int i=0; i<arr.length; i++){ if(arr[i]==temp) answer[1]=i+1; } return answer; } public static void main(String[] args) { Scanner kb = new Scanner(System.in); Main T = new Main(); int n=kb.nextInt(); int[] arr=new int[n]; for(int i=0; i<arr.length; i++){ arr[i]=kb.nextInt(); } for(int x:T.solution(n,arr)) System.out.print(x+" "); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 합치기 질문입니다
package infrun;import java.util.ArrayList;import java.util.Scanner;//배열합치기 , 오름차순 정렬public class IN_3_1 { public ArrayList<Integer> soultion(int num, int num2, int[] arr,int []arr2) { int p1=0, p2=0; //for(int i=0; i<num; i++) { ArrayList<Integer> answer= new ArrayList<Integer>(); while(p1<num && p2<num2) { if(arr[p1]<arr[p2]) { answer.add(arr[p1++]); }else { answer.add(arr2[p2++]); } } while(p1<num) { answer.add(arr[p1++]); } while(p2<num2) { answer.add(arr2[p2++]); } return answer; } public static void main(String[] args) { Scanner sc= new Scanner(System.in); int num=sc.nextInt(); IN_3_1 i3= new IN_3_1(); int []arr= new int[num]; for(int i=0; i<num; i++) { arr[i]=sc.nextInt(); } int num2=sc.nextInt(); int []arr2= new int[num2]; for(int i=0; i<num2; i++) { arr2[i]=sc.nextInt(); } for(int x:i3.soultion(num, num2, arr, arr2)) { System.out.print(x+ " "); } }}처음 배열 갯수 입력받는 부분에서java.lang.ArrayIndexOutOfBoundsException:익셉션이뜨는데어느부분이 잘못됐는지 잘 몰라서 질문드립니다..
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
String, ArrayList 런타임 에러 질문
import java.util.*; public class Main { public String solution(int n, int k, int[] num) { HashMap<Integer, Integer> tmp = new HashMap<Integer, Integer>(); String result=""; int lt=0, rt=k; for(int i=0; i<k; i++) { tmp.put(num[i], tmp.getOrDefault(num[i], 0)+1); } result += tmp.size() + " "; for(int i=lt; i<n-k; i++){ tmp.put(num[lt], tmp.get(num[lt])-1); if(tmp.get(num[lt]) == 0) tmp.remove(num[lt]); lt++; tmp.put(num[rt], tmp.getOrDefault(num[rt], 0)+1); rt++; result += tmp.size() + " "; } return result; } public static void main(String[] args) { Main T = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int k = in.nextInt(); int[] num = new int[n]; for(int i=0; i<n; i++) { num[i] = in.nextInt(); } System.out.print(T.solution(n, k, num)); } } 안녕하세요.질문이 있어 게시판에 글 남깁니다!위의 코드는 제가 작성한 코드인데 로직은 강사님의 설명과 같습니다.유일한 차이점은 결과값을 return 하는 부분이 강사님은 ArrayList에 담아서 출력하였고,저는 String에 담아서 += 으로 이어붙여서 출력하였는데타임리밋에러가 발생하여 String과 ArrayList 시간 소요 차이가 왜 그렇게 나는지 궁금하여 문의 남깁니다.제 생각에는 ArrayList 출력 구문은 for문도 한 번 더 돌아야 하기 때문에 만약 answer값이 굉장히 길다면 소요시간도 오래걸릴거라 생각하고 바로 string에 담아 출력했는데 예상과 달라 문의 남깁니다.답변 주시면 감사합니다!
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
그래프 최단거리 (BFS) 질문
안녕하세요 강사님. 저 혼자 level로 풀었을땐 답이 잘 나왔는데 선생님의 div[]를 이용한 코드를 분명히 똑같이 작성했는데 div[] 값들이 0에서 바뀌질 않습니다. 디버깅을 해봤더니 이런 오류? 가 뜹니다. 제가 뭘 놓친걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Map 사용 이유 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 항상 강의 잘 듣고 있습니다.이번 문제의 경우에는 문자의 아스키코드값을 이용한다면 배열을 이용해서도 풀 수 있는데, Map을 사용하여 해결하셨습니다.혹시 그 이유가 배열의 인덱싱 속도보다 , Map의 key-value 매칭 속도가 더 빨라서 , 추후에 시간 제한이 많이 걸린 문제에 더 유용하기 때문인지 여쭤보고 싶습니다.감사합니다.