😎풀이

  1. 투 포인터를 정의하며, 왼쪽 포인터는 배열의 시작점, 오른쪽 포인터는 배열의 종료점에 위치한다.
  2. 각 포인터 위치에서의 합계를 계산하여 포인터를 이동시키거나 반복문을 종료한다.
  3. 각 포인터의 인덱스 위치가 아닌 실제 정수형 위치를 반환하기 위해 +1을 하여 반환한다.
function twoSum(numbers: number[], target: number): number[] {
    // 투 포인터 사용
    let [left, right] = [0, numbers.length - 1]
    while(left < right) {
        const sum = numbers[left] + numbers[right]
        if(sum === target) break
        // 합계에 따른 포인터 이동
        if(sum < target) left++
        if(sum > target) right--
    }

    // 인덱스에 맞게 반환하기 위해 + 1
    return [left + 1, right + 1]
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글