Skip to content

Conversation

@radiantchoi
Copy link
Contributor

@radiantchoi radiantchoi commented Dec 26, 2025

답안 제출 문제

작성자 체크 리스트

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

검토자 체크 리스트

Important

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

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

@radiantchoi radiantchoi added the py label Dec 26, 2025
@radiantchoi radiantchoi moved this from Solving to In Review in 리트코드 스터디 6기 Dec 26, 2025
@radiantchoi
Copy link
Contributor Author

@DaleStudy 리뷰해줘

@dalestudy
Copy link
Contributor

dalestudy bot commented Dec 26, 2025

전체적으로 다양한 문제에 대한 깔끔한 해결책들이 포함되어 있으며, 코드 가독성과 주석도 잘 작성되어 있습니다. 몇 가지 개선점과 격려의 말씀 드리자면:

  1. 시간/공간 복잡도

    • lengthOfLongestSubstring: 현재 구현은 문자열의 중복 체크와 서브스트링 갱신을 위해 딕셔너리와 새 딕셔너리 재생성을 사용합니다. 이로 인해 최악의 경우 O(n^2) 시간 복잡도가 될 수 있습니다. 슬라이딩 윈도우 기법을 활용하면 더 효율적 (O(n))으로 개선 가능합니다.
    • setZeroes: 현재는 재귀 호출을 통해 주변 원소를 마크하는 방식으로, 최악의 경우 O(mn) 시간과 공간을 사용합니다. 불필요한 재귀 호출을 줄이고, 방문 여부를 별도 배열로 관리하면 좀 더 명확하고 효율적입니다.
  2. 접근법 제안

    • lengthOfLongestSubstring: 슬라이딩 윈도우 방법으로 개선하는 것을 추천합니다. 중복 체크와 윈도우 이동이 더 직관적이고 빠릅니다.
    • setZeroes: 현재 마크 방식은 안전하지만, 두 번째 방문 방식을 사용하는 것도 고려해보세요. 공간을 더 효율적으로 사용할 수 있습니다.
  3. 가독성 및 스타일

    • lengthOfLongestSubstring: 변수명 current, tuning, result는 의미 전달이 좋습니다. 다만, current.get(letter, index) 대신 current.get(letter, -1)로 기본값을 -1로 두고, 조건문도 간단히 할 수 있습니다.
    • setZeroes: 재귀 호출 대신 반복문과 별도 방문 배열을 사용하는 것도 가독성과 안정성을 높입니다.
    • 각 함수에 대해 명확한 타입 힌트와 주석이 잘 작성되어 있어 유지보수에 좋습니다.
  4. 격려와 학습 포인트

    • 다양한 문제들을 깔끔하게 해결하셨고, 코드도 읽기 쉽습니다. 특히, setZeroes에서 주변 탐색하는 재귀는 이해하기 쉽고, 좋은 시도입니다.
    • 앞으로 더 효율적인 알고리즘을 고민해보는 것도 좋겠어요. 예를 들어, 길어진 문자열이나 큰 그리드에서도 빠르게 동작하는 방법을 계속 탐구하면 큰 도움이 될 겁니다.

계속해서 다양한 문제에 도전하시길 응원하며, 발전하는 모습이 멋집니다!

@rivkode rivkode self-requested a review December 26, 2025 11:28
Copy link
Member

@rivkode rivkode left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!


// 매번 새로운 노드를 생성하고, 지금까지 순회한 모든 결과를 이 새로운 노드의 next로 연결
while (head !== null) {
const newNode = new ListNode(head.val);
Copy link
Member

Choose a reason for hiding this comment

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

새로운 노드를 생성하는 것도 좋지만 기존 노드의 next를 변경하는 방식도 있습니다!
그런데 이게 어떻게 보면 직관적이긴 하네요 ㅎㅎ

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

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

2 participants