간격 컨트롤이 아닌 내부 요소들의 합으로 컨트롤하는 슬라이딩 윈도우.
import sys
input = sys.stdin.readline
N = int(input())
prex_sum, left = 0, 0
answer = 0
# 슬라이딩 윈도우
for right in range(1,N+1):
    # 결론적으로 end는 기존 슬라이딩 윈도우 처럼 일정 간격이 고정이 아니라
    # 일정 합 이상이되면 알아서 그 간격이 줄어드는 시스템이므로 한번 순회로 전부 조사 가능.
    while left < N and prex_sum < N:
        prex_sum += left+1
        left += 1
    if prex_sum == N:
        answer += 1
    prex_sum -= right
print(answer)'practivceAlgorithm > 백준' 카테고리의 다른 글
| [백준][Python] 6068 시간관리하기 (0) | 2021.08.19 | 
|---|---|
| [백준][Python] 12101 1,2,3더하기 2 (0) | 2021.08.19 | 
| [백준][Python] 16971 배열B의 합 (0) | 2021.08.18 | 
| [백준][Python] 14925 목장 건설하기 (0) | 2021.08.18 | 
| [백준][Python] 1969 DNA (0) | 2021.08.18 |