본문 바로가기

알고리즘

슬라이딩 윈도우

- 부분문자열 문제에서 활용될 수 있는 개념

- 주어진 문자열 내의 부분문자열을 대상으로 연산을 할 경우, 계속해서 새로운 문자열을 생성하면 낭비

- 이전에 저장해둔 결과물에서 왼쪽 문자 삭제 + 오른쪽 문자 추가의 방식으로 반복 진행

 

백준 12891번 DNA 비밀번호 풀이 中 슬라이딩 윈도우 개념 활용 코드

for (int i = 0; i < p; i++) {
    add(dna.charAt(i));
}

- 부분문자열의 길이(p) 만큼 추가 처리

 

for (int right = p; right < s; right++) {
    int left = right - p;
    add(dna.charAt(right));
    remove(dna.charAt(left));
    if (check())
        answer++;
}

- 왼쪽 문자 삭제 + 오른쪽 문자 추가 처리한 뒤, 조건 확인

- 부분문자열의 길이(p)는 유지하면서 새로운 부분문자열에 대한 조건 확인

'알고리즘' 카테고리의 다른 글

자바 조합  (0) 2022.08.03
자바 부분 집합  (0) 2022.08.03
자바 순열  (0) 2022.08.03
자바 입/출력 처리  (0) 2022.08.01