티스토리 뷰
*️⃣ 투 포인터 정의
- 1차원 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 값을 찾을 때 까지 탐색하는 알고리즘
- 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 처리
*️⃣ 투 포인터 동작 방식
- left(l), right(r) 이나 start(s), end(d) 으로 포인트의 이름을 붙임
- 처음에 start=end=0 이고, 조건은 항상 두 포인터들의 관계는 start <= end 이다.
- 2개의 포인터는 현재 부분 배열의 시작(start)과 끝(end)을 가르킨다.
*️⃣ 투 포인터 알고리즘 문제의 유형
- 포인터 2개가 같은 방향으로 진행하는것
- 포인터 2개가 양끝에서 시작하여 반대로 진행하는 것
- 포인터 하나는 한쪽 방향으로만 진행하고, 다른 포인터는 양쪽으로 이동하는 것
*️⃣ 슬라이딩 윈도우 정의
- 고정된 크기의 윈도우를 사용하여 데이터를 처리하는 알고리즘
- 투 포인터 패턴과 유사하다
- 특정한 조건에 따라 윈도우가 커지거나 닫히거나, 새로 생성될수도 있다
*️⃣ 슬라이딩 윈도우 동작 방식
- 윈도우 설정: 시작점에서 고정된 크기(혹은 초기 크기)의 윈도우를 설정
- 윈도우 이동: 한 요소씩 윈도우를 한쪽 방향으로 이동하면서 새로운 요소를 윈도우에 추가하고, 윈도우의 앞쪽에 있는 요소를 제거한다
- 연산 적용: 각 윈도우가 형성될 때마다 원하는 연산을 수행(예: 합계 계산, 최대/최소 값 찾기 등)
*️⃣ 슬라이딩 윈도우 알고리즘 문제의 유형
- 배열이나 문자열같은 선형 구조에서 요소의 일정 범위값을 비교
- 배열이나 리스트와 같은 데이터 구조에서 연속된 부분 배열의 합이나 최대값 등을 계산
*️⃣ 투 포인터와 슬라이딩 윈도우
✦ 차이점
- 투 포인터 알고리즘은 구간의 넓이가 조건에 따라 유동적으로 변함
- 슬라이딩 윈도우 알고리즘은 항상 구간의 넓이가 고정되어 있음
✦ 공통점
선형 공간(1차원 배열)을 2회 이상 반복적으로 탐색해야 할 경우 O(N^2) 이상 걸릴 시간 복잡도를 부분 배열을 활용하여 O(N)으로 줄일 수 있다.
참고
[Algorithm] Two-Pointers Algorithm (투 포인터 알고리즘)
Two-Point Algorithm(투 포인터 알고리즘) : 1차원 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 값을 찾을 때 까지 탐색하는 알고리즘이다.리스트에 순차적으로 접
velog.io
슬라이딩 윈도우 알고리즘: 효율적인 문제 해결 방법
이 블로그 포스트는 슬라이딩 윈도우 알고리즘의 개념, 응용 사례, 장점과 단점을 다룹니다. 슬라이딩 윈도우 알고리즘은 배열이나 리스트와 같은 데이터 구조에서 연속된 부분 배열의 합이나
f-lab.kr
'Programming > 알고리즘' 카테고리의 다른 글
동적계획법(DP, Dynamic Programming) (1) | 2024.11.07 |
---|---|
비트마스킹(BitMask) (1) | 2024.11.06 |
트리(Tree) 구조와 트리 순회 (0) | 2024.11.05 |
그래프 탐색 - DFS & BFS (0) | 2024.10.30 |
완전 탐색 브루트 포스 알고리즘 (0) | 2024.10.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- react-query
- 핀터레스트
- 디바운싱
- 쓰로틀링
- 무한스크롤
- Next.js
- 최적화
- react
- web
- 이브와ICT멘토링
- Network
- 알고리즘
- Tanstack Query
- style-lint
- sass
- github
- 캡스톤디자인
- React Query
- 패키지 매니저
- Firebase
- git
- AI Challeng for Biodiversity
- Tanstack-Query
- 티스토리챌린지
- 오블완
- 네트워크
- Masonry 레이아웃
- prettier
- zustand
- eslint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함