Skip to content

[gyeo-ri] WEEK 10 Solutions#2591

Merged
gyeo-ri merged 3 commits intoDaleStudy:mainfrom
gyeo-ri:main
May 9, 2026
Merged

[gyeo-ri] WEEK 10 Solutions#2591
gyeo-ri merged 3 commits intoDaleStudy:mainfrom
gyeo-ri:main

Conversation

@gyeo-ri
Copy link
Copy Markdown
Contributor

@gyeo-ri gyeo-ri commented May 8, 2026

답안 제출 문제

작성자 체크 리스트

  • Projects의 오른쪽 버튼(▼)을 눌러 확장한 뒤, Week를 현재 주차로 설정해주세요.
  • 문제를 모두 푸시면 프로젝트에서 StatusIn Review로 설정해주세요.
  • 코드 검토자 1분 이상으로부터 승인을 받으셨다면 PR을 병합해주세요.

검토자 체크 리스트

Important

본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!

  • 바로 이전에 올라온 PR에 본인을 코드 리뷰어로 추가해주세요.
  • 본인이 검토해야하는 PR의 답안 코드에 피드백을 주세요.
  • 토요일 전까지 PR을 병합할 수 있도록 승인해주세요.

gyeo-ri added 2 commits May 8, 2026 16:33
* feat: 테스트 코드 작성

* feat: 위상정렬 풀이

* fix: 불필요한 코드 제거

* feat: dfs를 활용한 풀이

* fix: 결과 설명 추가

* fix: dfs 코드 가독성 개선
@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy Bot commented May 8, 2026

📊 gyeo-ri 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
course-schedule Medium ✅ 의도한 유형
invert-binary-tree Easy ✅ 의도한 유형

누적 학습 요약

  • 풀이한 문제: 10 / 75개
  • 이번 주 유형 일치율: 100% (2문제 중 2문제 일치)

문제 풀이 현황

카테고리 진행도 완료
Binary ■■■□□□□ 2 / 5 (Easy 2)
Linked List ■■□□□□□ 2 / 6 (Easy 2)
Array ■■□□□□□ 3 / 10 (Easy 2, Medium 1)
String ■■□□□□□ 3 / 10 (Medium 2, Easy 1)
Dynamic Programming □□□□□□□ 0 / 11 ← 아직 시작 안 함
Graph □□□□□□□ 0 / 8 ← 아직 시작 안 함
Interval □□□□□□□ 0 / 5 ← 아직 시작 안 함
Matrix □□□□□□□ 0 / 4 ← 아직 시작 안 함
Tree □□□□□□□ 0 / 14 ← 아직 시작 안 함
Heap □□□□□□□ 0 / 3 ← 아직 시작 안 함

🤖 이 댓글은 GitHub App을 통해 자동으로 작성되었습니다.

🔢 API 사용량 (gpt-4.1-nano)
요청 입력 토큰 출력 토큰 합계 비용
1 1,189 34 1,223 $0.000133
2 2,238 67 2,305 $0.000251
합계 3,427 101 3,528 $0.000383

* feat: 테스트 코드 작성

* feat: dfs를 활용한 풀이

* fix: 노드 교환 로직 가독성 개선

* docs: dfs 풀이 과정 리뷰

* feat: bfs를 활용한 풀이

* fix: 노드가 None인 경우 큐에 넣기 전에 처리함

* docs: 3번 풀이 코멘트 추가
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: 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)

피드백: 그래프의 노드와 간선 수에 비례하는 시간과 공간 복잡도를 가지며, 모든 노드를 한 번씩 처리하는 방식입니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🏷️ 알고리즘 패턴 분석

  • 패턴: 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)

피드백: 모든 노드를 한 번씩 방문하며 좌우를 교환하므로 시간 복잡도는 트리의 노드 수에 비례하며, 재귀 호출 스택은 트리의 높이만큼 공간을 사용합니다.

개선 제안: 현재 구현이 적절해 보입니다.

💡 풀이에 시간/공간 복잡도를 주석으로 남겨보세요!

@gyeo-ri gyeo-ri moved this from Solving to In Review in 리트코드 스터디 7기 May 8, 2026
@reeseo3o reeseo3o self-requested a review May 9, 2026 05:47
Copy link
Copy Markdown
Contributor

@reeseo3o reeseo3o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이번 한 주도 고생많으셨습니다!

Comment on lines +2 to +12
[결과 요약]
# 시도한 로직 수: 2
1. 위상 정렬로 푸는 방법
- 시간복잡도 O(n) / 공간복잡도 O(n)
- 실제로는 numCourses + len(prerequisites) 만큼의 복잡도 (O(V+E))
- 원리: 모든 노드를 정렬할 수 있는지 체크(순환이 있으면 모든 노드 정렬 불가)
2. DFS를 활용하는 방법
- 1번과 동일하게 O(V+E)
- 원리: 탐색(비순환일때만 가능)을 완료할 수 있는지 체크해서 순환 여부를 판단

"""
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어떤 아이디어를 시도했고, 풀이와 원리를 잘 설명해주셔서 좋았어요!

class Solution:
def canFinish(self, numCourses: int, prerequisites: list[list[int]]) -> bool:
# 1-a. 인덱스가 0부터 시작하는 그래프 초기화
course_graph: list[list[int]] = [[] for _ in range(numCourses)]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

변수명들이 역할을 잘 드러내서 읽기 좋았어요!

"""


if __name__ == "__main__":
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트 케이스 👍 👍

@gyeo-ri gyeo-ri merged commit 428cb12 into DaleStudy:main May 9, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from In Review to Completed in 리트코드 스터디 7기 May 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Completed

Development

Successfully merging this pull request may close these issues.

2 participants