Repository navigation
Conversation
|
🤖 AI 리뷰(알고리즘 패턴, 시간/공간 복잡도, 학습 현황) 결과는 Checks 탭에서 볼 수 있어요. |
| max_len = 0 | ||
|
|
||
| for num in nums_set: | ||
| if num - 1 in nums_set: # 이전 숫자가 존재하는(연속 시작점이 있는) 경우에는 continue |
There was a problem hiding this comment.
제 풀이에 리뷰 달아주신 부분에 대한 코멘트를 읽어보다가 여기로 넘어오게 되었네요 ㅎㅎ
저는 정렬 후 dp[i]를 nums[i]로 끝나는 종점으로 정의해 O(n log n)이었는데,
num - 1이 없을 때만 시작점으로 간주해서 정렬과정이 필요가 없어 O(n)이 시간복잡도가 되네요.
시작점이 아니면 continue를 하고
while문은 시작점에서만 돌게 되는 코드 구조 새롭게 배워갑니다 !!
| rob_current = nums[idx] + explore(idx + 2) | ||
| skip_current = explore(idx + 1) | ||
| memo[idx] = max(rob_current, skip_current) |
There was a problem hiding this comment.
저는 dp[i]를 i번째 집을 반드시 방문할때 최대로 정의해서 bottom up 방식으로 풀었는데,
여기서는 idx부터 끝까지의 최대 를 top down방식으로 구하셨네요
@201411108님 풀이를 보면 변수명이 명확하다는 게 단번에 느껴집니다
rob_current, skip_current이런 식으로 변수명을 정의하셔서
굉장히 읽기 좋네요:)
저는 재귀를 쓸 때 recursionerror가 언제 발생할까 고민하는데, 어떤 경우에 재귀를 쓰시고 어떤 경우에 bottom-up을 쓰시는지 기준이 궁금합니다!
There was a problem hiding this comment.
코멘트 감사드립니다!
저도 사실 알고리즘을 다시 잡은지 얼마 되지 않아 어떨 때 재귀함수를 써야하고, 어떤 경우에 bottom up으로 타뷸레이션을 써야할지 경험을 많이 해야한다고 생각하고 있어요.
functional programming 관점으로 생각하는 연습을 많이 하고 있는데요. FP 관점으로 생각했을 때 재귀함수가 적합하다 생각하여 재귀가 가능한 경우 어떻게 쓸지에 대해 고민을 하게 되는 것 같습니다.
이번 문제의 경우, 종료 조건이 명확했기 때문에 재귀함수로 작성해야겠다는 생각이 들었던 것 같아요.
사견입니다만, 알고리즘 문제의 꽤 많은 부분은 문제에서 어떤 문제 해결 방식을 써야 하는지에 대한 힌트를 담고 있다고 생각해요. 역설적으로 AI로 인해 해결 자체는 쉬워진 요즘에 오히려 문제를 어떻게 해결할지 방향을 잡아야 한다고 생각하는데 오히려 알고리즘 문제 해결이 도움이 많이 된다고 생각합니다. 이런 부분에서 다양한 접근법을 많이 공유할 수 있으면 좋을 것 같아요!
There was a problem hiding this comment.
좋은 인사이트 감사합니다 :)
종료 조건이 명확할 때 재귀가 자연스럽다는 기준은 저도 다양한 문제를 풀어보면서 안목을 길러야 할 것 같네요.
말씀해 주신 부분 매우 공감합니다..
방향을 잡는 근육을 기르는 건 비단 코딩 테스트뿐 아니라, 문제를 정의하고 해결 방법을 고민하는 힘이 중요한 지금 시대의 초석이 될 것 같네요
수고하셨습니다!
| from collections import defaultdict | ||
|
|
||
| class Solution: | ||
| def twoSum(self, nums: list[int], target: int) -> list[int]: | ||
| dictionary = defaultdict(int) | ||
|
|
||
| for i, num in enumerate(nums): | ||
| diff = target - num | ||
| if diff in dictionary and i != dictionary[diff]: | ||
| return [i, dictionary[diff]] | ||
| dictionary[num] = i |
There was a problem hiding this comment.
안녕하세요 :) 말씀해 주신 defaultdict 요긴하게 활용하고 있습니다.
다만 이 문제에서는 11번째 줄에 diff in dictionary로 key의 유무를 먼저 확인한 후에 dictionary[diff]를 읽어서 없는 key에 접근할 일이 없으니, defaultdict 없이도 충분해 보인다고 생각됩니다..!
답안 제출 문제
작성자 체크 리스트
In Review로 설정해주세요.검토자 체크 리스트
Important
본인 답안 제출 뿐만 아니라 다른 분 PR 하나 이상을 반드시 검토를 해주셔야 합니다!