Two Sum
정수 배열 nums와 정수 target이 주어질 때 더해서 target이 되는 두 수를 구하는 문제
제약사항
1. 2 <= nums.length <= 103
2. -109 <= nums[i] <= 109
3. -109 <= target <= 109
4. 정답의 경우는 오직 하나만 존재
Example 1:
Input: nums = [2,7,11,15], target = 9 |
Example 2:
Input: nums = [3,2,4], target = 6 |
Example 3:
Input: nums = [3,3], target = 6 |
Solution
/** |
정답이 항상 존재하고 하나만 존재한다는 가정이 있기 때문에 객체에 target-nums[i]를 key로 등록해두면
합이 되는 숫자일 때 key 탐색 시 undefined 아닌 값이 반환된다.
또 반환 값은 두 수의 인덱스 배열이기 때문에 value에는 인덱스를 저장해두면 반환 시 바로 쓸 수 있다.
Example 1의 경우 처음 nums[i]의 값은 2가 되고 이때 numsMap[nums[i]]는 undefined가 된다.
이때 numsMap에는 target-nums[i] : i가 저장된다.
const numsMap = { |
그리고 다음 nums[i]의 값은 7이고 numsMap[nums[i]]는 undefined이 아니기 때문에 합이 target이 되는 케이스이다.
이때 numsMap[nums[i]]의 값과 현재 숫자의 인덱스를 반환하면 두 수의 합이 target이 되는 인덱스 배열을 반환하게 된다.

