간격 컨트롤이 아닌 내부 요소들의 합으로 컨트롤하는 슬라이딩 윈도우.
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 |