Skip to content

[hwi-middle] WEEK 08 solutions#2570

Merged
hwi-middle merged 1 commit intoDaleStudy:mainfrom
hwi-middle:main
Apr 26, 2026
Merged

[hwi-middle] WEEK 08 solutions#2570
hwi-middle merged 1 commit intoDaleStudy:mainfrom
hwi-middle:main

Conversation

@hwi-middle
Copy link
Copy Markdown
Contributor

@hwi-middle hwi-middle commented Apr 26, 2026

답안 제출 문제

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

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 패턴을 사용합니다. 방문한 노드를 저장하여 중복 방문을 방지합니다.

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 테이블을 1차원 배열로 최적화하여 사용합니다. 두 문자열의 부분 수열을 비교하며 최장 길이를 계산하는 전형적인 DP 패턴입니다.

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
  • 설명: 이 코드는 고정 크기의 윈도우를 이동시키며 문자열을 탐색하는 슬라이딩 윈도우 패턴을 사용합니다. 또한 문자 빈도 수를 세기 위해 해시 맵을 활용하여 효율적인 계산을 수행합니다.

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy Bot commented Apr 26, 2026

📊 hwi-middle 님의 학습 현황

이번 주 제출 문제

문제 난이도 유형 분석
clone-graph Medium ✅ 의도한 유형
longest-common-subsequence Medium ⚠️ 유형 불일치
longest-repeating-character-replacement Medium ✅ 의도한 유형
palindromic-substrings Medium ⚠️ 유형 불일치
reverse-bits Easy ✅ 의도한 유형

누적 학습 요약

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

문제 풀이 현황

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

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

🔢 API 사용량 (gpt-4.1-nano)
요청 입력 토큰 출력 토큰 합계 비용
#1 1,899 179 2,078 $0.000262

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
  • 설명: 이 코드는 문자열의 부분 문자열이 회문인지 여부를 저장하는 2차원 DP 테이블을 활용하여, 중복 계산을 피하고 효율적으로 회문 개수를 세는 방식입니다.

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy Bot commented Apr 26, 2026

📊 시간/공간 복잡도 분석

clone-graph

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

피드백: 제공된 코드는 그래프의 노드 수 n과 간선 수 e에 비례하는 시간 복잡도와 노드 수 n에 비례하는 공간 복잡도를 갖습니다. 복제 과정에서 각 노드를 딱 한 번씩 방문하며, 해시맵을 통해 이미 복제된 노드를 재사용하므로 정확한 분석입니다.

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

longest-common-subsequence

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

피드백: 이 구현은 두 문자열 길이 m, n에 대해 각각 반복하며, DP 배열을 길이 n으로 유지하여 시간 복잡도 O(m * n), 공간 복잡도 O(n)을 달성합니다. 복잡도 분석이 정확합니다.

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

longest-repeating-character-replacement

⚠️ 분석 결과가 없습니다.

palindromic-substrings

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

피드백: 이 구현은 문자열 길이 n에 대해 모든 부분 문자열을 검사하며, DP 테이블을 n x n 크기로 유지하여 시간과 공간 모두 O(n^2)입니다. 분석이 정확합니다.

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

reverse-bits

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

피드백: 이 코드는 32번 반복하는 루프를 통해 비트 역순을 수행하며, 시간 복잡도는 상수 시간 O(32), 공간 복잡도는 O(1)입니다. 분석이 정확합니다.

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


🤖 이 댓글은 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.

🏷️ 알고리즘 패턴 분석

  • 패턴: Bit Manipulation
  • 설명: 이 코드는 비트 연산을 활용하여 정수의 비트 순서를 뒤집는 문제로, 비트 조작 기법을 사용하는 패턴에 속합니다.

@hwi-middle
Copy link
Copy Markdown
Contributor Author

@DaleStudy 리뷰해줘

@dalestudy
Copy link
Copy Markdown
Contributor

dalestudy Bot commented Apr 26, 2026

먼저, 여러 문제에 대한 솔루션을 깔끔하게 정리해서 보여주신 점이 인상적입니다. 전체적으로 가독성도 좋고, 일관된 스타일을 유지하고 계셔서 좋습니다. 몇 가지 피드백을 드리자면:

  1. 시간/공간 복잡도 명시 요청: 각 솔루션에 대해 TC, SC를 명시하는 주석 또는 코멘트를 추가하는 것을 추천합니다. 예를 들어, // TC: O(n), SC: O(n)와 같이 표현하면, 리뷰어가 더 빠르게 이해할 수 있어요.

  2. 복잡도 평가: 일부 솔루션은 이미 최적화된 것으로 보이나, longestCommonSubsequenceO(n * m) 시간 복잡도와 O(min(n, m)) 공간 복잡도는 적절히 평가되어 있습니다. 다만, cloneGraph의 경우, 재귀 호출과 해시맵 사용으로 인해 최악의 경우 O(V + E)이며, 이 역시 적절하게 언급하면 좋겠습니다.

  3. 더 나은 접근법 제안: 현재 해결책들은 해당 문제에 적합하며 표준적입니다. 하지만, longestCommonSubsequence에서는 DP 대신 더 최적화된 방법이 없지만, 이 솔루션이 가장 보편적이고 안정적입니다. cloneGraph의 경우, BFS를 활용하는 방법도 고려할 수 있는데, 이는 재귀 호출 스택을 줄이고자 할 때 유용할 수 있습니다. 다만, 현재 방식도 충분히 좋습니다.

  4. 가독성 및 스타일: 변수 이름, 들여쓰기, 공백 등 모두 깔끔하게 유지되어 있습니다. 다만, cloneGraph에서 if (nodeMap.contains(node)) 대신 if (nodeMap.count(node)) 또는 if (nodeMap.find(node) != nodeMap.end())를 사용하는 것도 C++ 표준 관례에 더 가깝습니다. (C++17 이하 기준)

  5. 불필요한 주석 제거: clone-graph의 노드 정의 부분 주석이 포함되어 있는데, 필요하다면 별도 설명이 있거나, 아니라면 제거해도 깔끔합니다.

전반적으로 잘 정리된 솔루션과 깔끔한 코드입니다. 앞으로도 이와 같은 구조와 스타일을 유지하시면서, 복잡도 명시와 약간의 최적화 팁을 추가하시면 더욱 완성도 높은 PR이 될 것 같아요. 수고하셨습니다!

@hwi-middle
Copy link
Copy Markdown
Contributor Author

@DaleStudy 승인

Copy link
Copy Markdown
Contributor

@dalestudy dalestudy Bot left a comment

Choose a reason for hiding this comment

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

승인되었습니다! 👍

@hwi-middle hwi-middle merged commit 5ddb623 into DaleStudy:main Apr 26, 2026
3 checks passed
@github-project-automation github-project-automation Bot moved this from In Review to Completed in 리트코드 스터디 7기 Apr 26, 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.

1 participant