투 포인터 알고리즘 (Two Pointers Algorithm)

Sunhee·2024년 4월 25일
0

자료구조

목록 보기
7/14
post-thumbnail

투 포인터 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 두 개의 포인터를 사용하여 특정 조건을 만족하는 부분 배열이나 부분 리스트를 찾는 알고리즘입니다. 일반적으로 배열이나 리스트의 특정 구간을 순차적으로 탐색할 때 사용됩니다.

투 포인터 알고리즘의 접근 방법

  1. 포인터 초기화: 알고리즘을 시작하기 전에 두 개의 포인터를 배열이나 리스트의 시작 지점에 위치시킵니다.
  2. 포인터 이동: 특정 조건에 따라 포인터를 이동시킵니다. 이 때, 포인터를 어떻게 이동시킬지는 문제의 조건에 따라 다릅니다.
  3. 조건 검사: 두 포인터 사이의 구간을 조건에 따라 검사합니다. 만약 조건을 만족하는 구간을 찾았다면, 필요한 작업을 수행합니다.
  4. 포인터 이동 및 반복: 필요한 작업을 수행한 후에는 다시 포인터를 이동시키고, 조건을 검사하여 반복합니다.

예시 코드

아래는 투 포인터 알고리즘을 사용하여 정렬된 배열에서 합이 특정 값이 되는 두 요소의 인덱스를 찾는 예시 코드입니다.

public class TwoPointersExample {
    public static int[] twoSum(int[] nums, int target) {
        int left = 0;
        int right = nums.length - 1;

        while (left < right) {
            int sum = nums[left] + nums[right];
            if (sum == target) {
                return new int[]{left, right};
            } else if (sum < target) {
                left++;
            } else {
                right--;
            }
        }

        // 조건을 만족하는 요소가 없는 경우
        return new int[]{-1, -1};
    }

    public static void main(String[] args) {
        int[] nums = {2, 7, 11, 15};
        int target = 9;
        int[] result = twoSum(nums, target);
        System.out.println("두 요소의 인덱스: " + result[0] + ", " + result[1]);
    }
}

위의 코드에서 twoSum 메서드는 배열 nums에서 합이 target이 되는 두 요소의 인덱스를 찾습니다. leftright 포인터를 사용하여 배열을 순회하며, 두 요소의 합을 계산하여 target과 비교합니다. 조건에 따라 포인터를 이동시키며 원하는 결과를 찾을 때까지 반복합니다.

0개의 댓글

관련 채용 정보