투 포인터 알고리즘은 주로 정렬된 배열 또는 리스트에서 사용되며, 두 개의 포인터를 사용하여 특정 조건을 만족하는 부분 배열이나 부분 리스트를 찾는 알고리즘입니다. 일반적으로 배열이나 리스트의 특정 구간을 순차적으로 탐색할 때 사용됩니다.
아래는 투 포인터 알고리즘을 사용하여 정렬된 배열에서 합이 특정 값이 되는 두 요소의 인덱스를 찾는 예시 코드입니다.
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
이 되는 두 요소의 인덱스를 찾습니다. left
와 right
포인터를 사용하여 배열을 순회하며, 두 요소의 합을 계산하여 target
과 비교합니다. 조건에 따라 포인터를 이동시키며 원하는 결과를 찾을 때까지 반복합니다.