[gyeo-ri] WEEK 10 Solutions#2591
Open
gyeo-ri wants to merge 3 commits intoDaleStudy:mainfrom
Open
Conversation
* feat: 테스트 코드 작성 * feat: 위상정렬 풀이 * fix: 불필요한 코드 제거 * feat: dfs를 활용한 풀이 * fix: 결과 설명 추가 * fix: dfs 코드 가독성 개선
Contributor
📊 gyeo-ri 님의 학습 현황이번 주 제출 문제
누적 학습 요약
문제 풀이 현황
🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다. 🔢 API 사용량 (gpt-4.1-nano)
|
* feat: 테스트 코드 작성 * feat: dfs를 활용한 풀이 * fix: 노드 교환 로직 가독성 개선 * docs: dfs 풀이 과정 리뷰 * feat: bfs를 활용한 풀이 * fix: 노드가 None인 경우 큐에 넣기 전에 처리함 * docs: 3번 풀이 코멘트 추가
Contributor
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: DFS, Topological Sort
- 설명: 이 코드는 그래프의 순환 여부를 판단하기 위해 DFS와 위상 정렬 방식을 활용합니다. 두 방법 모두 그래프 탐색과 정렬을 통해 문제를 해결하는 대표적인 패턴입니다.
📊 시간/공간 복잡도 분석
ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.
풀이 1: Solution.canFinish — Time: O(V + E) / Space: O(V + E)
| 복잡도 | |
|---|---|
| Time | O(V + E) |
| Space | O(V + E) |
피드백: 그래프의 노드와 간선 수에 비례하는 시간과 공간 복잡도를 가지며, 모든 노드와 간선을 한 번씩 탐색하는 방식입니다.
개선 제안: 현재 구현이 적절해 보입니다.
풀이 2: Solution.canFinish — Time: O(V + E) / Space: O(V + E)
| 복잡도 | |
|---|---|
| Time | O(V + E) |
| Space | O(V + E) |
피드백: 그래프의 노드와 간선 수에 비례하는 시간과 공간 복잡도를 가지며, 모든 노드를 한 번씩 처리하는 방식입니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
Contributor
There was a problem hiding this comment.
🏷️ 알고리즘 패턴 분석
- 패턴: DFS, BFS
- 설명: 이 코드는 재귀적 DFS와 반복적 BFS 두 가지 방법으로 이진 트리의 노드 값을 뒤집는 방식을 사용합니다. 각각의 방법은 트리 전체를 순회하며 노드의 좌우를 교환하는 특징이 있습니다.
📊 시간/공간 복잡도 분석
ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.
풀이 1: Solution.invertTree — Time: O(n) / Space: O(n)
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(n) |
피드백: 모든 노드를 한 번씩 방문하며 좌우를 교환하므로 시간 복잡도는 트리의 노드 수에 비례하며, 큐에 저장되는 노드 수는 최대 트리 높이와 관련됩니다.
개선 제안: 현재 구현이 적절해 보입니다.
풀이 2: Solution.invertTree — Time: O(n) / Space: O(h)
| 복잡도 | |
|---|---|
| Time | O(n) |
| Space | O(h) |
피드백: 모든 노드를 한 번씩 방문하며 좌우를 교환하므로 시간 복잡도는 트리의 노드 수에 비례하며, 재귀 호출 스택은 트리의 높이만큼 공간을 사용합니다.
개선 제안: 현재 구현이 적절해 보입니다.
💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!
reeseo3o
approved these changes
May 9, 2026
Comment on lines
+2
to
+12
| [결과 요약] | ||
| # 시도한 로직 수: 2 | ||
| 1. 위상 정렬로 푸는 방법 | ||
| - 시간복잡도 O(n) / 공간복잡도 O(n) | ||
| - 실제로는 numCourses + len(prerequisites) 만큼의 복잡도 (O(V+E)) | ||
| - 원리: 모든 노드를 정렬할 수 있는지 체크(순환이 있으면 모든 노드 정렬 불가) | ||
| 2. DFS를 활용하는 방법 | ||
| - 1번과 동일하게 O(V+E) | ||
| - 원리: 탐색(비순환일때만 가능)을 완료할 수 있는지 체크해서 순환 여부를 판단 | ||
|
|
||
| """ |
Contributor
There was a problem hiding this comment.
어떤 아이디어를 시도했고, 풀이와 원리를 잘 설명해주셔서 좋았어요!
| class Solution: | ||
| def canFinish(self, numCourses: int, prerequisites: list[list[int]]) -> bool: | ||
| # 1-a. 인덱스가 0부터 시작하는 그래프 초기화 | ||
| course_graph: list[list[int]] = [[] for _ in range(numCourses)] |
| """ | ||
|
|
||
|
|
||
| if __name__ == "__main__": |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!