huthut_kwon.log
로그인
huthut_kwon.log
로그인
[알고리즘] 투 포인터 (Two Pointers)
헛헛한꿔녀니
·
2023년 12월 5일
팔로우
0
Java
Spring
algorithm
pointer
twopointers
스프링
알고리즘
자료구조
자바
투포인터
포인터
0
알고리즘
목록 보기
6/9
💡 투 포인터 (Two Pointers)
👉 배열에서 두 개의 포인터를 사용하여 원하는 결과를 얻는 방법이다.
👉 두 개의 포인터 배치 방법은 아래와 같다.
같은 방향에서 시작하는 경우 : 첫 번째 원소에 둘 다 배치한다.
서로 다른 방향에서 시작하는 경우 : 첫 번째 원소와 마지막 원소에 배치한다.
👉 다중 for문의 복잡도를 좀 더 선형적으로 풀 수 있다.
💡 투 포인터 예시
👉 아래 배열에서 부분 합이 9가 되는 구간을 찾는 방법
[1, 2, 5, 3, 7, 2, 4, 3, 2]
기존 단순 for문 이용 방법
0번 인덱스 ~ 0번 + 1 인덱스 값들을 끝까지 더하면서 Target 9가 되는 구간 찾기
1번 인덱스 ~ 1번 + 1 인덱스 값들을 끝까지 더하면서 Target 9가 되는 구간 찾기
위와 같은 방식으로 마지막 인덱스까지 루프를 돌면서 Target 9가 되는 구간을 찾는다.
-> 알고리즘 시간복잡도 : O(n제곱)
투 포인터 방법
포인터 P1과 포인터 P2를 지정하고 Target 9 보다 작으면 P1 을 이동하고 더하면서 Target 9가 되는 구간을 찾는다.
Target 9 보다 크면 P2 를 이동하고 빼면서 구간을 찾는다.
-> 알고리즘 시간복잡도 : O(n)
헛헛한꿔녀니
BE
팔로우
이전 포스트
[알고리즘] 이진 탐색 (Binary Search)
다음 포스트
[알고리즘] 그리디 알고리즘 (Greedy Algorithm)
0개의 댓글
댓글 작성