본문 바로가기

Languages/Python

[python] 투 포인터(Two Pointers) 알고리즘

코딩테스트를 풀다보면 투 포인터로 풀어야하는 문제들을 자주 볼 수 있습니다. 오늘은 투 포인터 알고리즘에 대해 알아봅시다.

 

 

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


 

  • 리스트에 순차적으로 접근해야 할 때 두개의 점의 위치를 기록하면서 처리하는 알고리즘
  • 리스트에 담긴 데이터에 순차적으로 접근해야 할 때는 시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다.

 

위 그림과같이 두 개의 포인터(점)의 위치를 기록하면서 처리한다. 

 

 

[시간복잡도]


O(N)

매 루프마다 항상 두 포인터 중 하나는 1씩 증가하고 각 포인터가 n번 누적 증가해야 알고리즘이 끝난다.

각각 배열 끝에 다다르는데 O(N)이라 둘을 합해도 여전히 O(N)이다.

 

 

 

 

[예제]


백준 3237 두 수의 합이 투 포인터의 예제입니다.

https://e-you.tistory.com/330로 가시면 자세한 문제와 풀이를 볼 수 있습니다.

'Languages > Python' 카테고리의 다른 글

[Python] 이분 탐색  (0) 2022.01.18
[Python] 트리  (0) 2022.01.16
정규표현식 re/compile/파이썬  (0) 2021.08.04
힙 / 힙큐(heapq)  (0) 2021.08.03
파이썬 스택, 큐  (0) 2021.07.22