[백준/파이썬] 2003번

민정·2023년 12월 18일
0

[백준/파이썬]

목록 보기
192/245
post-thumbnail

📍백준 2003번 문제

https://www.acmicpc.net/problem/2003

코드

n, m = map(int, input().split())
num = list(map(int, input().split()))
start = 0
end = 1
cnt = 0
while end <= n and start <= end:
    if end >= m+1:
        end == m+1
    temp = num[start: end]
    total = sum(temp)
    if total == m:
        cnt += 1
        end += 1
    elif total < m:
        end += 1
    elif total > m:
        start += 1
print(cnt)

풀이

부분합이 작다면 end값을 1을 더해 구간을 늘립니다.
반대로 부분합이 크다면 start 값에 1을 더해 구간을 줄입니다.
부분합과 원하는 값이 같다면 cnt에 1을 더해주고 end 값에 1을 더해줍니다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글