⚙️ Two Pointers & Sliding Window

kkmdevel·2024년 10월 4일

📋 투 포인터 & 슬라이딩 윈도우 알고리즘

투 포인터(Two Pointers)와 슬라이딩 윈도우(Sliding Window) 알고리즘은 배열이나 문자열과 같은 선형 자료구조에서 특정 구간을 효율적으로 탐색하는 두 가지 방법이다.
이 두 알고리즘은 빠르고 간결하게 구간 합, 조건 만족 여부 등을 판단할 수 있어 유사한 문제를 해결하는 데 자주 사용된다.


📖 투 포인터(Two Pointers) 개념

  • 두 개의 포인터: 배열의 양 끝 또는 특정 위치에서 시작하여 원하는 조건에 따라 두 포인터를 각각 이동시키며 조건을 만족하는 값을 탐색한다.

  • 주로 사용하는 경우: 정렬된 배열에서 특정 구간 합을 찾거나, 두 개의 값이 만족하는 조건을 찾아야 하는 문제에서 사용된다.

  • 효율성: 투 포인터는 일반적인 탐색 문제를 O(n) 시간 복잡도로 해결할 수 있어, 모든 경우를 탐색하는 브루트포스보다 빠르다.


📖 슬라이딩 윈도우(Sliding Window) 개념

  • 윈도우 이동: 특정 크기의 구간(윈도우)을 설정하고, 이 구간을 한 칸씩 이동시키면서 원하는 값을 찾는다. 구간의 시작과 끝을 이동시키며 조건을 확인한다.

  • 주로 사용하는 경우: 고정된 길이의 구간에서 합, 평균, 최대값, 최소값 등을 구하는 문제에서 유용하며, 연속된 요소의 합이나 특정 조건을 만족하는 부분 배열을 찾는 데 사용된다.

  • 효율성: 구간의 시작과 끝을 한 칸씩 이동시켜 조건을 확인하므로 O(n)의 시간 복잡도로 문제를 해결할 수 있다.


📊 차이점과 공통점

알고리즘설명시간 복잡도주요 활용 예시
투 포인터두 개의 포인터를 사용해 배열의 특정 구간이나 값 탐색O(n)두 수의 합, 회문 검사, 특정 구간 탐색
슬라이딩 윈도우고정된 크기의 윈도우를 이동시키며 구간 내 합/최대/최소 계산O(n)고정 크기 구간 합, 부분 배열의 최대/최소 합

투 포인터는 각각 포인터를 이동해 구간을 탐색
슬라이딩 윈도우는 고정된 크기의 구간을 이동하며 조건을 확인

profile
25/08/12

0개의 댓글