반응형
https://www.acmicpc.net/problem/1806
1806번: 부분합
첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다.
www.acmicpc.net
# 포인트
1. ans에 최대 갯수를 설정하고, min() 함수를 통해 최소 갯수 갱신
2. 투 포인터인 앞쪽 인덱스 i와 뒤쪽 인덱스인 j 만들기
3. while 문을 돌며 최소갯수를 찾다가 뒤쪽 인덱스가 총갯수에 도달하면 break
N, S = map(int,input().split())
nums = list(map(int,input().split()))
i, j = 0, 0
s = nums[0]
ans = 100001
while True:
if s == S:
ans = min(ans, j - i + 1)
s-=nums[i]
i+=1
elif s>S:
s-=nums[i]
ans = min(ans, j - i + 1)
i+=1
else:
j += 1
if j == N:
break
s += nums[j]
print(0) if ans == 100001 else print(ans)
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
백준 1644 : 소수의 연속합 with 파이썬 (1) | 2024.01.31 |
---|---|
백준 2018 : 수들의 합 5 with 파이썬 (0) | 2024.01.31 |
백준 2559 : 수열 with 파이썬 (2) | 2024.01.29 |
백준 14497 : 주난의 난 with 파이썬 (0) | 2024.01.28 |
백준 1261 : 알고스팟 with 파이썬 (1) | 2024.01.26 |
댓글