월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
중복문자 제거 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.import java.util.Arrays;import java.util.List;import java.util.Scanner;public class Main { public String solution(String str) { String[] arr = str.split(""); List<String> list = Arrays.asList(arr); List<String> resultList = list.stream().distinct().toList(); StringBuilder answer = new StringBuilder(); for (String s : resultList) { answer.append(s); } return answer.toString(); } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); String str = kb.nextLine(); System.out.println(T.solution(str)); }} 위 코드가 저의 개발환경에서는 돌아가는데 채점서비스에서는 컴파일에러가 뜹니다ㅜ원인을 잘 모르겠습니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
레벨로 풀기 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.강사님께서 강의 도중 2차원 문제일 경우 레벨로 푸는게 힘들다고 하신 이유가 궁금합니다. 다른 분들이 숙제검사 맡으신 것처럼 레벨로 푸는 것 역시 배열을 새로 만들어서 값을 저장하기때문에 2차원 문제도 레벨을 통해 거리를 구하고 2차원 배열에 저장하는 방법으로 풀리지 않나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
가장 높은 탑 쌓기
코드가 왜 오답인지 잘 모르겠습니다ㅠㅠimport java.util.ArrayList; import java.util.Collections; import java.util.Scanner; class Block implements Comparable<Block> { int a; int h; int w; public Block(int a, int h, int w) { this.a = a; this.h = h; this.w = w; } @Override public int compareTo(Block o) { return o.a - this.a; } } class Main { static int[] dy; static int[] dis; public int solution(ArrayList<Block> arr, int n) { int answer = 0; Collections.sort(arr); dy[0] = 1; dis[0] = arr.get(0).h; for (int i = 1; i < n; i++) { int max = 0; int max_h = 0; for (int j = i - 1; j >= 0; j--) { if (arr.get(j).w > arr.get(i).w && dy[j] >= max && dis[j] > max_h) { max = dy[j]; max_h = dis[j]; } } dy[i] = max + 1; dis[i] = max_h + arr.get(i).h; answer = Math.max(answer, dis[i]); } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); ArrayList<Block> arr = new ArrayList<Block>(); dy = new int[n]; dis = new int[n]; for (int i = 0; i < n; i++) { int a = kb.nextInt(); int h = kb.nextInt(); int w = kb.nextInt(); arr.add(new Block(a, h ,w)); } System.out.println(T.solution(arr, n)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
임시 반장 - break를 하는 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요~제가 문제의 요지를 잘 파악 못해서 그런거 같은데 break를 하는 이유가 뭔지 잘 이해가 안됩니다.7:50부분저같은 경우는 2학년(k)때 3번학생(j)과 4번학생(i)이 같고3학년(k)때도 3번학생(j)과 4번학생(i)이 같은 경우를 카운팅 했었는데요break를 해야 한다는걸 문제의 어떤 줄을 보고 바로 깨달을 수 있을까요? 같았던 횟수를 구하는게 아니고, 같았던 학생의 명수를 구하는거라서 한번 같았으면 break하는거라고 이해하면 되는게 맞을까요? 다시 말해서, i와 j가 고정된 상태에서 k를 순회하는 중에 한번이라도 같으면 break를 하면 되는건가요? -- 그리고 추가 질문으로if ( i != j )를 안해도 된다고 하셨는데, 이 조건문을 추가함으로써 순회하는 과정을 일부 제외해서 성능이 더 좋아지지 않을까 생각해보는데 이런 생각도 맞는지 궁금합니다! 이미 for문의 조건문으로 설정된 부분이라 if문을 걸어도 시간복잡도에 영향은 없나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
임시반장 오답케이스가 되는 이유를 잘 모르겠습니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의를 듣기전에 풀었는데, 3개는 맞는데, 정확도가 떨어지는 코드라고 나와서 왜 해당 코드가 오답케이스가 있는지 잘 모르겠습니다 ㅠㅠ혹시 어디가 잘못된건지 여쭤봐도 될까요?package Array.임시반장_정하기; import java.util.HashSet; import java.util.Scanner; import java.util.Set; public class Main { public int solution(int n, int[][] arr) { int answer = 0; Set<Integer> duplicates = new HashSet<>(); for (int i = 0; i < 5; i++) { for (int j = 0; j < n; j++) { int duplicate = arr[j][i]; for (int k = 0; k < n; k++) { if (duplicate == arr[k][i] && j != k) { duplicates.add(arr[k][i]); } } } } if (duplicates.isEmpty()) return answer+1; for (int i = 0; i < n; i++) { int count = 0; for (int j = 0; j < 5; j++) { for (int x:duplicates) { if (x == arr[i][j]) count ++; } if (count == duplicates.size()) { answer = i; break; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][5]; for (int i = 0; i < n ; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(T.solution(n,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
봉우리 문제 질문있습니다. 강의와 다르게 풀어서 맞았는데 확장성? 이나 활용도에서 문제가 발생하는지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의듣기 전에 풀이해본 내용인데요! 관련해서 질문이 있습니다! 아래 코드 처럼 풀었는데,경계값을 해주는걸 solution 내부 함수에서 해주는게 아니고, 입력값에서 배열 사이즈 조정하는걸로 풀면 다른 활용문제에서 어떤 문제가 발생할지 궁금합니다!저는 행, 열에 각각 +1, -1 해주면서 찾았는데, 이렇게 하면 강의에서 말씀하신 대각선 값 비교할때 문제가 있을까요?대각선의 경우 분기처리할때 각행과 열에 (-1, +1 ) (-1, -1) (+1, +1), (+1, -1)추가해서 체크해주는게 다른 활용 문제에서 어떤 문제가 발생할지 궁금합니다! 문제는 없지만 비효율적이고 가독성이 안좋아서 그런걸까요?3중 포문으로 하면 시간복잡도가 O(n^3)가 되서 성능이 떨어지는거 아닌지 궁금합니다. 아래 코드로 하면 O(n^2)이라서 더 빠를 것 같았는데 강의로 알려주신 코드보다 12ms 더 느리더라구요!import java.util.Scanner; public class Main { public int solution(int n, int[][] arr){ int answer = 0; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int tmp = arr[i][j]; // 첫째줄 조건은 열 체크. 둘째줄 조건은 행 체크 if (tmp > arr[i][j+1] && tmp > arr[i][j-1] && tmp > arr[i+1][j] && tmp > arr[i-1][j]) { answer ++; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n+2][n+2]; for (int i = 1; i <= n ; i++) { for (int j = 1; j <= n; j++) { arr[i][j] = sc.nextInt(); } } System.out.println(T.solution(n,arr)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
구간을 나누어 조건부로 처리해보았습니다 크크
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String word = sc.next(); char chr = sc.next().charAt(0); System.out.println(solution(word, chr)); } public static String solution(String word, char chr) { String answer = ""; List<Integer> list = new ArrayList<>(); for (int i = 0; i < word.length(); i++) { if (word.charAt(i) == chr) list.add(i); } int index = 0; for (int i = 0; i < word.length(); i++) { if(i == list.get(index+1) && i!= list.get(list.size()-1)) index++; if(i < list.get(0)) answer += list.get(0)-i; else if(i == list.get(index)) answer += 0; else if(i > list.get(list.size()-1)) answer += i - list.get(list.size()-1); else answer += Math.min((i-list.get(index)), (list.get(index+1)-i)); answer += " "; } return answer; } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요 ㅠㅠ 질문 있습니다
안녕하세요~ 이제 코테 처음 시작하는 코린이인데요..궁금한 점 2가지가 있어서 답변해줬으면 합니다 ㅠㅠ1. 문제를 푸는 과정 중에 본인이 짠 코드 퀄리티가 많이 떨어지더라도 그 코드가 정답이 되면 그래도 괜찮은지? (물론 답안과 비교해가며 피드백은 필수겠지만요)2. 문제를 풀어주신 답안에서 쓰인 여러 메소드들은 외워두는게 맞는지? 아니면 검색을 이용해서 사용할 줄만 아는 정도인지?에를 들어 문제 1-01에서 str.toUpperCase(), Character.toUpperCase(t), str.toCharArray() 이런 메소드들을 무조건 손에 익을때까지 외워서 사용할줄 알아야 하는지??정 외우기가 힘들면 어떻게 코드가 돌아가는지.. 사용방법만 알고 이러한 문제상황에 맞는 활용 메소드들을 검색(구글링)을 통해 찾을 줄 알아야 하는 역량이 필요한지 궁금합니다 ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
냅색알고리즘(최대점수 구하기)질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 입력값 n과m의 최대가 (50*300 = 15000)이라서 브루트포스 (15000 * 15000 = 1억초과)를 사용하지 못하는 건가요???
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
아래와 같이 풀었습니다! 리뷰 부탁드립니다...!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래와 같이 풀었는데 이런식으로 풀어도 될까요...? 정답이긴하더라구요import java.util.*; public class Main{ public static void main(String[] args){ Main T = new Main(); Scanner in = new Scanner(System.in); String word = in.next(); String target = in.next(); System.out.println(T.solution(word, target));; } public String solution(String word, String target){ String answer = ""; char[] charArray = word.toCharArray(); List<Integer> targetAtList = new ArrayList<>(); for(int i = 0; i < charArray.length; i++){ if(Character.toString(charArray[i]).equals(target)){ targetAtList.add(i); } } for(int i = 0; i < charArray.length; i++){ List<Integer> valueList = new ArrayList<>(); for(int j : targetAtList){ valueList.add(Math.abs(i-j)); } int min = Collections.min(valueList); answer += Integer.toString(min); if(i != charArray.length-1) answer += " "; } return answer; } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션 4-1 getOrDefault 메서드가 undefined에러가 떠요
구글링해보니 자바8이상이면 메서드 쓸 수 있다는데 저는 자바 11버전이거든요 왜 이럴까요ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-10 가장 짧은 문자거리 문제에서 어디가 틀린걸까요?
강사님이 설명해주신 방법이랑 조금 다르게 풀었는데, 계속 오답이 나와서 문의드립니다.어느 부분이 틀린 건지 못찾겠습니다도와주세요..import java.util.Scanner; public class Main { public int[] solution(String str, char c){ int tmp=0; int[] answer = new int[str.length()]; for(int i=0; i<str.length(); i++) { if(str.charAt(i)!=c) { tmp++; } else { tmp=0; } answer[i] = tmp; } for(int i=0; i<answer.length-1; i++) { if(answer[i]!=0 && answer[i+1]==0) { int arrayTmp = answer[i]; for(int j=0 ; j<arrayTmp/2 ; j++) { answer[i-j] = 1 + j; } } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); String str = scanner.next(); char c =scanner.next().charAt(0); for(int a : T.solution(str, c)) { System.out.print(a+ " "); } } }
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
격자판 최대합 테스트 케이스 5번 통과가 안되요
import java.util.Scanner; public class GetMaxSumOfGridPlate { public static void main(String[] args) { Scanner in = new Scanner(System.in); int arrLen = in.nextInt(); int[][] arr = new int[arrLen][arrLen]; for(int i = 0; i < arrLen; i++) { for(int j = 0; j < arrLen; j++) { arr[i][j] = in.nextInt(); } } System.out.println(getMaxSumOfGridPlate(arr)); } static int getMaxSumOfGridPlate(int[][] grid) { int max = 0; int diagonal1 = 0; int diagonal2 = 0; for(int i = 0; i < grid.length; i++) { int sum1 = 0; int sum2 = 0; for(int j = 0; j < grid.length; j++) { sum1 += grid[i][j]; sum2 = grid[j][i]; if(i == j) { diagonal1 += grid[i][j]; } } diagonal2 += grid[i][grid.length - i -1]; int sum = Math.max(sum1, sum2); max = max < sum ? sum : max; } int diagonal = Math.max(diagonal1, diagonal2); return max > diagonal ? max : diagonal; } } 제가 풀었는데 선생님께서 풀어주신 내용과 아이디어는 비슷하다고 생각했습니다다만 5번 테스트케이스에서 통과가 안되어서 코드에 오류가 있는거 같은데문제를 찾기가 너무 어렵습니다.어느 부분이 틀렸을까요? ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
if문 내용 중에서 nx조건식에 대한 질문입니다..
nx>=0 은 이해됩니다.조건식을 음수로 좌표를 찍었을때 예외처리가 생기니까 조건을 준건 이해가되는데nx < n가 이해가 잘 안됩니다..nx가 무조건 0이상의 정수일때 nx가 n보다 크거나 같아질 수가 있는건가요?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드를 이렇게 작성하면 문제가 될까요?
public class GetMinimumDistance { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.next(); char ch = in.next().charAt(0); System.out.println(getMinimumDistance(str, ch)); return; } public static String getMinimumDistance(String str, char ch) { List<Integer> distanceList = new ArrayList<Integer>(); for(int i = 0; i < str.length(); i++) { String beforeStr = str.substring(0, i); StringBuilder sb = new StringBuilder(beforeStr); beforeStr = sb.reverse().toString(); String afterStr = str.substring(i); int beforeDistance = beforeStr.indexOf(ch) + 1; int afterDistance = afterStr.indexOf(ch); if(beforeStr.length() == 0 || beforeDistance == 0) beforeDistance = Integer.MAX_VALUE; if(afterStr.length() == 0 || afterDistance == -1) afterDistance = Integer.MAX_VALUE; distanceList.add(beforeDistance < afterDistance ? beforeDistance : afterDistance); } String answer = ""; for (int dis : distanceList) { answer += Integer.toString(dis) + " "; } return answer.substring(0, answer.length() - 1); } } 혹시 이렇게 작성하면 답은 맞는데 고쳐야 할 부분이라든가 있을까 고수님들 확인 부탁드립니다 ㅠㅠ너무 비효율적으로 짠거 같아서요 ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-1번 합이 같은 부분집합 질문 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { static int sum = 0; static int n; static int[] arr; static boolean flag = false; static String answer = "NO"; public static void main(String[] args) throws IOException { Scanner kb = new Scanner(System.in); n=kb.nextInt(); arr = new int[n]; for(int i=0; i<n; i++){ arr[i]=kb.nextInt(); sum+=arr[i]; } DFS(0, 0); System.out.println(answer); } static void DFS(int i, int part_sum){ if(flag == true) return; if(i == n){ if(sum == (sum-part_sum)){ flag = true; answer = "YES"; } } else{ DFS(i+1, part_sum + arr[i]); DFS(i+1, part_sum); } } }위와 같이 코드를 짰습니다.주어진 예제도 잘나오는데 채점사이트에 입력하면 계속 오답이라고 나오네요ㅠㅠ 로직도 똑같은데 뭐가 문제일까요..
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코딩 테스트 고수가 되고 싶습니다.
안녕하세요.선생님 덕분에 점차 고수의 길로 들어서고 있습니다.강의를 듣던 중 공부 방법에 대해 고민이 생겼습니다.제 머리로 그렇겠지~ 하는 것보다는 선생님의 답변을 듣는 것이 나을 거 같아 질문 드립니다. 1) 강의 듣기 전 문제 도전2) 못풀겠으면 강의를 틀고 선생님께서 주시는 힌트를 약간 받아 다시 도전3) 그래도 안된다면 선생님 강의를 듣고 무릎을 탁 침4) 어떠한 문제로 풀지 못했는지 메모5) 바로 다시 풀어보기 현재는 이런 과정을 거치고 있는데요기존 풀어본 문제도 다시 계속 풀어봐야 하나요?오랜만에 다시 풀어보려니까 전에 풀지 못한 문제는 기억이 나지 않는 것들도 있어서요.. 코딩테스트는 무조건 많이 풀어보는게 중요하다! 는 말을 많이 들어서계속 치고 나가는게 좋을지치고 나가는 속도는 좀 더디더라도 복습을 하면서 치고 나가야할지 선생님의 조언을 기다립니다. 저는 현재 인텔리제이에서 연습하고 있는데 괜찮을까요..?
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 확인 부탁드립니다.
package inflearn.ch03; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /* 5. 연속된 자연수의 합(투 포인터) */ public class Problem_5 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] array = new int[N]; for(int i = 0; i < N; i++){ array[i] = i+1; } solution(N,array); } public static void solution(int N, int[] array){ int start = 0; int end = 0; int sum = 0; int count = 0; while (end < N-1){ sum += array[end++]; if(sum == N){ count++; } while (sum >= N){ sum -= array[start++]; if(sum == N){ count++; } } } System.out.println(count); } }강의와 다르게 범위를 줄이지 않고 while 문으로 사용해서 정답 통과를 했는데 나중에 범위가 커지면 문제가 발생할 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
친구인가에서 Union&Find 알고리즘 질문있습니다.
Union 함수에서if (fa != fb) unf[fa] = fb; 해주는 부분이 있는데왜 unf[fb] = fa 를 쓰는 것과의 차이가 있을까요?다른 웹사이트에서 찾아보니깐 fa < fb 일때 unf[fb] = fa하고이외에는 unf[fa] = fb 를 해주는 방식을 채택하고 있길래궁금해서 질문드립니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
PriorityQueue 클래스를 사용해보고 싶은데 뭐 때문에 오류가 나는지 모르겠어요
테스트 5에서 오류가 나던데 뭐가 문제인지를 못찾겠어요ㅠ import java.util.PriorityQueue;import java.util.Queue;import java.util.Scanner;class Person implements Comparable<Person> {int id;int priority;public Person(int id, int priority) {this.id = id;this.priority = priority;}@Overridepublic int compareTo(Person o) {return o.priority - this.priority;}}public class Main {public static int solution(int n, int m, int[] arr) {int answer = 0;Queue<Person> queue = new PriorityQueue<>();for(int i=0; i<n; i++) {queue.offer(new Person(i, arr[i]));}while(!queue.isEmpty()) {Person tmp = queue.poll();answer++;if(tmp.priority == arr[m] && tmp.id == m) {return answer;}}return answer;}public static void main(String[] args){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.println(solution(n, m, arr));}}