알고리즘/알고리즘 3

Two Pointer | 투포인터 알고리즘

1. 투포인터 Two Pointers 배열, 문자열같은 선형구조에서 다른 두 곳을 가리키며 원하는 값을 찾아가는 방법이다. 2. Nested loop ,2 loop를 쓴다면 배열이나 문자열이 길이가 109318390481290357982590182409840192가 된다면 시간복잡도 O(N^2) 공간복잡도 O(1) 가 되어 소요되는 시간이 기하급수적으로 올라가게된다. 3. Two pointer pattern을 사용하자 4. 주어진 배열에서 연속된 배열의 합이나 특정값을 구할때 사용한다.

Sliding window | 슬라이딩 윈도우 알고리즘

1. 슬라이딩 윈도우 알고리즘이란? 윈도우(특정범위)가 있을때 배열이나 내부 요소의 값을 윈도우로 이동하며 해결하는 알고리즘이다 1. 위의 파란색 범위를 윈도우라고 한다. 2. 윈도우를 이동을 하며 배열을 탐색한다. 2. 배열에서 연속하는 요소들을 연산하려고 할때 쉽게 중첩된 for loop를 이용해서 구하기 쉬운데 O(n^2)을 가지게 되어 효율성에서 많이 문제가 생긴다. 3. 이럴때 슬라이딩 윈도우 알고리즘을 이용한다 배열이나 문자열같은 선형구조에서 일정범위값이 있을때 // 예 ) 배열이 있을때 배열에서 연속하는 5개 요소의 합중 최대값을 리턴한다. // [1, 3, 2, 9, 0, 1, 2, 5, 7, 8, 3] 연속하는 5개의 요소를 이동하며 합을 구하게 된다. [1, 3, 2, 9, 0, 1, ..