묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨글로벌 개발자로 성장하는 < 코딩 실무 영어 /> 마스터 클래스
6분 47초에 Build 첫번째 예제 해석이 제대로 된건가요?
We are building a program that utilizes the latest tech stacks.이 문장에 대한 해석으로 "우리는 최신 기술 스택을 활용해 프로그램을 빌드하고 있습니다."라고 되어있는데,"우리는 최신 기술 스택을 활용하는 프로그램을 빌드하고있습니다."가 올바른 해석 아닌가요? a program that utilizes 니까 프로그램이 최신 기술 스택을 활용하고 있는걸로 봐야하는게 아닌지요...?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
벡터 구조체 이터레이터 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <bits/stdc++.h> using namespace std; struct Point { int y, x; }; bool cmp(const Point &a, const Point &b) { return a.x > b.x; } vector<Point> v; int main() { for (int i = 10; i >= 1; i--) { v.push_back({i, 10 - i}); } sort(v.begin(), v.end(), cmp); for (auto it : v) cout << it.y << " : " << it.x << "\n"; return 0; /* 1:9 2:8 3:7 4:6 5:5 6:4 7:3 8:2 9:1 10 : 0 */ } 질문드립니다해당 vector는 Point를 기반으로 만들어진 벡터임을 알겠는데v.begin()은 이터레이터를 반환하잖아요??(주소값 반환)*v.begin()로 주소안의 값을 확인하려했는데 되지 않아아마 struct 변수가 2개라 무엇을 기준삼지 않아 오류가 나는거같은데혹시 값 반환하는 방법이 있을까요?제가 이해한 내용이 틀렸다면 어떤식으로 이해해야하나요??
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
[5강 재귀] 3번 상담 문제 질문드립니다.
안녕하세요, 강의 너무 잘 듣고 있습니다.5강 최적화 강의의 3번 상담이라는 문제를 푸는데, 제공해주신 답변과 제가 작성한 코드에 차이가 있어 질문드립니다. [모범답안]def recur(idx, result): global answer if idx > n: if idx > n+1: return answer = max(answer, result) return recur(idx + table[idx][0], result + table[idx][1]) recur(idx + 1, result) n = int(input()) table = [[] for _ in range(n+1)] for i in range(n): a, b = map(int, input().split()) table[i+1] = [a, b] # print(table) answer = 0 recur(1, 0) print(answer)[제가 작성한 코드]# 14501 import sys sys.stdin = open('/Desktop/dev/BackJoon/5강_최적화/3_상담.txt','r') input = sys.stdin.readline N = int(input()) arr = [list(map(int, input().split())) for _ in range(N)] def recur(idx, price): global ans if idx >= N: # 배열의 마지막 인덱스를 지나가는 것은 무시 return if idx == N-1: # 배열의 마지막 인덱스 ans = max(ans, price) return recur(idx+arr[idx][0], price+arr[idx][1]) recur(idx+1, price) ans = 0 recur(0,0) print(ans)모범답안과 종료조건이 다른 것을 확인했습니다.제가 생각했을 때, 배열의 마지막 인덱스 (N-1)에서도 하루 짜리 일을 할 수도 있기 때문에 recur를 한번 더 돌수 있고 그 다음 인덱스 N 시점에서 종료되어야 한다고 생각해서 코드를 작성했습니다.혹시 제가 잘못 생각하고 있는 부분이 있을까요? 또한, 제공해주신 답변은table을 N+1의 길이로 생성recur(1,0)로 시작하고 있는데 해당 문제는 꼭 이렇게 접근해야 되는 것인가요? 미리 감사드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강사님과 조금 다른방식으로 풀었는데 왜 틀릴까요??
저는 강사님과는 반대로배열을 1로 다 채운다음받은 정사각형 만큼 0으로 바꾸었는데요어디서 잘못되어서 문제가 풀리지않을까요? ㅠㅠ #include <bits/stdc++.h> using namespace std; #define y1 aaaa int adj[104][104], visited [104][104]; vector<int> v; int n,m,k,x,y,nx,ny,res,x1,x2,y1,y2; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; int dfs(int y,int x){ visited[y][x]= 1; int cnt=1; for(int i=0;i<4;i++){ ny = y +dy[i]; nx = x +dx[i]; if(nx<0||ny<0||ny>=m||nx>=n)continue; if(visited[ny][nx]==0 && adj[ny][nx]==1){ cnt+=dfs(ny,nx); }else{ continue; } } return cnt; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> m >> n >> k; fill(&adj[0][0],&adj[0][0]+m*n,1); for(int i=0;i<k;i++){ cin >> x1 >> y1 >> x2 >>y2; for(int x = x1;x<x2;x++){ for(int y = y1; y<y2; y++){ adj[y][x]=0; } } } for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(visited[i][j]==0 && adj[i][j]==1){ res++; v.push_back(dfs(i,j)); } } } sort(v.begin(),v.end()); cout << res << endl; for(auto z: v){ cout << z << endl; } return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 16페이지
m2 맥북에어 사용자인데cd /Library/Developer/CommandLineTools/usr/include로 해서 들어가는 거까진 했는데여기서 mkdir bits를 하니 permission denied 가 떠서 접근권한 문제인거 같은데 어떤거를 변경해야 할 지 몰라서 질문합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
10. 마구간 정하기 [ 비슷하지만 다른 해답] 이래도 맞게 푼 걸까요??
채점사이트에서 출력은 "첫 줄에 가장 가까운 두 말의 최대 거리를 출력하세요." 라고 되어 있었습니다.제 생각대로라면 말들이 여러마리니까 가장 가까운 말들의 거리가 말들마다 다를수도 있겠다는 생각이 들어. 최대거리를 구하기 위해 코드를 조금 다르게 쳤습니다. 채점사이트에서는 정답처리 되었는데 확신이 안들어서 이 방식대로 풀어도 되는지 피드백주세요. 또한, 제가 한 방식과 원래 풀이가 어떤 차이가 있는지 궁금합니다.첨부1. 원래 풀이, 내가 생각한 풀이2. 문제 전체 소스코드 *강의 풀이 방식 count()public int count(int[]arr, int distance){ int ep=0, cnt=1; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; ep=i; } } return cnt; }*내가 푼 방식 count()public int[] count(int[]arr, int distance){ int [] res = new int[2]; int ep=0, cnt=1; int min = Integer.MAX_VALUE; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; min = Math.min(min,arr[i]-arr[ep]); // 말들의 최소거리 ep=i; } } res[0] = cnt; // distance로 배치되는 말의 수 res[1] = min; // 말들의 최소 거리 return res; }*강의 풀이 방식 solution()내부 이진탐색 while문while (lt<=rt){ int mid = (lt+rt) / 2; //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(count(arr,mid) >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = mid; } else rt = mid-1; }*내가 푼 solution()내부 이진탐색 while문while (lt<=rt){ int mid = (lt+rt) / 2; int res[] = count(arr,mid); //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(res[0] >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = res[1]; // answer = mid 가 아닌 count메소드에서 계산한 말들의 최소거리를 넣어준다. //(말들이 여러마리일때 가장 가까운말의 최대거리를 구하라고 문제에 명시되어있어서) } else rt = mid-1; } 전체 소스코드import java.util.*; public class Main { public int[] count(int[]arr, int distance){ int [] res = new int[2]; int ep=0, cnt=1; int min = Integer.MAX_VALUE; for(int i=1; i<arr.length; i++){ //배치가능 if(arr[i]-arr[ep] >= distance){ cnt++; min = Math.min(min,arr[i]-arr[ep]); // 말들의 최소거리 ep=i; } } res[0] = cnt; // distance로 배치되는 말의 수 res[1] = min; // 말들의 최소 거리 return res; } public int solution(int n ,int m, int[] arr){ int answer = 0; Arrays.sort(arr); int lt = 1; int rt = arr[n-1]-arr[0]; //arr[arr.length-1]로 끝내도 큰 차이 없음 while (lt<=rt){ int mid = (lt+rt) / 2; int res[] = count(arr,mid); //mid최소거리만큼 배치했을때 m보다 더 배치할 수 있으므로 거리를 늘린다. if(res[0] >= m){ // mid : 말들의 최소거리 lt = mid+1; answer = res[1]; // answer = mid 가 아닌 count메소드에서 계산한 말들의 최소거리를 넣어준다. //(말들이 여러마리일때 가장 가까운말의 최대거리를 구하라고 문제에 명시되어있어서) } else rt = mid-1; } return answer; } public static void main(String[] args) { Main M = 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.print(M.solution(n,m,arr)); } }
-
해결됨코딩테스트 [ ALL IN ONE ]
강의를 다 듣고나서 문제는 어떤걸 푸는 것이 좋은가요?
문제를 풀 수 있는 대표적인 플랫폼을 뽑아보자면Leetcode프로그래머스백준이렇게 있는 것 같은데 강의를 다 듣고 기업 코테를 대비하기 위해서는 어떤 곳의 문제를 풀어보면 좋을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B 질문있습니다.
http://boj.kr/28d3e04e1fe9450c8b2adb485cb92e0c위처럼 이진탐색을 재귀로 구현하여 풀었는데 지피티 + 지니 다 써도 어디에서 예외가 발생하여 틀리는지 모르겠습니다..강사님 어디가 틀린것이고 자신이 짠 코드가 어디가 잘못됬는지 잘 모르겠을 때 어떻게 분석할 수 있는지도 궁금합니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 질문드립니다.
안녕하세요 선생님. 예제와 커뮤니티의 반례들은 모두 통과하는데, 백준 2%에서 오답으로 처리되어 질문드립니다.불이 시작되는 부분부터 BFS를 통해 표시를 해두고, J를 dfs로 움직이게 하는 로직으로 구현했습니다. http://boj.kr/8202d9f54d6b45e489a6888088d047e1
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
다음강의
언제나오나요? DP 강의 보고싶네여..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K 문제는 반드시 역추적하는 방법으로만 풀 수 있나요?
이중 백터를 만들어서 수열을 저장하는 저장하는 방법을 사용했는데.. 정답은 잘 나오는 거 같은데 메모리 초과가 뜹니다 ㅠㅠ 이 코드를 개선하여 통과하기는 어려울까요?다른 풀이들도 보니 역추적 방법으로만 풀더라구요 시험이라고 생각하면, 역추적 아이디어를 번뜩 떠올리기는 힘들 수도 있다는 생각도 드네요.. #include <bits/stdc++.h> using namespace std; int N, tmp, cnt; vector<int> v; vector<vector<int>> answer(1000001); int binary_search(int num){ long low = 0, high = v.size() - 1; while(low <= high){ long mid = (low + high) / 2; if(v[mid] == num){ return mid; } else if(v[mid] >= num){ // 배열의 값이 더 크다. 줄여야 한다 high = mid - 1; } else{ // 배열의 값이 더 작다. 늘려야 한다 low = mid + 1; } } return low; // 배열보다 이상인 인덱스 리턴 } int main() { ios_base:: sync_with_stdio(false); cin.tie (NULL); cout.tie (NULL); cin >> N; for(int i = 0; i < N; i++){ cin >> tmp; if(v.empty()){ v.push_back(tmp); answer[0].push_back(tmp); continue; } if(v.back() < tmp){ v.push_back(tmp); cnt++; if(i > 0){ answer[cnt] = answer[cnt-1]; answer[cnt].push_back(tmp); } } else if(v.back() > tmp){ int idx = binary_search(tmp); v[idx] = tmp; if(idx > 0){ answer[idx] = answer[idx-1]; answer[idx].push_back(tmp); } else{ answer[0].clear(); answer[0].push_back(tmp); } } } cout << v.size() << "\n"; for(int i = 0; i < answer[v.size()-1].size(); i++){ cout << answer[v.size()-1][i] << " "; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 숨바꼭질5 26번 라인 visited 값 할당 부분 질문 있습니다.
선생님 안녕하세요 !숨바꼭질 5번 26번 라인에 질문이 한 가지 있습니다. 기존에 올라온 질문들을 보면서 visited를 2차원 배열에 처리하여 홀/짝을 구분해야 한다는 것과 qSize를 활용하는 로직은 이해가 됐습니다. 그런데 26라인의 부분이 이해가 잘 되지 않습니다.visited[turn % 2][nx] = visited[(turn + 1) % 2][x] + 1; 왜 (turn+1)%2 + 1 을 기준으로 turn%2에 값을 할당하는지 잘 모르겠습니다.bfs 로직에서 visited[next]에 값을 할당 할 때 here을 기준으로 +1을 하여 next를 할당하는데 (turn+1)%2 + 1을 기준으로 할당한 것이 잘 이해가 안 됩니다. 항상 감사합니다.새해 복 많이 받으세요!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 메모리 초과가 나는 이유에 대하여 궁금합니다.
3-D Fire! 다음 코드 제출시 메모리 초과가납니다. 혼자 생각해봐도 고민이 해결되지않아 질문 올립니다. 코드:http://boj.kr/7b447402e3e04302bdc04ebb1e2c0105 좋은 강의 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 질문있습니다!
http://boj.kr/982be70c6d1e4cd5bfcbf7f36bf6d7c8 큰돌님 풀이만큼 구현하기엔 아직 실력이 부족한듯하여, 우선 부딪혀보았습니다. 풀어는 보고 싶어서, 정말 단순하게 4분할 후 배열 생성하고, 전수 검사하고, 서로 다른 요소가 있다면 다시 재귀를 돌리는 식으로 구현해보았는데 어떤 문제가 있는 걸까요 ㅠ??
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유 확인부탁드립니다.
안녕하세요:) 어제 오후 11~12시쯤 결제 후 신청 폼을 올렸는데 아직 공유가 안 되어 있습니다. kse011010@gmail.com 위의 이메일로 공유 부탁드렸는데 확인부탁드립니다‼
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 질문있습니다.
http://boj.kr/a301ab703f224734996c1f3bf87bf454 강의와 비슷한 원리로 슬라이딩 윈도우로 풀어봤습니다.간단한 것 같은데 어디서 반례가 발생하는 걸까요??도무지 해결이 되지 않아 질문 올립니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드 어느 부분에서 틀렸을까요??
# 레벨, 일하는중(남은시간) def dfs(level, working_time): global max_value working_time -= 1 if level >= n: # 날짜가 지났는데 아직도 일을 하는경우 if working_time >= 1: return tmp = 0 for i in range(n): if checked[i] == 1: tmp += li_input[i][1] if tmp > max_value: max_value = tmp else: # 남은 일이 없어야 일 진행가능 if working_time < 1: # 일해야 되는 시간 만큼을 인자로 넘김 working_time = li_input[level][0] checked[level] = 1 dfs(level + 1, working_time) checked[level] = 0 dfs(level + 1, working_time) n = int(input()) li_input = [] for i in range(n): li_input.append(tuple(map(int, input().split()))) checked = [0] * (n) max_value = 0 dfs(0,0) print(max_value) 문제에 적혀있는 예제 빼고 다 틀리네요.'휴가(삼성 SW역량평가 기출문제 : DFS활용)' 해당 문제 풀었습니다.다른 답으로 쉽게 풀수 있긴한데 해당 코드가 왜 틀리게 나오는지는 모르겠네요.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
참조자 관련 질문 드립니다!
안녕하세요 선생님,선생님이 올려주신 정답 코드입니다. dfs에서 매개변수로 벡터에 참조자를 붙이셨는데, 참조자를 붙였을때와 붙지 않았을때의 차이, 그리고 왜 이 코드에서 참조자를 붙여야만 하는지를 알려주시면 감사하겠습니다. 좋은 강의 늘 감사드립니다!
-
미해결기초 알고리즘 코딩테스트 40일 완성 (by 하루코딩)
디버깅 관련 문제
안녕하세요 혹시 저는 디버깅 찍으면이렇게 뜨는데 선생님처럼 뜨게 해서 디버깅을 확인하고 싶은데 어떻게 해야하나요? ㅠ구글링을 해도 관련 자료를 찾기 힘드네요..
-
해결됨코딩테스트 [ ALL IN ONE ]
이제 모든 강의가 다 올라온 상태인가요??
이제 완강해도 되는지 궁금합니다~!