Skip to content

[Yiseull] WEEK 02 solutions#2682

Open
Yiseull wants to merge 13 commits into
DaleStudy:mainfrom
Yiseull:main
Open

[Yiseull] WEEK 02 solutions#2682
Yiseull wants to merge 13 commits into
DaleStudy:mainfrom
Yiseull:main

Conversation

@Yiseull

@Yiseull Yiseull commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

답안 제출 문제

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

@dalestudy

dalestudy Bot commented Jun 29, 2026

Copy link
Copy Markdown
Contributor

📊 Yiseull 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
climbing-stairs Easy ✅ 의도한 유형
product-of-array-except-self Medium ✅ 의도한 유형
valid-anagram Easy ✅ 의도한 유형

누적 학습 요약

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

문제 풀이 현황

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

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

🔢 API 사용량 (gpt-5-nano)
요청 입력 토큰 출력 토큰 합계 비용
1 1,800 301 2,101 $0.000210
2 545 89 634 $0.000063
3 874 142 1,016 $0.000101
4 874 152 1,026 $0.000105
합계 4,093 684 4,777 $0.000478

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set
  • 설명: 집합(set)을 이용해 중복 여부를 검사하는 해시 기반 패턴으로, 원소의 유니크 여부를 빠르게 판단합니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Two Pointers, Divide and Conquer
  • 설명: 집합을 이용해 중복 제거 및 연속 구간의 시작점만 탐색하는 방식으로 문제를 해결하므로 Hash Set 패턴이 핵심이다. 또한 연속 구간의 길이를 확장해가며 탐색하는 방향은 간접적인 투포인터 흐름으로 볼 수 있다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Heaps / Priority Queue, Greedy
  • 설명: 해당 코드는 먼저 각 숫자의 빈도를 해시 맵에 저장(Hash Map)한 뒤, 빈도 기반으로 최댓값을 뽑기 위해 최대 힙(음수 빈도 사용)으로 우선순위를 매겨 상위 k개를 꺼내는 방식으로 동작합니다. 따라서 Hash Map과 Heap/Priority Queue 패턴이 핵심이며, 빈도 기반 추출에서 부분적으로 Greedy 성격도 내포합니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n log k)
Space O(n)

피드백: 카운터를 수집한 뒤 힙을 이용해 상위 k개를 추출하는 방식으로 최댓값 순서를 보장한다.

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

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

Comment thread two-sum/Yiseull.py

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Two Pointers
  • 설명: 해시 맵을 사용해 각 수의 보완 수를 즉시 찾는 방식으로 시간 복잡도 O(n)로 해결합니다. 두 수의 합이 타깃이 되는 쌍을 찾는 대표적인 패턴입니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space 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
  • 설명: 피보나치 수열 형태의 중간 결과를 저장하여 큰 문제를 작은 문제로 나눠 해결하는 DP 패턴이 적용되어 있습니다. 각 단계의 해를 이전 두 값의 합으로 구합니다.

📊 시간/공간 복잡도 분석

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

풀이 1: Solution.climbStairs — Time: O(n) / Space: O(n)
복잡도
Time O(n)
Space O(n)

피드백: 2 이상의 계단 수를 구하기 위해 dp 배열을 한 차례 순회하며 각 위치의 값을 계산합니다.

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

풀이 2: Solution.climbStairs — Time: O(n) / Space: O(n)
복잡도
Time O(n)
Space O(n)

피드백: 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.

공간 복잡도를 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Two Pointers, Dynamic Programming, Hash Map / Hash Set
  • 설명: 왼쪽 곱셈과 오른쪽 곱셈을 이용해 각 원소를 제외한 곱을 구하는 방식으로, 추가 배열에 누적 곱을 저장해 부분 문제를 해결한다. 두 방향으로 누적 곱을 계산하는 점에서 다이나믹 프로그래밍의 누적 상태 활용 패턴에 속한다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(1)

피드백: 2회 순회를 통해 각 위치의 최종 곱을 계산하는 표준 접근으로 효율적이다.

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

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

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.

answer[0]을 1로 할당하니까 로직이 잘 읽히네요. 잘 봤습니다.

공간/시간 복잡도를 코드에 적어주시면 좋을 것 같아요!

Comment thread valid-anagram/Yiseull.py

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Hash Map / Hash Set, Greedy
  • 설명: Counter를 이용해 두 문자열의 문자 빈도를 비교하는 방식으로 해시 맵의 개념을 활용합니다. 간단한 동등성 비교이므로 그리디나 일반적인 해시 기반 비교로 분류할 수 있습니다.

📊 시간/공간 복잡도 분석

복잡도
Time O(n)
Space O(AlphabetSize)

피드백: Counter를 이용해 간단하고 직관적으로 구현됐다.

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

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

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 len(s) != len(t):
  return False

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.

공간 복잡도를 O(1)으로 최적화할 수 있을 것 같습니다!

answer.append(answer[i - 1] * nums[i - 1])

tmp = 1
for i in range(n - 1, -1, -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.

개인적으로 저는 이렇게 작성하는거를 선호합니다!

for i in reversed(range(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.

answer[0]을 1로 할당하니까 로직이 잘 읽히네요. 잘 봤습니다.

공간/시간 복잡도를 코드에 적어주시면 좋을 것 같아요!

Comment thread valid-anagram/Yiseull.py

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 len(s) != len(t):
  return False

@okyungjin

Copy link
Copy Markdown
Contributor

@Yiseull 먼저 풀어주신 3개 먼저 리뷰 남겼습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Solving

Development

Successfully merging this pull request may close these issues.

2 participants