부분합 - BOJ
- 대표적인 투포인터 문제
- 포인터를 두 개 설정(start, end)하여, end를 한 칸씩 늘려가며 target보다 부분합이 작을 때까지만 부분합을 더하고, target보다 커지면 start를 1칸 올려주는 식으로 구현
N, S = map(int, input().split())
li = list(map(int, input().split()))
end = 0
summary = 0
shortest_len = float('inf')
for s in range(N):
while summary < S and end < N:
summary += li[end]
end += 1
if summary >= S:
shortest_len = min(shortest_len, end - s)
summary -= li[s]
if shortest_len == float('inf'):
print(0)
else:
print(shortest_len)
'코딩테스트 > BOJ' 카테고리의 다른 글
[BOJ] 17136 색종이 붙이기 (python) (0) | 2020.09.18 |
---|---|
[BOJ] 16971 배열 B의 값 (python) (0) | 2020.09.04 |
[BOJ] 16929 Two Dots (python) (0) | 2020.09.03 |
[BOJ] 10026 적록색약 (python) (0) | 2020.09.03 |
백준 #5052 전화번호목록 (Python) (0) | 2020.04.16 |