묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-A와 비교해서 6-B의 while 문 내부 궁금한 점
while(lo <= hi){int mid = (lo + hi) / 2;if(check(mid)){hi = mid - 1;ret = mid;}else lo = mid + 1;}여기서 ret을 찾는 과정(ret=mid)이 조건을 만족하는 최소의 ret을 찾는 과정인가요? ret=min(ret,mid) 필요 없나요?사실 잘 이해가 안되네요ㅠㅠ6-A 는 ret=min(ret,mid)이런 걸 했는데 여기는 없어서요
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
combinations 사용
#import sys from itertools import combinations #sys.stdin=open("input.txt", "rt") N, K = map(int, input().split()) num_list = list(map(int, input().split())) total = 0 sum_list = [] for i in combinations(num_list, 3): total = sum(i) sum_list.append(total) sum_list.sort(reverse=True) print(sum_list[K-1])3중 for문 말고 combinations을 사용했는데 채점 시스템에서 오류가 뜹니다 ㅠㅠ 혹시 코드 문제점을 알 수 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
테스트 케이스 10, 20 은 맞는데 30부터오답이에요
package array; import java.util.Arrays; import java.util.Scanner; public class Peaks_10 { static int solution(int n, int[][] arr) { int cnt = 0; for(int i=1; i <= n; i++) { for(int j = 1; j <= n; j++) { int target = arr[i][j]; // target과 상 하 좌 우 중 큰 값을 찾는 삼항연산자. int up = target > arr[i-1][j] ? target : arr[i-1][j]; int down = target > arr[i+1][j] ? target : arr[i+1][j]; int left = target > arr[i][j-1] ? target : arr[i][j-1]; int right = target > arr[i][j+1] ? target : arr[i][j+1]; // 상 하 좌 우 모두 target일 경우 cnt 값 증가 if(target == up && target ==down && target == left && target == right) { cnt++; } } } return cnt; } public static void main(String[] args) { 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++) { int num = sc.nextInt(); arr[i][j] = num; } } System.out.println(Peaks_10.solution(n,arr)); } }
-
미해결자바(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; } } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
반례가 궁금합니다.
클래식한 방법으로도 풀어보고 싶어서 완전탐색으로만 풀어봤습니다.http://boj.kr/4a9402fdc35849379ffcb1f72c8c1016우선 변수명을 대충 지어서 설명 드리자면v는 2차원벡터로 데이터 저장하고 combi는 조합을 구하는 벡터입니다. 조합을 1개부터 N개까지 다 구하고 check하는 함수로 보내는 로직입니다.vmin은 영양소 최소값 모아둔 벡터입니다. ans는 식품의 idx를 저장하는 벡터입니다. value는 현재 최저 가격입니다.check하는 함수에서 value와 price를 비교해서 (이전 최저가격과 현재 측정가격) 같으면 사전순 정렬을 위해 ans와 combi 벡터를 비교해서 바꿔주도록 설정했습니다만.. 80%부분에서 계속 틀려서 답답합니다 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
toString으로 변환하여 비교해서 풀어 보았습니다.
문제를 이해를 잘 못한건지, 저는 날짜가 먼저 3일,13일, 23일이 올 수 있고 그걸 일의자리 수를 알아낸 후 비교하여 풀었습니다. function solution(day, arr) { let answer; let waringCars = []; const checkDay = day.toString().length === 1 ? day.toString() : day.toString()[1]; arr.map((cars) => { if (cars.toString()[1] === checkDay) waringCars.push(cars); }); return waringCars.length; } const day = 23; let arr = [25, 23, 11, 47, 53, 17, 33]; console.log(solution(day, arr));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
map함수를 이용하여 풀어보았습니다.
map함수를 이용하여 풀어보았습니다.function solution(arr) { let sum = 0; let oddNumbers = []; arr.map((value) => { if (value % 2 === 1) { sum += value; oddNumbers.push(value); } }); return [sum, Math.min(...oddNumbers)]; } let arr = [12, 77, 38, 41, 53, 92, 85]; console.log(solution(arr));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스프레드 연산자로 문제를 풀어 보았어요
풀고 난 후 강의를 보니 for문으로 풀었어야 됬나 싶군요. function solution(arr) { return Math.min(...arr); } let arr = [5, 7, 1, 3, 2, 9, 11]; console.log(solution(arr));
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 111000이랑 000111은 결과 같지만 두번 계산 하는건가요
네5-K는 어려워서 아무도 질문이 없나 보네요 ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-G while(1)문 내부를 이렇게 하면 왜 안될까요?
if(hi==p)break; if(sum<n)sum+=a[hi++]; else sum-=a[lo++]; if(sum==n)ret++;왜 순서를 바꾸면 오류가 날까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A와 C는 거의 같은문제인가요?
네
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
큰돌님의 알고리즘 선생님은 어느 분 이셨나요?
1700문제 푸시면서 본인 스스로 깨우치신건가요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
선생님 enumerate 를 사용해서 푸는 것과 차이가 있을까요?
저는 선생님과는 다르게 enumerate() 를 사용해서 풀었는데요!혹시 선생님이 푼 방법과 제가 푼 방법중 좀더 효율적이고 좋은 코드는 어떤것인가요? 차이가 좀 궁금합니다. def solution(nums): answer = 0 min = 100_000 for idx, _ in enumerate(nums): if nums[idx] < min: answer = idx min = nums[idx] return answer print(solution([7, 10, 5, 3, 2, 15, 19])) print(solution([-12, 12, 30, -15, -5, 3, 9, -11, 14])) print(solution([17, 11, 5, 8, 23, 29, 19, 12, 25, 16, 2])) print(solution([7, 5, 12, -9, -12, 22, -30, -35, -21]))
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I 문제 백준에 1620번 검색했는데 나오지가 않네요...
1-I 문제 백준에 1620번 검색했는데 나오지가 않네요...혹시 몇 번 문제인지 알 수 있을까요...
-
미해결자바(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)); }}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과 문제
안녕하세요, 시간초과가 나서 질문드립니다.http://boj.kr/8e5586c64a774c39bac19c6aa002074f 제 로직은 다음과 같습니다.2차원 벡터로 사다리를 표현합니다. 다만 각 행열의 값은 0일 경우 이어진 사다리가 없고, 값을 가질 경우 index+1의 value를 가집니다. 즉 (0,0)-(0,1) 사이에 사다리가 있을 경우 (0,0)=2, (0,1)=1을 갖습니다.뽑을 수 있는 사다리의 조합을 구합니다. 이는 벡터의 현재 값과 다음 값이 모두 0이면 후보군 벡터에 추가합니다. (코드에선 parti입니다.)parti 벡터를 0부터 3까지 조합을 구합니다. 후보군 중 0개, 1개, 2개, 3개 를 뽑는 모든 조합을 구합니다.조합을 만들 때 연속된 사다리는 피했습니다.조합이 완성될 경우 check 함수를 호출하여 사다리 타기를 진행합니다.이런 플로우를 갖고있고, 이렇게 풀 경우 백트래킹도 필요가 없기에 오히려 적은 연산을 할 거라고 생각했습니다. (아니면 비슷하거나) 하지만 시간초과가 발생하기에 질문드립니다.디버깅을 해보니 조합은 제대로 뽑히고 있습니다. 필요없는 연산은 딱히 없어보이는데 무슨 문제가 있을까요?+) 백트래킹이란 말을 그냥 완전탐색을 진행하되 중간에 답이 나오면 끝내겠다. 혹은 기존의 답보다 깊게 탐색이 진행되는 것을 막겠다. 라는 것으로 이해했는데 이게 맞는건가요? 그렇다면 보통은 다들 그런 식으로 구현할텐데 굳이 백트래킹이란 단어를 쓰는 이유는 뭘까요..?감사합니다.
-
미해결자바(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] 문과생도 이해하는 DFS 알고리즘! - 입문편
answer++ 위치 질문
// 1. dfs 실행 int answer = 0; for(int i = 1; i <= N; i++) { for(int j = 1; j <= M; j++) { if(visited[i][j] == false) dfs(i, j); answer++; } }안녕하세요.dfs문을 호출한 이후에 answer++;를 했을 때는, 주어진 값과 다르게 나오는데, 어떤 부분에서 차이가 있는지 궁금합니다.. 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A 이런 아이디어 못내겠는데
그냥 많이 풀어서 많은 경험해서 코테 보는 수 밖에 없나요?