- 부분문자열 문제에서 활용될 수 있는 개념
- 주어진 문자열 내의 부분문자열을 대상으로 연산을 할 경우, 계속해서 새로운 문자열을 생성하면 낭비
- 이전에 저장해둔 결과물에서 왼쪽 문자 삭제 + 오른쪽 문자 추가의 방식으로 반복 진행
백준 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 |