728x90
https://www.acmicpc.net/problem/1806
💡문제 풀이
투 포인터 문제이다.
투 포인터의 2가지 유형 중 특정 값을 넘는 배열에 대해서 구하면 된다.
누적 값이 S보다 크다면 개수를 따져주고 왼쪽 포인터를 1 늘린다.
S보다 작다면 오른쪽 포인터를 1 늘린다.
✔️ 느낀 점
쉬운 문제였는데 문제를 제대로 안 읽어서 오래 걸렸다. '이상인 값 모두'
💻 코드
N, S = map(int, input().split())
arr = list(map(int, input().split()))
start, end = 0, 0
sum_ = arr[0]
ans = 100001
while True:
if sum_ < S:
end += 1
if end == N: break
sum_ += arr[end]
else:
sum_ -= arr[start]
ans = min(ans, end - start + 1)
start += 1
print(ans if ans != 100001 else 0)
'문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[Python] 백준 1092번 : 배 (0) | 2022.08.11 |
---|---|
[Python] 백준 1644번 : 소수의 연속합 (0) | 2022.08.10 |
[Python] 백준 3273번 : 두 수의 합 (0) | 2022.08.08 |
[Python] 백준 1976번 : 여행 가자 (0) | 2022.08.07 |
[Python] 백준 1038번 : 감소하는 수 (0) | 2022.08.05 |
댓글