[알고리즘/codeforce]Non-zero Segments(python)

유현민·2022년 9월 7일
0

알고리즘

목록 보기
247/253

누적합을 사용해서 푸는 문제이다.
값이 0이 되거나 전 까지의 누적합이 딕셔너리에 있으면 ans+1을 해주고 딕셔너리를 초기화 시킨다.
무한을 삽입하게 되면 이전의 누적합을 고려하지 않아도 된다.

n = int(input())
a = list(map(int, input().split()))
pref = [0] * 200001
dic = dict()
ans = 0
dic[0] = 1
for i in range(n):
    pref[i] = a[i]
    if i != 0:
        pref[i] += pref[i - 1]
    if pref[i] in dic:
        ans += 1
        dic.clear()
        dic[pref[i - 1]] = 1
    dic[pref[i]] = 1
print(ans)
profile
smilegate

0개의 댓글