리트코드 – 1. Two Sum

https://leetcode.com/problems/two-sum/

배열의 요소를 저장하기 위한 해시 테이블을 만듭니다.
배열을 반복하고 각 요소에 대해 타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는지 확인합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는 경우 타겟에 합산되는 두 숫자를 찾았습니다. 두 숫자의 인덱스를 반환합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 없는 경우 다음 요소로 계속 진행합니다.
배열의 모든 요소를 확인할 때까지 단계 2-4를 반복합니다.
다음은 Python에서 이 알고리즘을 구현하는 방법의 예입니다.

def two_sum(nums, target):
  """
  타겟에 합산되는 배열의 두 숫자를 찾습니다.

  Args:
    nums: 숫자 배열.
    target: 타겟 합계.

  Returns:
    타겟에 합산되는 두 숫자의 인덱스 목록.
  """

  hash_table = {}
  for i in range(len(nums)):
    hash_table[nums[i]] = i

  for i in range(len(nums)):
    complement = target - nums[i]
    if complement in hash_table:
      return [i, hash_table[complement]]

  return None

알고리즘은 다음과 같이 작동합니다.

배열의 요소를 저장하기 위한 해시 테이블을 만듭니다.
배열을 반복하고 각 요소에 대해 타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는지 확인합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 있는 경우 타겟에 합산되는 두 숫자를 찾았습니다. 두 숫자의 인덱스를 반환합니다.
타겟에서 해당 요소를 뺀 값이 해시 테이블에 없는 경우 다음 요소로 계속 진행합니다.
배열의 모든 요소를 확인할 때까지 단계 2-4를 반복합니다.
알고리즘은 O(n) 시간 복잡도를 가지며 n은 배열의 요소 수입니다.