알고리즘/백준

1806 부분합 - 투포인터

아메숑 2019. 3. 8. 16:13

1. 문제



2. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
N, S = map(int,input().split())
num = list(map(int,input().split()))
 
start = 0
minlen = 987654321
total = 0
cnt = False
for end in range(N):
    total += num[end]
    if total >= S:
        cnt = True
        while total >= S:
            minlen = min(minlen,end-start+1)
            total -= num[start]
            start += 1
 
if cnt == True:
    print(minlen)
else:
    print(0)
 
cs


3. 후기

이 문제는 저번에 풀었던 투 포인트 문제만 생각하고 문제를 제대로 안봐서 계속 틀렸습니다.가 나왔다. 이번 문제는 부분합이 S보다 클때를 계산하는 문제였다. 그 부분만 수정하면 저번 문제랑 별로 다를게 없어보인다.