Sliding Window(2)
-
[알고리즘] Sliding Window
특정 배열에 대해 범위 단위로 로직을 처리할 때 주로 사용되는 알고리즘이다. pointer가 두개라는 점에서 Two-Pointers 알고리즘과 유사하지만, Two-Pointers알고리즘이 서로 독립적으로 움직이는 것과 달리 Sliding window 알고리즘은 포인터 두 개가 서로 동일하게 움직인다. 사실 내 생각에 두 알고리즘을 구분하는 것은 의미가 없어 보인다. 전체 element에 대해 Loop를 돌아야할 문제를, 포인터를 두 개 두고 element 하나씩 찍어가면서 돌면 two pointer고, range 단위로 비교하게 되면 sliding window라고 생각한다. 예컨데 대상배열(전체배열)과 비교 target인 기준배열이 있다면, left와 right라는 pointer 두 개를 두고, 순회가 ..
2021.04.09 -
[Hash Table] Find All Anagrams in a String
s와 p를 input으로 주는데, index=n에서 끊으면 p의 anagrams으로만 구성된 s의 부분집합을 찾으라는 문제이다 여기에는 sliding window라는 알고리즘을 적용할 수 있다 슬라이딩 윈도우는 배열의 일정 범위 값을 비교할때 유용하다 index를 두개 두고 범위만큼 조금씩 움직이는 방법이다 모든 배열의 요소를 일일이 체크할 필요가 없기 때문이다 s안에서 p의 anagram을 찾아야하기 때문에, left를 시작점, right를 p의 길이로 둔다 이후 left를 s의 길이가 되기 전까지 Loop에 돌려주는데, left-right구간만큼 배열을 substring하여 해당 구간을 sorting하고 비교한다. 이 둘이 같으면 시작index인 left를 결과에 집어넣는다 타임아웃 에러뜬다
2021.04.06