참고 문헌 :
https://m.blog.naver.com/kks227/220795165570
투 포인터(Two Pointers Algorithm), 슬라이딩 윈도우(Sliding Window) (수정: 2019-09-09)
조금 성향이 비슷하다고 생각하는 기법 2개를 함께 쓰려 합니다. 첫 번째로 소개해드릴 기법은 투 포인터(t...
blog.naver.com
https://ssungkang.tistory.com/entry/Algorithm-Two-Pointers-%ED%88%AC-%ED%8F%AC%EC%9D%B8%ED%84%B0
[Algorithm] Two Pointers, 투 포인터
이번 포스팅에서는 Two Pointers 에 대해서 알아보도록 하겠습니다. Two Pointers 는 1차원 배열에서 두 개의 포인터를 조작하여 원하는 결과를 얻는 알고리즘입니다. 여기서 두 개의 포인터를 사용하
ssungkang.tistory.com
두 포인터 알고리즘 (Two Pointers Method) 개념 정리
- 배열을 따라 두 개의 포인터를 이동시켜 원하는 값을 얻어내는 기법입니다.
- 해당 알고리즘으로 풀 수 있는 문제는 다음과 같습니다.
n개의 정수로 이루어진 배열(arr)과 합이 x인 부분 배열을 구하는 문제
문제풀이 :
1. start = 0, end = 0으로 초기화합니다. sum은 arr[start]의 값으로 초기화합니다.
2. start <= end를 만족할 때 다음 단계를 수행합니다.
3. sum이 x보다 작으면 end을 1 증가하고 sum += arr[end]를 수행합니다.
4. sum이 x보다 크면 sum -= arr[start]를 수행하고 start을 1 증가합니다.
5. sum이 x와 같으면 종료합니다.
2 SUM 문제
설명 : 수 n개로 이루어진 배열(arr)과 합이 x가 되는 배열 원소의 두 개를 구하는 문제
문제풀이 :
1. 숫자를 오름차순으로 정렬합니다.
2. start = 0, end = n - 1으로 초기화합니다.
3. arr[start]와 arr[end]의 합이 x 보다 작으면 start를 1 증가합니다.
4. arr[start]와 arr[end]의 합이 x 보다 크면 end를 1 감소합니다.
5. arr[start]와 arr[end]의 합이 x와 같으면 종료합니다.
6. start가 end보다 작으면 3 ~ 5번을 반복합니다.
'개념 정리 > 알고리즘' 카테고리의 다른 글
| 유클리드 호제법 | GCD, LCM (0) | 2021.12.21 |
|---|---|
| 다익스트라 알고리즘 (Dijkstra algorithm) (0) | 2021.07.04 |
| Greedy Algorithm (그리디, 탐욕 알고리즘) (0) | 2021.06.25 |
| Merge Sort (합병 정렬) (0) | 2021.06.23 |
| 크루스칼 알고리즘 & 프림 알고리즘 (0) | 2021.06.15 |