월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션 8.15 피자배달거리 시간초과
안녕하세요, 피자 배달거리 질문드립니다.처음에는 제가 강의에서 풀어주신 코드와 유사한 방식으로 작성했었는데 정답은 맞게 나오지만 제출해보면 자꾸 시간 초과가 떠서..강의를 보면서 완전히 같은 코드로 고쳐봤는데도 시간 초과가 뜨네요ㅠㅠ혹시 이 코드에 문제점이 뭔지 답변 주시면 감사하겠습니다!import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Points { int x,y; Points(int x, int y) { this.x= x; this.y = y; } } public class Main { static int n, m, len = 0; static int answer = Integer.MAX_VALUE; static int[] ch; static List<Points> pizzaDis, homes; // 피자 배달거리 public static void main(String[] args) { Scanner in = new Scanner(System.in); n = in.nextInt(); m = in.nextInt(); pizzaDis = new ArrayList<>(); homes = new ArrayList<>(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int num = in.nextInt(); if (num == 2) { pizzaDis.add(new Points(j, i)); } else if (num == 1) { homes.add(new Points(j,i)); } } } len = pizzaDis.size(); ch = new int[m]; dfs(0,0); System.out.println(answer); } static void dfs(int level, int start) { if (level == m) { int sum = 0; for (Points h : homes) { int min = Integer.MAX_VALUE; for (int p : ch) { min = Math.min(min, Math.abs(h.x - pizzaDis.get(p).x) + Math.abs(h.y - pizzaDis.get(p).y)); } sum += min; } answer = Math.min(sum, answer); } else { for (int i = start; i < len; i++) { ch[level] = i; dfs(level + 1 ,start + 1); } } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 풀이방법 혹시 틀렸을까요?
public class Number4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = scanner.nextInt(); List<String> array = new ArrayList<>(); for (int i = 0; i <= count; i++) { array.add(scanner.nextLine()); } for (String str : array) { Deque<Character> stack = new ArrayDeque<>(); for ( char c : str.toCharArray()){ stack.push(c); } while (!stack.isEmpty()){ System.out.print(stack.pop()); } System.out.println(); } } } 위 풀이방법처럼 풀었는데 이게 컴파일 에러가 나는데 혹시 이 풀이방법이 문제점을 가지고 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
합이 같은 부분 집합 문제 질문 드립니다.
안녕하세요, 강의 잘 듣고 있습니다.작성한 코드 실행 시 테스트 케이스 4번에서만 오답처리 되어 확인을 해봤습니다.4번째 테스트 케이스인 9, [3 6 13 11 7 16 34 23 12] 를 입력한 후 디버깅을 해본 결과실제로 중복집합이 발생하는 것으로 확인됐습니다.제 코드 상에 어떤 부분이 문제가 됐는지 알고 싶습니다.import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { static int level; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int size = sc.nextInt(); int max = 0; int dep[] = new int[size + 1]; level = size; for (int i = 1; i < dep.length; i++) { int val = sc.nextInt(); dep[i] = val; if (val > max) { max = val; } } int[] check = new int[max + 1]; Map<Integer, Integer> map = new HashMap<>(); dfs(1, check, dep, map); Collection<Integer> values = map.values(); boolean duplicate = false; for (int i : values) { if (i != 1) { System.out.println("YES"); duplicate = true; break; } } if (!duplicate) { System.out.println("NO"); } } public static void dfs(int l, int check[], int[] depth, Map<Integer, Integer> map) { if (l == level + 1) { int sum = 0; for (int i = 1; i < check.length; i++) { if (check[i] == 1) { sum += i; } } if (sum > 0) { map.put(sum, map.getOrDefault(sum, 0) + 1); System.out.println("Sum: " + sum + ", Count: " + map.get(sum)); } } else { check[depth[l]] = 1; dfs(l + 1, check, depth, map); check[depth[l]] = 0; dfs(l + 1, check, depth, map); } } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
IDE 에서는 정상동작 사이트에서는 오답
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 열심히 듣고있는중입니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class Main { public static void main(String[] args) throws IOException { Main T = new Main(); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int num = Integer.parseInt(br.readLine()); int[] nums = Stream.of(br.readLine().split(" ")) .mapToInt(Integer::parseInt) .toArray(); // System.out.println(Arrays.toString(T.solution(num, nums))); int[] result = T.solution(num, nums); String output = Arrays.stream(result) .mapToObj(String::valueOf) .collect(Collectors.joining(" ")); System.out.println(output); } private int[] solution(int num, int[] nums) { List<Integer> list = new ArrayList<>(); for (int i : nums) { if (i >= num) { list.add(i); } } return list.stream() .mapToInt(Integer::intValue) .toArray(); } } 위와 같이 풀었는데 IDE에서는 잘 동작하는데 사이트에서 오답으로 처리되는 이유 좀 알수있을까요,, ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
LIS 관련 질문입니다.
안녕하세요.가장 높은 탑 쌓기 문제에서는 정렬을 해주었는데요! 직전 LIS 문제에서는 정렬을 따로 해주지 않았더라구요.물론 직전 문제에서 정렬을 한다면 알고리즘을 적용할 이유는 없지만, 굳이 정렬을 안 한 이유를 꼽자면 위치를 바꿀 수 없는 완성된 수열이 입력으로 들어왔다는 가정이기 때문인지 궁금합니다. 읽어주셔서 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대부분증가수열(LIS) 오답 질문
이번 강의 코드와 100% 유사한 백준 문제가 있어서 풀었는데 98%에서 오답처리 되었습니다.강사님의 강의를 이해하고 풀다보니 강의와 코드가 똑같은데 왜 오답이 나오는건가요?? https://www.acmicpc.net/problem/11053제 코드는 이렇습니다.import java.util.*; class Main { 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(); int[] dp= new int[n]; int answer=0; dp[0]=1; //solve for(int i=1; i<n; i++){ int tmp=0; for(int j=i-1; j>=0; j--){ if(arr[i] > arr[j]) tmp=Math.max(tmp, dp[j]); } dp[i]=tmp+1; answer=Math.max(answer,dp[i]); } System.out.println(answer); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3.2 공통원소 구하기 에서 질문입니다.
샘플문제는 정답인데, 채점사이트에서는 오답으로 나오네요.어디가 잘못되었는지 못찾겠습니다. import java.util.*;class Main { public ArrayList<Integer> solution(int n, int[] arr1, int m, int[] arr2) {ArrayList<Integer> answer = new ArrayList<>(); Arrays.sort(arr1);Arrays.sort(arr2); int p1=0, p2=0; while(p1<n && p2<m) {if(arr1[p1]==arr2[p2]) {answer.add(arr1[p1]++);p2++;}else if(arr1[p1]<arr2[p2]) p1++;else p2++;}return answer;}
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정렬
안녕하세요 코드보고 공부하다가 궁금한 점이 생겨서 질문 남깁니다.문제에서 가수가 라이브한 곡 순서대로 부른곡의 길이가 분 단위로 나타난다고 하였습니다.예시에서는 오름차순으로 잘 정렬되어있지만 가수가 라이브한 곡들의 길이가 뒤죽박죽되어있을때도 있을것을 고려해 배열을 정렬해준뒤 강사님의 풀이랑 똑같은 풀이를 적용하였는데 오답이라고 떴습니다.정렬메소드가 들어가면 왜 오답이 뜨는지 궁금합니다 !
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3. 문장속단어 BufferedReader
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); String tmp=""; for(String s:arr) { if(s.length()>tmp.length()) tmp = s; } System.out.println(tmp); }}BufferedReader 사용하면 결과가 pending이라고 뜨는데, 풀이가 잘못된 걸까요? 아님 BufferedReader사용때문에 그런걸까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
큐로 구현
큐로 구현해서 사이트상 통과는 됐는데 혹시 코드 리뷰 부탁드려도될까요..?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
LinkedList를 사용해서 풀어도 되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.package sorting; import java.util.LinkedList; import java.util.Scanner; public class LRUMain { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int s = scanner.nextInt(); int n = scanner.nextInt(); LinkedList<Integer> cache = new LinkedList<>(); int[] tasks = new int[n]; for (int i = 0; i < n; i++) { tasks[i] = scanner.nextInt(); } for (int task : tasks) { if (cache.contains(task)) { cache.remove(cache.indexOf(task)); } cache.addFirst(task); if (cache.size() > s) { while (cache.size() > s) { cache.removeLast(); } } } for (int element : cache) { System.out.print(element+" "); } } }위 방식으로 접근해도 되나요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코딩테스트 초보자 .. 입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요:) 강의 너무 잘듣고있습니다.혹시 실제 프로그래머스 툴로 코딩테스트를 본다면,빌트인 함수 (예, Character.isAlphabetic..) 들은이클립스타 인텔리제이처럼 자동완성 되나요? 검색은 안될지라도.. 혹 Java api docs 라도 제공 되는지 궁금합니다.
- 해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
nx,ny에 대한 질문
if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]) {flag = false;break;}이 조건에 대해 질문이 있습니다.nx>=0 && nx<n && ny>=0 && ny<n 이것이 가장자리를 찾는 조건식인 것은 알겠습니다.그런데 if조건식이 and연산자로 이루어져있어서 하나라도 false이면 if문이 돌아가지 않는것으로 알고있습니다.그럼 가장자리에 있는 값들 중에 arr[i][j]보다 큰 값들만 if문을 돌면서 flag를 false로 주는 것인데가장자리가 아니면서 arr[i][j]보다 큰 값들은 어디서 비교를 하나요?? 또, arr의 n의 개수를 그냥 n으로 잡으면 가장자리를 0으로 초기화를 언제 시키는 것인지 궁금합니다 제가 처음 풀었을때 arr을 arr[n+2][n+2]로 잡고 (i=1;i<n;i++)로 이중for문을 돌려 풀었습니다 이렇게 풀어도 되는건가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임오류
import는 하였습니다.런타임오류가 나는데 어느부분에서 잘못된 것인가요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문자열 길이 제한
안녕하세요 강의 듣다가 문자열의 길이 100의 제한이 코드에서는 적용되지 않는 것인지 궁금해서 질문 남깁니다
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
탐색문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 탐색문제를 공부하고싶은데탐색문제라고 하면 몇 몇 섹션이 해당하는지 알 수 있을까요?
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
comparable관련 질문입니다.
안녕하세요.씨름선수 문제를 풀다가 궁금한 점이 생겨 글남깁니다. comparable 을 구현하여 compareTo를 정의할 때 선행원소 - 후행 원소 가 음수이면 자리를 바꾸지 않고, 양수이면 자리를 바꾸는 것으로 알고 있습니다.문제 코드를 예시로 들어서 return this.h - o.h 라면 선행원소가 this.h 이고 후행원소가 o.h 라는 것은 어떻게 알 수 있나요? 물론 외우면 되긴 하지만 원리가 궁금합니다. 두서 없는 글 읽어주셔서 감사합니다.
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 확인 부탁드립니다 ㅠ
import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] arr = new int[n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { arr[i][j] = sc.nextInt(); } } int m = sc.nextInt(); int[] moves = new int[m]; for(int i = 0; i < m; i++){ moves[i] = sc.nextInt(); } ArrayList<Stack<Integer>> board = new ArrayList<>(); for(int i = 0; i < n; i++) { Stack<Integer> temp = new Stack<>(); for(int j = 0; j < n; j++) { if(arr[n-1-j][i] == 0) break; temp.push(arr[n-1-j][i]); } board.add(temp); } Stack<Integer> basket = new Stack<>(); int result = 0; for(int i = 0; i < m; i++) { int num = moves[i]-1; Stack<Integer> stack = board.get(num); if(stack.empty()) continue; int popNum = stack.pop(); if(!basket.isEmpty() && basket.peek() == popNum) { basket.pop(); result += 2; } else { basket.push(popNum); } } System.out.print(result); } }어느 부분에서 틀린지 모르겠습니다. 확인 해주시면 감사하겠습니다.ㅠㅠ
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
아나그램 문제 런타임에러
안녕하세요 강사님. 해쉬맵 아나그램문제 런타임에러가 나서 채점이 되지않은데 왜 그런지 모르겠습니다.. import java.util.HashMap; import java.util.Scanner; public class Main { public String solution( String str1, String str2){ String answer = "YES"; HashMap<Character,Integer> str1map = new HashMap<>(); //문자열을 순회하며 알파벳을 개수를 세기 for(char key: str1.toCharArray()){ str1map.put(key,str1map.getOrDefault(key,0)+1); } //문자열을 순회하며 map에서 count 하나씩 제거 for(char key: str2.toCharArray()){ //str1에 있는 문자열이 str2에는 없거나 갯수가 0인경우 아나그램이 아님 if(!str1map.containsKey(key) || str1map.get(key) == 0) answer = "NO"; str1map.put(key,str1map.get(key)-1); } return answer; } public static void main (String[]args){ Main main = new Main(); Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); System.out.print(main.solution(str1, str2)); } }
- 미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
왜 시간초과가 나는지 모르겠습니다.
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class 매출액의_종류 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int k = scan.nextInt(); int[] arr = new int[n]; for(int i=0;i<n;i++){ arr[i] = scan.nextInt(); } System.out.println(mySol(n,k,arr)); } private static String mySol(int n, int k, int[] arr) { String result = ""; Map<Integer,Integer> map = new HashMap<>(); for(int i=0;i<k-1;i++){ map.put(arr[i],map.getOrDefault(arr[i],0) + 1); } int lt = 0; for(int rt=k-1;rt<n;rt++){ map.put(arr[rt],map.getOrDefault(arr[rt],0) + 1); result += map.size() + " "; map.put(arr[lt], map.get(arr[lt]) - 1); if(map.get(arr[lt]) == 0) map.remove(arr[lt]); lt++; } return result; } }