이름 | 정렬 여부 | 윈도우 사이즈 | 이동 방향 |
---|---|---|---|
투 포인터 | 대부분 O | 가변 | → ← |
슬라이딩 윈도우 | X | 불변 | → |
투 포인터는 대개 시작점과 끝점, 또는 왼쪽 포인터와 오른쪽 포인터 두 지점을 기준으로 하는 전략이다.
주로 정렬된 배열에서 두 포인터 사이의 범위를 좁혀 나가게 된다.
[1, 2, 3, 4, 5] 시작
1, [2, 3, 4, 5] 왼쪽 포인터 +1
1, 2, [3, 4, 5] 왼쪽 포인터 +1
1, 2, [3, 4], 5 오른쪽 포인터 -1
슬라이딩 윈도우는 고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터들을 확인하는 전략이다.
주로 정렬된 배열을 대상으로 하는 투 포인터 기법과 달리, 슬라이딩 윈도우는 정렬 여부에 관계없이 활용될 수 있다.
사실 슬라이딩 윈도우는 2개의 네트워크 호스트 간의 패킷 흐름을 제어하기 위한 방법을 지칭하는 네트워크 용어이다.
네트워크에서 패킷을 전송할 때 고정 사이즈의 윈도우가 옆으로 이동하면서 그 다음 패킷들을 전송하는 방식인 것이다.
window size = 3
[1, 2, 3], 4, 5
1, [2, 3, 4], 5
1, 2, [3, 4, 5]
참고 자료 :
파이썬 알고리즘 인터뷰 (박상길 지음)