알고리즘/백준
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보다 클때를 계산하는 문제였다. 그 부분만 수정하면 저번 문제랑 별로 다를게 없어보인다.