Algorithm

[알고리즘] Range: Two Pointer

noahkim_ 2023. 11. 8. 17:06

1. Two Pointer

  • 조건을 충족하는 구간 혹은 쌍을 찾는 알고리즘 입니다.
  • 두 개의 포인터를 동시에 움직여가며 문제를 해결합니다.
  • 정렬된 선형 자료구조에서 사용됩니다.
    • 답에 가깝게 접근하기 위한 올바른 포인터 이동을 하기 위해서

 

동작 원리

포인터 설정
  • 두 개의 포인터 배치 (배열의 시작과 끝 or 인접한 위치)

 

포인터 이동
  • 범위를 좁히거나 넓히는 방식으로 답을 찾아갑니다. 
  • 한쪽 또는 양쪽 모두를 이동시킵니다.

 

조건 만족 검사
  • 두 포인터의 현재 위치에서 조건을 만족하는지 검사합니다.

 

장점

  • 반복을 줄여 시간복잡도를 줄이는 목적을 가지는 알고리즘 입니다.
  • O(n)으로 최적화 가능

 

2. 문제

Two Sum

  • 배열 중 조건을 만족하는 숫자쌍 찾기

 

문제

 

Fast / Slow

  • 배열 내 중복 원소 확인하기
  • 링크드리스트 내 사이클 확인하기

 

문제

 

 

출처

'Algorithm' 카테고리의 다른 글

[기초 알고리즘] String  (0) 2023.11.08
[기초 알고리즘] 수학: 소수  (0) 2023.11.08
[고급 알고리즘] Greedy  (0) 2023.11.08
[알고리즘] Seach: Binary Search  (0) 2023.10.26
[기초 알고리즘] Sort  (0) 2023.10.26