내일배움캠프 79일차 - 자료구조 & 알고리즘 15주차 : 투 포인터(Two Pointer)

투 포인터

숫자 배열이 정렬되어있을 때, 왼쪽과 오른쪽에서 하나 씩 골라서 조건을 충족할 때까지 가운데에서 만날 때 까지 순회하는 비교 방식.

예를 들어, 두 칸의 합이 100이 되는 경우를 고를 때 순회로 완전 탐색 O(n^2)을 하는 방법도 있지만, 양쪽 끝부터 비교해서, 다음과 같이 조건에 따라 인덱스를 고르면서 중앙에 맞닿을 때 까지 순회하는 방법도 있다.

두 칸의 합에 대해
 - 100보다 작으면 → R번 칸을 한 칸 우측이동
 - 100보다 크면 → L번 칸을 한 칸 좌측이동
 - 100이면 → 정답

위와 같은 비교방식은 100만 칸 배열에 대해 완전 탐색과 비교하면 다음과 같은 연산횟수를 가진다.

완전 탐색(모든 쌍 시도): 5,000억 번
투 포인터(양쪽 끝에서 좁혀오기): 100만 번
 = 50만배의 차이

댓글

이 블로그의 인기 게시물

내일배움캠프 사전캠프 - 사전캠프설 연휴 커피 파밍 이벤트 작품 [ EXTREMITY ]

내일배움캠프 29일차 - 커리어데이 2일차 : 클라이언트 프로그래머로서 포트폴리오, 입사준비팁