Skip to content

[lkhoony] WEEK 06 Solutions (테스트용 PR 입니다. 리뷰 불가)#2544

Open
lkhoony wants to merge 12 commits intoDaleStudy:mainfrom
lkhoony:main
Open

[lkhoony] WEEK 06 Solutions (테스트용 PR 입니다. 리뷰 불가)#2544
lkhoony wants to merge 12 commits intoDaleStudy:mainfrom
lkhoony:main

Conversation

@lkhoony
Copy link
Copy Markdown

@lkhoony lkhoony commented Apr 17, 2026

해당 PR은 AI 분석 기능 추가를 위한 테스트 PR 입니다.(리뷰 불가)

답안 제출 문제

  • design-add-and-search-words-data-structure
  • find-minimum-in-rotated-sorted-array
  • 문제 3

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy bot commented Apr 17, 2026

⚠️ Week 설정이 누락되었습니다

프로젝트에서 Week를 설정해주세요!

설정 방법

  1. PR 우측의 Projects 섹션에서 리트코드 스터디 옆 드롭다운(▼) 클릭
  2. 현재 주차를 선택해주세요 (예: Week 14(current) 또는 Week 14)

📚 자세한 가이드 보기


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

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Trie, Backtracking
  • 설명: 이 코드는 Trie 구조를 이용해 단어 저장과 검색을 수행하며, '.' 와일드카드 검색 시 백트래킹을 활용합니다. 효율적인 문자열 검색을 위해 트리와 재귀 탐색을 결합한 패턴입니다.

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy bot commented Apr 17, 2026

📊 lkhoony 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
design-add-and-search-words-data-structure Medium ✅ 의도한 유형
find-minimum-in-rotated-sorted-array Medium ✅ 의도한 유형
graph-valid-tree Medium ✅ 의도한 유형

누적 학습 요약

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

문제 풀이 현황

카테고리 진행도 완료
Array □□□□□□□ 0 / 36 ← 아직 시작 안 함
Backtracking □□□□□□□ 0 / 3 ← 아직 시작 안 함
Binary Search □□□□□□□ 0 / 4 ← 아직 시작 안 함
Binary Search Tree □□□□□□□ 0 / 3 ← 아직 시작 안 함
Binary Tree □□□□□□□ 0 / 11 ← 아직 시작 안 함
Bit Manipulation □□□□□□□ 0 / 5 ← 아직 시작 안 함
Breadth-First Search □□□□□□□ 0 / 13 ← 아직 시작 안 함
Bucket Sort □□□□□□□ 0 / 1 ← 아직 시작 안 함
Combinatorics □□□□□□□ 0 / 1 ← 아직 시작 안 함
Counting □□□□□□□ 0 / 1 ← 아직 시작 안 함
Data Stream □□□□□□□ 0 / 1 ← 아직 시작 안 함
Depth-First Search □□□□□□□ 0 / 18 ← 아직 시작 안 함
Design □□□□□□□ 0 / 5 ← 아직 시작 안 함
Divide and Conquer □□□□□□□ 0 / 6 ← 아직 시작 안 함
Dynamic Programming □□□□□□□ 0 / 18 ← 아직 시작 안 함
Graph Theory □□□□□□□ 0 / 5 ← 아직 시작 안 함
Greedy □□□□□□□ 0 / 4 ← 아직 시작 안 함
Hash Function □□□□□□□ 0 / 1 ← 아직 시작 안 함
Hash Table □□□□□□□ 0 / 16 ← 아직 시작 안 함
Heap (Priority Queue) □□□□□□□ 0 / 4 ← 아직 시작 안 함
Linked List □□□□□□□ 0 / 6 ← 아직 시작 안 함
Math □□□□□□□ 0 / 5 ← 아직 시작 안 함
Matrix □□□□□□□ 0 / 7 ← 아직 시작 안 함
Memoization □□□□□□□ 0 / 2 ← 아직 시작 안 함
Merge Sort □□□□□□□ 0 / 1 ← 아직 시작 안 함
Prefix Sum □□□□□□□ 0 / 2 ← 아직 시작 안 함
Quickselect □□□□□□□ 0 / 1 ← 아직 시작 안 함
Recursion □□□□□□□ 0 / 3 ← 아직 시작 안 함
Simulation □□□□□□□ 0 / 1 ← 아직 시작 안 함
Sliding Window □□□□□□□ 0 / 3 ← 아직 시작 안 함
Sorting □□□□□□□ 0 / 11 ← 아직 시작 안 함
Stack □□□□□□□ 0 / 2 ← 아직 시작 안 함
String □□□□□□□ 0 / 19 ← 아직 시작 안 함
String Matching □□□□□□□ 0 / 1 ← 아직 시작 안 함
Topological Sort □□□□□□□ 0 / 2 ← 아직 시작 안 함
Tree □□□□□□□ 0 / 11 ← 아직 시작 안 함
Trie □□□□□□□ 0 / 4 ← 아직 시작 안 함
Two Pointers □□□□□□□ 0 / 10 ← 아직 시작 안 함
Union-Find □□□□□□□ 0 / 4 ← 아직 시작 안 함

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

🔢 API 사용량 (gpt-4.1-nano)
요청 입력 토큰 출력 토큰 합계 비용
#1 1,544 101 1,645 $0.000195

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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Binary Search
  • 설명: 이 코드는 회전된 정렬 배열에서 최소값을 찾기 위해 이진 탐색 방식을 사용합니다. 중간값과 끝값을 비교하여 탐색 범위를 좁히는 방식이 핵심입니다.

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로 탐색하여 판단하는 방식으로, DFS 패턴에 속합니다.

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy bot commented Apr 17, 2026

📊 시간/공간 복잡도 분석

design-add-and-search-words-data-structure

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

피드백: 이 구현은 Trie 구조를 활용하여 검색 시 '.' 와일드카드에 대해 DFS로 처리하는 방식으로, 시간 복잡도는 단어 길이 m에 비례하며, 공간 복잡도는 저장하는 단어 수 n과 단어 길이 m에 따라 결정됩니다. 효율적이고 적절한 구현입니다.

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

find-minimum-in-rotated-sorted-array

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

풀이 1: findMin_use_math_min — Time: ✅ O(n) → O(n) / Space: ✅ O(n) → O(n)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(n) O(n)

피드백: 이 방법은 배열 전체를 펼쳐서 Math.min을 호출하므로 시간 복잡도는 O(n)이고, 공간 복잡도도 배열 크기만큼의 스택 또는 호출 스택을 사용하여 O(n)입니다. 간단하지만 비효율적입니다.

개선 제안: 이 방법은 배열이 크면 성능이 저하될 수 있으니, 이진 탐색을 활용하는 방법으로 개선하는 것을 고려해볼 만합니다.

풀이 2: findMin_naive — Time: ✅ O(n) → O(n) / Space: ✅ O(1) → O(1)
유저 분석 실제 분석 결과
Time O(n) O(n)
Space O(1) O(1)

피드백: 이 구현은 배열을 한 번 순회하며 최소값을 찾는 방식으로, 시간 복잡도는 O(n)이고 공간 복잡도는 O(1)입니다. 간단하고 직관적입니다.

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

풀이 3: findMin — Time: ✅ O(n log n) → O(log n) / Space: ✅ O(1) → O(1)
유저 분석 실제 분석 결과
Time O(n log n) O(log n)
Space O(1) O(1)

피드백: 이진 탐색을 이용하여 회전된 배열의 최소값을 찾는 방법은 시간 복잡도를 O(log n)으로 줄여 효율적입니다. 구현도 적절합니다.

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

graph-valid-tree

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

피드백: 이 구현은 인접 리스트와 DFS를 활용하여 그래프의 유효성을 검사하는 표준 방법으로, 시간과 공간 복잡도는 노드와 간선 수에 비례합니다. 효율적이고 적절합니다.

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


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

@jylee2033 jylee2033 self-requested a review April 17, 2026 19:00
Copy link
Copy Markdown
Contributor

@jylee2033 jylee2033 left a comment

Choose a reason for hiding this comment

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

덕분에 저번 주에 풀었던 문제들을 다시 리뷰할 수 있었어요!
JavaScript가 익숙하지 않아서 AI의 도움을 받아 코드를 살펴봤는데 find-minimum-in-rotated-sorted-array 문제의 시간 복잡도 주석은 한 번 다시 확인해보시면 좋을 것 같아요!
실제 구현은 더 효율적인데 주석이 더 높게 적혀 있는 것 같았습니다.
다양한 풀이를 고민하고 시도하신 과정이 보여서 인강 깊었어요!
이번 주도 수고 많으셨어요 😊

@jylee2033
Copy link
Copy Markdown
Contributor

@DaleStudy 리뷰해줘

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy bot commented Apr 17, 2026

전체적으로 코드의 가독성과 구조는 잘 정리되어 있으며, 각 문제에 대한 접근법도 적절합니다. 다만, 개선할 수 있는 부분과 추가 피드백 드리자면:

  1. 시간/공간 복잡도 명시

    • find-minimum-in-rotated-sorted-arrayfindMin 함수에 대한 복잡도는 적절히 기술되어 있으나, search 함수의 내부 반복문은 이진 탐색이라 O(log n)이 맞습니다. 명확히 명시하는 것이 좋겠습니다.
    • WordDictionarysearch는 최악의 경우 모든 브랜치를 탐색하므로 O(m * 26^d) (d는 문자열 길이, 알파벳 수) 가능성도 고려할 수 있음을 참고하세요.
  2. 알고리즘 개선 제안

    • findMin에서 이진 탐색을 통한 최적화는 매우 적절하며, 특히 rotated array 문제에 강력합니다. 다만, Math.min(...nums)는 큰 배열에서는 O(n)인데, 명시한 것처럼 스프레드 연산이 스택 오버플로우 가능성을 유의하세요. 대신 이진 탐색 방식이 훨씬 효율적입니다.
    • search 메서드에서 '.' 와일드카드 처리도 깔끔하며, 재귀적 DFS 방식이 적합합니다.
  3. 가독성 및 스타일

    • 들여쓰기와 변수 명이 일관적이며, 함수와 변수명도 직관적입니다.
    • WordDictionary.prototype._search의 이름 앞에 언더스코어를 붙인 것은 내부 메서드임을 나타내어 좋습니다.
    • 주석도 적절하며, 복잡도 표기를 명확히 해주셨습니다.
  4. 추가 제안

    • findMin의 이진 탐색 방식은 거의 최적이지만, 배열이 이미 정렬된 상태임을 활용하는 더 특화된 방법이 있으나, 현재 구현은 충분히 적절합니다.
    • graph-valid-tree의 구현도 깔끔하며, DFS로 사이클 체크와 연결성 체크를 잘 수행하고 있습니다.

요약하면, 전체적으로 좋은 구조와 명확한 코드입니다. 복잡도 표기를 조금 더 명확히 하고, 스프레드 연산자의 주의점을 언급하면 더 좋겠습니다. 계속해서 좋은 코드와 접근법 기대합니다!

@lkhoony lkhoony changed the title [lkhoony] WEEK 06 Solutions [lkhoony] WEEK 06 Solutions (테스트용 PR 입니다. 리뷰 불가) Apr 18, 2026
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