• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

two_sum 딕셔너리 문제 코드관련 질문이 있습니다.

23.09.23 11:31 작성 조회수 238

1

class Solution(object):
    def twoSum(self, nums=[3,3], target=6):
        ans = []
        dict = {}
        for i,v in enumerate(nums):
            if target-v in dict:
                ans.append(prev)
                ans.append(i)
                return ans
            dict[v] = i
            prev = i

이렇게하면, for문 안에서 리스트를 append하는거니까 총 O(n) 하는거아닌가요? 왜 예시 테스트케이스는 통과를 했는데 리트코드에서 submit을 누르면 나머지 테스트케이스는 통과하지 못하는거죠 ㅜㅜ

답변 1

답변을 작성해보세요.

1

Ambition님의 프로필

Ambition

질문자

2023.09.23

아 찾았습니다. 저도 모르게 nums = [3,3], target = 6의 테스트케이스를 기준으로 해서 prev를 리스트처럼 순서에 의존하다보니 틀리는거였군요 따라서 모범답안과 같이 해당하는 키의 value를 추가하기 위해 ans.append(my_dict[target-v])와 ans.append(i)로 하는게 맞는거 같습니다

추가로, chatgpt로 질문을 해봤는데 dict는 파이썬의 예약어로 되어있어서 덮어씌울 위험이 있기 때문에 my_dict와 같이 변수명을 설정해주는 것이 좋다고 합니다 :)