백준 2003 수들의 합 2

김민영·2023년 1월 10일
0

알고리즘

목록 보기
49/125

과정

  • 연속된 수를 합쳐서 목표로 하는 수를 만들기
  • 하나씩 더해나가면서 값이 목표 값보다 크면 맨 앞에 수를 빼고, 작으면 추가로 더하기
    • start 위치와 end 위치를 지정했습니다. (start 부터 end 사이에 있는 수를 더하는 방식)
    • end 값을 +1 하고, 인덱스 범위를 벗어나면 반복문 중단하기
      • 가장 오른쪽에서 가능한 경우를 이미 고려한 상태이므로.
N, M = map(int, input().split())
lst = list(map(int, input().split()))
sub = lst[0]
start = 0
end = 1
ans = 0
while True:
    if sub > M:
        sub -= lst[start]
        start += 1
    elif sub == M:
        ans += 1
        if end == N:
            break
        sub += lst[end]
        end += 1
    else:
        if end == N:
            break
        sub += lst[end]
        end += 1
print(ans)
profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글