[TIL]LeetCode#1

minhyuk_ko·2022년 2월 1일
0

TIL

목록 보기
3/7

1. Two Sum

덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라.

입력

nums = [2,7,11,15], target = 9

출력

[0,1]

풀이

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        my_dict = {}
        for index, val in enumerate(nums):
            if target-val in my_dict:
                return [my_dict[target-val], index]
            my_dict[val] = index

로직

for 반복문과 enumerate 함수로 인덱스와 값을 분리하여 빈객체에 키값과 밸류값을 반대로 저장한다. 그리고 for 반복문에 타겟에서 각 인덱스에 해당하는 값을 뺀 뒤, 남은 값(target-val)을 채워진 객체의 키값에서 조회하고 존재하면 그에 해당하는 값, 즉 인덱스 값과 현재 인덱스값을 리스트로 반환한다.

느낀점

처음엔 for 반복문을 중복으로 사용하여 결과값을 반환하는데 성공시켰지만 해당 방법의 시간 복잡도 및 전체 백분위(시간 기준)에서 한참 떨어지는 것을 보고 다시 풀이를 고민하게 되었다. 문제에 객체 및 enumerate 함수를 도입시켜 최대한 효율적으로 풀어보고자 노력하였다.

profile
BE Developer

0개의 댓글