Skip to content

[liza0525] WEEK 09 Solutions#2581

Merged
liza0525 merged 5 commits intoDaleStudy:mainfrom
liza0525:main
May 2, 2026
Merged

[liza0525] WEEK 09 Solutions#2581
liza0525 merged 5 commits intoDaleStudy:mainfrom
liza0525:main

Conversation

@liza0525
Copy link
Copy Markdown
Contributor

@liza0525 liza0525 commented May 1, 2026

답안 제출 문제

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy Bot commented May 1, 2026

📊 liza0525 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
linked-list-cycle Easy ⚠️ 유형 불일치
maximum-product-subarray Medium ✅ 의도한 유형
minimum-window-substring Hard ✅ 의도한 유형
pacific-atlantic-water-flow Medium ✅ 의도한 유형
sum-of-two-integers Medium ✅ 의도한 유형

누적 학습 요약

  • 풀이한 문제: 39 / 75개
  • 이번 주 유형 일치율: 80% (5문제 중 4문제 일치)

문제 풀이 현황

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

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

🔢 API 사용량 (gpt-4.1-nano)
요청 입력 토큰 출력 토큰 합계 비용
1 3,265 190 3,455 $0.000403

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Fast & Slow Pointers
  • 설명: 이 코드는 두 포인터를 이용해 리스트를 탐색하며, 순환 여부를 판단하는 방식으로 빠른 포인터와 느린 포인터를 활용하는 패턴입니다.

📊 시간/공간 복잡도 분석

ℹ️ 이 파일에는 2가지 풀이가 포함되어 있어 각각 분석합니다.

풀이 1: Solution.hasCycle (fast/slow pointers) — Time: ✅ O(n) → O(n) / Space: ✅ O(1) → O(1)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(1) O(1)

피드백: 포인터 두 개를 이용하여 리스트를 한 번 순회하며 순환 여부를 판단하므로 시간 복잡도는 리스트 길이 n에 비례하는 O(n)입니다. 추가 공간은 상수만 사용하므로 O(1)입니다.

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

풀이 2: Solution.hasCycle (set 방문 기록) — Time: ✅ O(n) → O(n) / Space: ✅ O(n) → O(n)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(n) O(n)

피드백: 각 노드를 한 번씩 방문하며 방문한 노드를 집합에 저장하므로 시간은 리스트 길이 n에 비례하는 O(n)입니다. 공간은 방문 노드 수만큼 필요하여 O(n)입니다.

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

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Dynamic Programming
  • 설명: 이 코드는 연속된 부분 배열 내 최대 곱을 찾기 위해 이전 상태를 저장하며 최적 부분 문제를 해결하는 동적 프로그래밍 패턴을 사용합니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(1) O(1)

피드백: 한 번의 리스트 순회 내에서 현재 최대, 최소 곱을 갱신하며 최댓값을 찾기 때문에 시간 복잡도는 O(n)입니다. 변수만 사용하므로 공간 복잡도는 O(1)입니다.

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

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Sliding Window, Hash Map / Hash Set
  • 설명: 이 코드는 두 포인터를 이용한 슬라이딩 윈도우 기법으로, 특정 조건을 만족하는 최소 구간을 찾기 위해 해시 맵을 활용하여 문자 개수를 추적합니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(1) O(1)

피드백: 윈도우를 오른쪽으로 확장하고, 조건 충족 시 왼쪽을 이동하며 최적의 윈도우를 찾기 때문에 시간 복잡도는 문자열 길이 n에 비례하는 O(n)입니다. 알파벳 개수는 제한적이므로 공간은 상수에 가깝습니다.

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

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
  • 설명: 이 코드는 깊이 우선 탐색(DFS)을 이용하여 각 지점에서 시작하는 것이 아닌, 태평양과 대서양에 인접한 곳에서 출발하여 도달 가능한 지점을 찾는 방식입니다. 재귀 호출로 인접한 높이 조건을 만족하는 곳을 탐색하는 구조입니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(m * n) O(m * n)
Space O(m * n) O(m * n)

피드백: 각 지점에서 DFS를 수행하며 방문 가능한 지점을 집합에 저장하므로 시간과 공간 모두 맵 크기 mn에 비례하는 O(mn)입니다.

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

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Bit Manipulation
  • 설명: 이 코드는 비트 연산을 활용하여 두 정수의 합을 계산하는 방법으로, 비트 조작을 통해 덧셈을 구현하는 패턴입니다.

📊 시간/공간 복잡도 분석

유저 분석 실제 분석 결과
Time O(1) O(1)
Space O(1) O(1)

피드백: 반복문은 최대 32번 수행하며, 변수만 사용하므로 시간 복잡도는 상수 O(1)입니다. 공간도 상수입니다.

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

@reeseo3o reeseo3o self-requested a review May 2, 2026 00:16
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 +14 to +22
prev_max_val = max_val # 이전 max_val은 업데이트 되기 전에 잠시 저장

# 현재 loop에서 num과 max_val(이전까지의 최대곱) * num과 min_val(이전까지의 최소곱) * num 중
# 가장 큰 수를 max_val로 업데이트
# 이때 num이 저장된다는 의미는 최대/최소곱을 해당 숫자에서 다시 시작하여 곱한다는 의미
max_val = max(num, max_val * num, min_val * num)

# min_val도 max_val과 동일한 원리로 저장, 이때는 미리 저장한 prev_max_val을 이용
min_val = min(num, prev_max_val * num, min_val * num)
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.

음수 곱 때문에 ‎max_val 업데이트 전에 ‎prev_max_val를 따로 저장해 두고, 그 값을 ‎min_val 갱신에 사용하는 구조가 깔끔하고 좋네욥!

@liza0525
Copy link
Copy Markdown
Contributor Author

liza0525 commented May 2, 2026

이번 한 주도 고생하셨습니다! :)

@reeseo3o 빠른 리뷰 감사합니다! 다음주도 화이팅입니다 👍🏼

@liza0525 liza0525 merged commit 913f2ff into DaleStudy:main May 2, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from In Review to Completed in 리트코드 스터디 7기 May 2, 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