https://www.acmicpc.net/problem/1806
1. 해결방법
투 포인터를 이용한다.
주의해야될 점은 left, right를 0, 0을 초기 값을 설정해야한다.
0, 1로 설정했더니 첫 인덱스 값이 15가 넘어버리는 테스트 케이스에서 실패를 한 것 같았다.
2. 정답코드
import sys
input = sys.stdin.readline
N, S = map(int, input().split())
nums = list(map(int, input().split()))
left, right = 0, 0
answer = sys.maxsize
total = nums[0]
while True:
if total >= S:
answer = min(answer, right - left + 1)
total -= nums[left]
left += 1
else:
right += 1
if right == N:
break
total += nums[right]
print(0 if answer == sys.maxsize else answer)
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 15686. 치킨 배달 (0) | 2022.10.03 |
---|---|
[BOJ] 1463. 1로 나누기 (0) | 2022.09.28 |
[BOJ] 4485. 녹색 옷 입은 애가 젤다지? (0) | 2022.09.09 |
[BOJ] 1504. 특정한 최단 경로 (0) | 2022.09.09 |
[BOJ] 1916. 최소비용 구하기 성공 (0) | 2022.09.09 |