반응형
1. 문제
- 1번 인덱스를 사용하는 배열 numbers와 target이 주어질 때, 두 요소의 합이 target이 되는 인덱스를 배열에 담아 반환하라.
2. 풀이
function twoSum(numbers: number[], target: number): number[] {
let left = 0, right = numbers.length -1;
while(left < right) {
const sum = numbers[left] + numbers[right];
if(sum === target) break;
if(sum > target) right--;
else left++;
}
return [left+1,right+1]
};
- 투포인터를 사용해서 양쪽에서 탐색하며, 두 합이 target보다 크면 right를 감소시키고 작으면 left를 증가시켜가며 인덱스를 찾고, 1번 인덱스를 기준으로 하므로 각 인덱스를 +1하여 배열에 담아 반환.