11. 투 포인터, 슬라이딩 윈도우 개념

다나·2023년 1월 30일
0

코딩테스트 스터디

목록 보기
14/32
post-thumbnail

1. 투 포인터 ✌️

1-1. 투포인터란?

  • 연속되고 길이가 가변적인 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘
  • 2 개의 포인터를 사용하여 구간의 길이를 가변적으로 잡아가며 특정 조건을 만족하는 구간을 찾는다.
  • 2 개의 포인터 중에서 start 포인터(왼쪽)는 어떤 조건일 때 증감시키고, end 포인터(오른쪽)는 어떤 조건일 때 증감시킬지 결정해야 한다!!

1-2. 투포인터 알고리즘 문제의 유형

1️⃣ 포인터 2개가 같은 방향으로 진행

2️⃣ 포인터 2개가 양끝에서 시작하여 반대로 진행

3️⃣ 포인터 하나는 한쪽 방향으로만 진행하고, 다른 포인터는 양쪽으로 이동

2. 슬라이딩 윈도우 🪟

2-1. 슬라이딩 윈도우란?

  • 부분 배열들을 활용하여 특정 조건을 일치시키는 알고리즘이지만, 부분 배열의 길이가 고정적이다.
  • 투 포인터와 달리 하나의 포인터를 사용해도 된다. 고정적인 부분 배열의 크기를 나타내는 변수가 있다면 포인터 하나만 있어도 부분 배열의 크기를 알고 있기 때문에 각 배열의 끝을 어딘지 알 수 있다. (시작점 : 1, 배열의 크기 : 3 -> 끝 점 : 1+3-1 = 3)
  • 주어진 문제가 부분 배열의 합을 구하는 것이라 할 때, 오른쪽으로 한 칸 옮기더라도 옮기기 전 부분 배열과 옮기고 난 후에는 겹치는 부분이 존재한다. 즉, 기존 구간에서 빠지게 되는 가장 왼쪽 칸의 값은 삭제하고 새 구간에 포함되는 값을 추가해주면 된다.


사진 출처 : https://velog.io/@codenmh0822/투-포인터-슬라이딩-윈도우-구간-합-알고리즘#슬라이딩-윈도우

2-2. 슬라이딩 윈도우의 문제 유형

1️⃣ 구간합

  • 기존의 구간의 합이 S 이고 새로운 구간에선 빠지는 맨 앞 원소가 A 고 새로운 구간에 들어오게 된 원소를 B 라고 하면, 새로운 구간의 합은 S - A + B 가 된다.

2️⃣ Anagram 찾기

3. 참고 자료 📚

https://velog.io/@codenmh0822/투-포인터-슬라이딩-윈도우-구간-합-알고리즘#슬라이딩-윈도우
https://ansohxxn.github.io/algorithm/twopointer/

profile
컴퓨터공학과 학생이며, 백엔드 개발자입니다🐰

0개의 댓글