https://www.acmicpc.net/problem/1806
1806번: 부분합
문제 10,000 이하의 자연수로 이루어진 길이 N짜리 수열이 주어진다. 이 수열에서 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 프로그램을 작성하시오.
www.acmicpc.net
N, S = map(int, input().split())
A = list(map(int, input().split()))
left, right, hap, result, temp = 0, 0, A[0], 0, 0
while left <= right and right < N:
if hap < S:
right += 1
if right < N:
hap += A[right]
elif hap >= S:
temp = right - left + 1
if result == 0:
result = temp
else:
result = min(result, temp)
if left < right:
hap -= A[left]
left += 1
else:
right += 1
if right < N:
hap += A[right]
print(result)
'알고리즘 > 백준 (Pyhthon)' 카테고리의 다른 글
[알고리즘] 백준 13913 숨바꼭질4 / python (0) | 2020.09.01 |
---|---|
[알고리즘] 백준 1644 소수의 연속합 / pyhton (0) | 2020.07.20 |
[알고리즘] 백준 2003 수들의 합 2 / python (0) | 2020.07.16 |
[알고리즘] 백준 2580 스도쿠 / pyhton, 백트랙킹 (0) | 2020.07.14 |
[알고리즘] 백준 9663 N-Queen / python, 백트랙킹 (0) | 2020.07.09 |