[Python] 백준 / silver / 2003번 (수들의 합2)

김상우·2021년 10월 6일
0
post-custom-banner

문제 링크 : https://www.acmicpc.net/problem/2003

투 포인터 문제이다. start를 for문에 올려놓고, while 문으로 end의 범위를 조작하면 풀 수 있었다.
interval_sum이 M을 넘어버리는 순간이 있기 때문에, if interval_sum == M 조건을 걸어 answer를 구해줘야했다.

정답 코드

import sys
N, M = map(int, sys.stdin.readline().split())
A = list(map(int, sys.stdin.readline().split()))

end = 0
interval_sum = 0
answer = 0

for start in range(N):
    while end < N and interval_sum < M:
        interval_sum += A[end]
        end += 1

    if interval_sum == M:
        answer += 1

    interval_sum -= A[start]

print(answer)
profile
안녕하세요, iOS 와 알고리즘에 대한 글을 씁니다.
post-custom-banner

0개의 댓글