less than 1 minute read

Two Sum - LeetCode

문제 파악

주어진 배열에서 target과 일치하는 두개의 값(한 가지 만 존재)의 인덱스를 반환 하는 것이다.

접근 방법

  1. 딕셔너리 생성: 배열의 값과 인덱스를 매핑할 딕셔너리를 생성 후 저장(보수 값 빠르게 확인 가능).
  2. 반복문: 배열을 반복하면서 각 숫자에 대한 target의 보수를 계산.
  3. 조건: 보수 값이 딕셔너리에 있는지 확인하고, 동시에 현재 인덱스와 보수의 인덱스가 같은지 확인(중복 인덱스 방지).
  4. 결과값 반환: 조건문 일치시 현재 인덱스와 보수의 인덱스를 반환.

코드 구현

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        dic = {}
        
        for i, v in enumerate(nums):
            dic[v] = i
            
        for i, v in enumerate(nums):
            complement = target - v
            if complement in dic and i != dic[target-v]:
                return [i, dic[target-v]]

배우게 된 점

  • is not 연산자와 != 연산자의 차이를 알게됨
    • is not : 객체 까지 비교 ex) 3 is 3.0 : False
    • == : 값만 비교 ex) 3 == 3.0 : True

Leave a comment