[알고리즘/백준] 2003번 : 수들의 합(python)

유현민·2022년 5월 9일
0

알고리즘

목록 보기
176/253
post-custom-banner

이 문제는 투포인터를 이용한 문제이다.
s, e라는 변수를 인덱스로 이용하여 푼다.
sum(a[s:e]) > M -> s += 1
sum(a[s:e]) < M -> e += 1
sum(a[s:e]) == M -> ans += 1
e가 끝에 도달하면 s만 계속해서 1씩 더해준다.

N, M = map(int, input().split())
a = list(map(int, input().split()))
ans = 0
s, e = 0, 0
while s < N:
    n_s = sum(a[s:e])
    if n_s == M:
        ans += 1
        s += 1
    elif e == N:
        s += 1
    elif n_s < M:
        e += 1
    else:
        s += 1
print(ans)
profile
smilegate
post-custom-banner

0개의 댓글