묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
백준에서는 recursion error가 납니다
안녕하세요 ! 동일한 코드로 선생님의 채점기에 돌렸을 때는 100점이 나왔는데 백준에서는 recursion 에러가 납니다. 종료조건도 잘 설정해준 것 같은데 어디서 그렇게 호출이 많이 일어나는지 이해가 되지않아서요 ㅠㅠ 강의 잘 듣고 있습니다. 감사합니다!!# 1. 재귀 (근데 백준에서는 recursion 에러 뜸..) n = int(input()) meetings = [] for _ in range(n): meetings.append(list(map(int, input().split()))) meetings.sort(key=lambda x: (x[1], x[0])) # 끝나는 시간을 기준으로 정렬 # x[1]이 같을 경우 x[0]을 기준으로 정렬 def find(i, cnt): for j in range(i+1, n): if meetings[i][1] <= meetings[j][0]: # 회의 끝나는 시간보다 시작하는 시간이 더 크거나 같은 것 찾기 cnt += 1 return find(j, cnt) # 또 찾기 return cnt print(find(0, 1))
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
split() 함수에서 pos변수타입을 long long 으로 선언한 이유
안녕하세요 큰돌님 강의 잘듣고있습니다. 위 사진은 교안에 나온 split함수 예시입니다while 조건문에서 사용되는 find함수는 size_t 타입을 반환한다고 하는데 pos도 이에 맞춰서 size_t라는 타입으로 일치해줘야 하지 않나 하는 궁금증이 생겼습니다. 변수 pos를 size_t로 받지않고 longlong으로 받으시는 이유가있는걸까요?
-
미해결김영한의 실전 자바 - 중급 2편
Hashset 자료구조에 대해서 질문 있습니다!
김영한 멘토님 안녕하세요 강의를 듣다가 질문이 있어서 질문 남깁니다!HashSet 자료구조를 사용해 객체를 저장할때, HashCode와 equals를 재정의 해야한다고 말씀해 주셨는데요. 정말 멘토님 말대로 재정의 하지 않으면 값이 중복되어서 저장되었습니다. 근데 궁금한것은 HashSet 자료구조이기에 HashCode를 사용하는것은 아는데, 그 이전에 자료구조가 Set의 기반의 자료구조인데 Set은 원래도 중복된 값을 허용하지 않는걸로 알고있습니다. 근데 왜 HashCode를 재정의해야 그때서야 값이 중복되어서 저장되지 않는것인가요? 애초에도 Set 기반의 자료구조인데 말입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과 질문있습니다!
안녕하세요 시간초과가 나서 질문 드립니다 http://boj.kr/fc46d18e98374d0eb3e7ae35da228024unorder map이 해시 맵이라 O(1)의 시간 복잡도를 갖는 걸로 알고 있는데 왜 시간 초과가 나는지 모르겠습니다...혹시 해시 충돌이 나서 그런걸까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
lt, rt 관련
안녕하세요 선생님, 수업 잘 듣고있습니다 ㅎㅎ다름이 아니라, 섹션 3의 5.수들의 합 문제에서 궁금한 점이 있습니다import syssys.stdin = open("input.txt", 'r')n, m=map(int, input().split())a=list(map(int, input().split()))lt=0rt=1tot=a[0]cnt=0while True: if tot<m: if rt<n: tot+=a[rt] rt+=1 else: break elif tot==m: cnt+=1 tot-=a[lt] lt+=1 else: tot-=a[lt] lt+=1print(cnt) 이 코드에서, 여기서 만약 rt가 맨끝까지 가서 n에갔지만 / lt는 n 이전까지도 못왔다면(예를 들면 lt는 3인데 rt는 n인 경우) 이건 논리에 어긋나지 않나 궁금해서 질문드렷습니다. 항상 좋은강의 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 왜 틀렸는지 모르겠습니다. ㅠㅠ
http://boj.kr/3fc3d81f397e4109919a1cce555e5be9안녕하세요. 강사님. 1-N 곱셈 문제를 저는 위의 코드로 풀었는데 왜 틀렸는지 도저히 모르겠어서 이렇게 질문 남깁니다. 한시간동안 고민한거 같은데 도저히 보이지가 않네요. 찾아주시면 정말 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
풀이법 질문있습니다.
결국 문제는 하나의 경로만 구하라는거니까 종점부터 시작해서 딱 한개의 경로만 추적하는 방법은 어떨까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
http://boj.kr/eb89033f8d5f4568b2b3cdb80ece29da로직은 동일하게 진행했는데 마지막 케이스가 틀렸다고 나옵니다. 어디를 고쳐야할지 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
~연산자 질문있습니다 :)
안녕하세요 선생님 🙂 ~연산자 부분에서 이해가 되지 않는 부분이 있어서 질문드립니다. 양의 정수와 음의 정수 상관없이 ~연산자를 사용하면 -(value + 1)이 되는 것을 확인했습니다. 이건 1의 보수 값인가요 2의 보수 값인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
균형 이진 트리 질문 있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요균형 이진트리의 경우 모든 노드에서 왼쪽 하위트리와 오른쪽 하위트리의 높이차이가 1이하여야 한다고 이해했습니다. 그러나 이번 영상 5:03초에 아래 그림의 트리구조가 균형 이진트리라고 설명해주셨는데, 제가 빨간색으로 표시한 노드를 기준으로 보았을때왼쪽 하위트리 높이가 0오른쪽 하위트리 높이가 2이기 때문에높이차이가 2나기 때문에 해당 트리 구조가 균형 이진트리가 아니라고 판단하였는데, 제 개념에 오류가 있는것인지 궁금합키다..!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
고생했던? 케이스에 대해 선생님의 코드가 어떻게 들어맞는 지에 대한 질문이 있습니다. ㅠ
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의자신은 어떻게 이해했는지DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요?안녕하세요!강의 잘 듣고 있습니다.백준 1461 그리디 마지막 문제에 대한 질문이 있는데요. 보기 전에 풀어보긴 했는데,두더지 잡다가 어떻게 된 느낌이긴 해요..음,, 아직 습관이 안 고쳐지기는 했는데 정의하고 분석하고 따져보고 그려본 다음에 해야 하는데,, 그 제가 처음 푼 방식은리스트 요소를 지워가며 해결하는 방식인데요양/음수가 m으로 떨어지지 않는 나머지 경우를 먼저 따져 합계에 더하고, 제거한 뒤먼 데부터 다녀오는데, 최댓값을 계속 갱신해서가장 먼 거리를 나중에 빼주는 방식으로 했어요..m으로 나누어 떨어지지 않는 경우에 대한 처리를 나중에 추가했는데요선생님의 코드가 어떻게 그 경우도 잘 처리하는 지 분석이 잘 안되어서..설명 부탁 드려요.. 아! 저번 설명 너무 감사합니다 더불어 약간 공부하는 루틴?이랄까? 그런 것도 말씀해 주실 수 있는 게 있다면 혹시 말씀 부탁드려요..(코테 공부도 그렇고 다른 것도 그렇고..) 아래는 제가 처음 정답 받은 코드입니다.(코드가 지저분함에 죄송해요..)import sys input = sys.stdin.readline # 방향을 결정하고 상자 들고 다음에 처음 갈 책 위치를 반환합니다. def getPos(arr): global direction maximum = max(map(abs, arr)) if maximum in arr: if len(arr) > m: direction = False if min(arr) >= 0: direction = True return 0 for i in range(len(arr) - 1, -1, -1): if arr[i] < 0: return i else: direction = True for i in range(len(arr)): if arr[i] >= 0: return i else: if len(arr) > m: direction = True if max(arr) < 0: direction = False return len(arr) - 1 for i in range(len(arr)): if arr[i] >= 0: return i else: direction = False for i in range(len(arr) - 1, -1, -1): if arr[i] < 0: return i return -1 n, m = map(int, input().rstrip().split()) arr = list(sorted(map(int, input().rstrip().split()))) cnt = 0; direction = True; reach = 0; plusCount = 0; minusCount = 0 #양수/음수 따로 헀어야 좋았는데, 하다보니 개수 세는 걸 만들었어요.. def count(): global plusCount, minusCount for i in arr: if i >= 0: plusCount += 1 elif i < 0 : minusCount += 1 count() #양수 m으로 나누어 떨어지지 않을 경우에 대한 처리입니다. if plusCount % m != 0: mini = min(i for i in arr if i >= 0) idx1 = arr.index(mini) idx2 = min(arr.index(mini) + (plusCount % m), len(arr)) reach = arr[idx2 - 1] for i in range(idx1, idx2): arr.remove(arr[idx1]) cnt += reach * 2 #음수 m으로 나누어 떨어지지 않을 경우에 대한 처리입니다. if minusCount % m != 0: maxi = max(i for i in arr if i < 0) idx1 = arr.index(maxi) idx2 = max(arr.index(maxi) - (minusCount % m), -1) far = abs(arr[idx2 + 1]) for i in range(idx1, idx2, -1): arr.remove(arr[idx2 + 1]) cnt += far * 2 reach = max(reach, far) # 이럴 필요 없는데, 돌면서 먼 데 구하고 그 안쪽? 지우는 방식으로 했어요.. while arr: pos = getPos(arr) far = abs(arr[min(len(arr) - 1, pos + m - 1) if direction else max(0, pos - m + 1)]) for i in range(m): if not arr: break arr.remove(arr[pos]) if not direction or pos == len(arr): pos = max(pos - 1, 0) cnt += far * 2 reach = max(reach, far) print(cnt - reach)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
vector<string> <--> string 자료형을 썼을 때의 차이
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.<1. vector<string>자료형 사용>#include <bits/stdc++.h> using namespace std; //1159 - 농구 경기 int N; vector<string> name; int cnt[26]; vector<char> ret; int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int flag=0; cin>>N; for(int i=0;i<N;i++){ cin>>name[i]; cnt[(int)name[i][0]-'a']++; } for(int i=0;i<26;i++){ if(cnt[i]>=5){ ret.push_back((char)i+'a'); flag=1; } } if(flag){ for(char c:ret) cout<<c; return 0; } cout<<"PREDAJA"<<'\n'; return 0; } <2. string 자료형 사용>#include <bits/stdc++.h> using namespace std; //1159 - 농구 경기 int N; string name; int cnt[26]; vector<char> ret; int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); int flag=0; cin>>N; for(int i=0;i<N;i++){ cin>>name; cnt[(int)name[0]-'a']++; } for(int i=0;i<26;i++){ if(cnt[i]>=5){ ret.push_back((char)i+'a'); flag=1; } } if(flag){ for(char c:ret) cout<<c; return 0; } cout<<"PREDAJA"<<'\n'; return 0; 다시 풀다 보니 이름을 계속 저장할 필요가 없음을 인지하여 string 자료형인 하나의 변수로 계속 초기화하도록 수정하였습니다. 하지만 첫 번째 코드가 실행되지 않는 명확한 이유를 잘 모르겠습니다. 설명해주시면 정말 감사하겠습니다. 좋은 강의 항상 감사드립니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2차원 dp 11:45분에서 하상좌우 순서에 의미가 있나요?
상하좌우 순서 고쳐주셨다고 하셔서 그냥 순서 바꿔서 해봤더니 값이 다르게 나오네요.. 이해가 안됩니다 센세 ㅠㅠ흑흑
-
미해결김영한의 실전 자바 - 중급 2편
질문
이런 문제들 너무 너무 좋은데, 혹시 영한님이 직접 손수 만드신 문제인가요?아니면 이런 문제들 풀 수 있는 전문적인 사이트라던가 참고할수 있는 링크나 문제집이나 강의 추천해주시면 감사드리겠습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
stack의 괄호문자제거 문제, 질문 이제안보시나요..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제 조건에서 소괄호 사이의 존재하는 문자는 제거한다고 했는데 만약 소괄호 쌍이 안맞고 '(' 나 ')'가 남게되는 경우는 감안을 안해도되는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 화면이 안나와서 질문드립니다!
0주차 커리 큘럼에서 알고리즘 교안 공부하는 방법 [필독] 문제 풀 때 주의할 점2분[필독] 질문하는 방법3분[필수개념] 재귀함수(recursion) 이 강의들은 화면 없이 듣는게 맞는걸까요?다른 강의들은 화면이 잘 나옵니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-Q 질문있습니다 :)
안녕하세요 선생님 🙂 이해가 되지 않는 부분이 있어서 질문 글 올립니다. 문제를 보니, 일단 완전탐색과 visited배열의 가중치를 증가시키는 방법이 떠올랐습니다. 완전탐색은 DFS로 구현(BFS는 복잡함)visited배열의 가중치를 증가시키려면 BFS를 사용위의 2번 방법은 완탐을 사용하려면 불가능한 방법이기 때문에 함수에 cnt라는 int형 파라미터를 추가하여 풀이를 해보았습니다. 하지만 무언가에 막혀서 선생님 강의를 틀었는데요, 완탐을 사용하시면서 visited배열의 가중치를 증가시키시더라구요. 그동안 배웠던대로라면 이건 불가능한 방법이 아닌가요? 너무 헷갈립니다.. 팁 좀 주시면 감사하겠습니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜둘맞..?
안녕하세요 선생님.처음 문제를 풀 때 투포인터로 문제를 풀었습니다.(아래는 첫번째 풀이)http://boj.kr/3a10ce5dba1d4b2ba3ff506e08ea07cc그런데 생각을 해보니, 2 2 2 7 7 7 이렇게 나오는 경우도 있지않을까? 싶어서map을 사용해 다시 풀었습니다.(아래는 두번째 풀이)http://boj.kr/683ffbaa42d741caa47966d54cd814a1투포인터로 짠 첫번째 로직은 2 2 2 7 7 7 의 경우 답이 3개가 나옵니다. 그리고 map으로 짠 경우, 9개가 나옵니다.2가 3개, 7이 3개 가 있으니까 3 * 3 = 9 이렇게 나옵니다. 이렇게 두 풀이가 하나의 입력에 대해 답이 다른데 두 풀이 모두 정답으로 나옵니다.제가 문제를 잘못이해한 것인지 왜 답이 다르게 나오는 두 풀이가 다 정답이 되는지 모르겠습니다 ㅜ..
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
공부 방법
-안녕하세요 선생님 강의 잘 듣고 있습니다.제가 구현이 너무 안되어서....이 강의를 듣게 되었습니다..혼자 코드업 문제 등을 풀어보면 해결이 안되는 문제는 몇일씩 고민해도 시간만 가고 해결이 안되더라구요...그래서 방법을 한번 바꿔볼까 해서 이 강의를 듣게 되었어요..선생님 강의를 전체 한번 쭉 다 듣고 다시 개인적으로 공부하는 방법이 어떤가 싶어 문의드립니다..알고리즘을 떠올리기가 힘듭니다...ㅜ지금 DFS문제부터 듣고 있습니다.. 뒷 부분 강의부터 먼저 접해보면 앞부분의 문제는 좀더 쉽게 해결되지 않을까 해서요....;; 공부 방법에 대해 선생님께 조언을 좀 구하고저 합니다... 작성된 코드는 대부분 다 이해를 합니다..구현이 너무나 어렵습니다....ㅠㅠ조언 부탁드립니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
16234 로직에 관해 질문 있습니다.
82161918번 소스 코드 (acmicpc.net)우선 설명해주신 로직은 dfs와 인구이동을 한버에 하시는 것 같습니다.제 로직은 while(true) 연합생성 연합생성이 않되면 break; 연합이 생성되면 인구 이동입니다.처음에 시도했을 때, 시간초과가 나서, BFS,DFS 모두 구현해보았는데, 어느 부분에서 더 줄일 수 있는 지 궁금합니다.