투 포인터(Two Pointers)는 리스트나 배열에서 두 개의 포인터를 이용하여 원하는 결과를 얻는 알고리즘 기법입니다. 대표적으로 두 개의 포인터를 이용하여 리스트나 배열을 한 번만 순회하면서 원하는 조건을 만족하는 부분을 찾거나, 두 리스트나 배열을 병합하는 작업을 효율적으로 수행할 때 사용됩니다.
투 포인터의 주요 특징:
투 포인터의 활용 예시:
파이썬 코드를 통해 투 포인터를 예시로 살펴보겠습니다. 다음은 두 개의 정렬된 배열에서 공통된 원소를 구하는 투 포인터 코드입니다.
def two_pointer_intersection(arr1, arr2):
ptr1, ptr2 = 0, 0
intersection = []
while ptr1 < len(arr1) and ptr2 < len(arr2):
if arr1[ptr1] == arr2[ptr2]:
intersection.append(arr1[ptr1])
ptr1 += 1
ptr2 += 1
elif arr1[ptr1] < arr2[ptr2]:
ptr1 += 1
else:
ptr2 += 1
return intersection
# 두 개의 정렬된 배열
array1 = [1, 3, 5, 7, 9]
array2 = [3, 6, 7, 9, 12]
common_elements = two_pointer_intersection(array1, array2)
print("공통된 원소:", common_elements)
이 코드는 두 개의 정렬된 배열에서 공통된 원소를 구하는 투 포인터 예시입니다. 두 개의 포인터를 사용하여 두 배열을 순회하며 공통된 원소를 찾습니다.
https://github.com/WooVictory/Ready-For-Tech-Interview/blob/master/Algorithm/투포인터 알고리즘.md