data structures - 투포인터

박현성·2024년 1월 10일
post-thumbnail

투 포인터 알고리즘(Two Pointers Algorithm)은 배열이나 리스트에서 두 개의 포인터를 사용하여 원하는 결과를 얻는 데 사용되는 알고리즘입니다. 주로 정렬된 배열이나 리스트에서 특정한 조건을 만족하는 부분집합을 찾는 데 효과적으로 사용됩니다. 이 알고리즘은 일반적으로 배열의 양 끝에서 시작하여 서로 다가가는 방식으로 동작합니다.

투 포인터 알고리즘의 핵심 아이디어는 두 개의 포인터를 조작하여 원하는 조건에 도달하거나 조건을 만족하는 결과를 찾는 것입니다.

function twoSum(arr, target) {
  let left = 0;               // 배열의 시작 지점
  let right = arr.length - 1;  // 배열의 끝 지점

  while (left < right) {
    let sum = arr[left] + arr[right];

    if (sum === target) {
      return [arr[left], arr[right]];  // 합이 타겟과 일치하는 경우
    } else if (sum < target) {
      left++;  // 합이 타겟보다 작으면 왼쪽 포인터를 오른쪽으로 이동
    } else {
      right--; // 합이 타겟보다 크면 오른쪽 포인터를 왼쪽으로 이동
    }
  }

  return []; // 찾을 수 없는 경우
}

const arr = [2, 7, 11, 15];
const target = 9;

console.log(twoSum(arr, target)); // 출력: [2, 7]

두 포인터를 배열의 양 끝에서 시작하여 합이 target과 일치하는지 확인합니다. 만약 합이 작다면 왼쪽 포인터를 오른쪽으로 이동하고, 합이 크다면 오른쪽 포인터를 왼쪽으로 이동합니다. 이런 식으로 포인터들이 서로 다가가면서 원하는 조건을 찾을 수 있습니다.

투 포인터 알고리즘은 배열이나 리스트에서 서로 다른 두 요소를 조작해가면서 특정한 패턴을 찾는 경우에 효과적으로 사용됩니다.

profile
ui/ux에 중점을 두고 고객의 니즈를 기술적으로 해결하는것을 좋아하는 개발자입니다

0개의 댓글