(진행중) 백준 2003번 수들의 합2

녹차마루·2024년 10월 26일
0

24-10-26

import sys
input = sys.stdin.readline

N,M = map(int,input().split())

seqs = list(map(int, input().split()))

ans = 0
start, end = 0, 1

while start < N:
    
    
    if sum(seqs[start:end]) == M:
        ans += 1
        start += 1
        end = start + 1
        
    elif sum(seqs[start:end]) < M:
        end +=1
        
        if end == N+1:
            start += 1
            end = start + 1
        
    else:
        start +=1
        end = start+1
        
print(ans)

시간초과,,,, ㅠㅠㅠ two point 사용하는 문제
시작점을 하나씩 올려서 나머지 수열을 순차적으로 체크하는 방법

TO DO LIST
1 2 3 4 .. 수열이 있을 때,
1 + 2 + 3+ 4 > 10
2 + 3, 2+ 3+ 4 처럼 반복해서 Sum을 진행하게 된다. 이를 극복해보자!

-> HINT 이미 2472ms로 성공했음

+)
sum += a[right]
sum -= a[left]
를 활용해서 시컨스 전체를 sum하는 것을 줄이자!

0개의 댓글