투포인터(Two Pointer)
리스트에 순차적으로 접근해야 할 때 두개의 점의 위치를 기록하면서 처리하는 알고리즘
예제 (연속 부분 수열)
어떤 숫자들의 리스트가 주어질 때, 해당 리스트의 연속 수열의 합이 특정 값(m)을 가지는 경우의
public class p04 {
public static int solution(int n , int m, int[] arr){
int answer = 0;
int lt = 0;
int sum = 0;
for(int rt = 0; rt < n; rt++){
sum += arr[rt];
if(sum == m) answer ++;
while(sum >= m) {
lt++;
sum -= arr[lt];
if(sum == m) answer++;
}
}
return answer;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) arr[i] = sc.nextInt();
System.out.println(solution(n,m,arr));
}
}
Sliding Window
고정 사이즈의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이용해 문제를 풀이하는 알고리즘
교집합의 정보를 공유하고, 차이가 나는 양쪽 끝 원소만 갱신하는 방법
투 포인터 알고리즘과 연동하여 많이 쓴다.
source
https://butter-shower.tistory.com/226
[Algorithm] 투포인터(Two Pointer) 알고리즘
알고리즘 문제를 풀다보면 종종 나오는 투포인터 알고리즘! 막 꼬여가지고 ㅋㅋㅋ 저도 중간에 제대로 못짜고 그러는 경우가 많은데요, 많은 코딩테스트 문제에 등장하는 것은 아니지만 잊을만
butter-shower.tistory.com
https://ji-musclecode.tistory.com/37
슬라이딩 윈도우 알고리즘(Sliding Window) (feat. 투 포인트)
1. 슬라이딩 윈도우 알고리즘 (Sliding Window) ( 슬라이딩 윈도우 알고리즘 간단 예제 ) 1, 2, 3, 4, 5, 6, 7 로 이루어진 숫자 배열에서 A[i] + A[i+1] + A[i+2] 형식으로 연속적인 3개의 숫자의 합의 최댓값을
ji-musclecode.tistory.com
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
'CS > 알고리즘' 카테고리의 다른 글
[Algorithm] 이분 탐색(Binary Search) (1) | 2023.03.12 |
---|---|
[Algorithm] 삽입 정렬(Insert Sort) (0) | 2023.03.12 |
[Algorithm] 거품 정렬 (Bubble Sort) (0) | 2023.03.12 |
[자료구조] 스택(Stack) 과 큐(Queue) (0) | 2023.03.12 |
[Algorithm] 선택 정렬(Selection Sort) (0) | 2023.03.12 |