[1806] 부분합
Input
- 첫째 줄: N (10 ≤ N < 100,000), S (0 < S ≤ 100,000,000)
- 둘째 줄: 수열, 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수
Output
- 첫째 줄에 구하고자 하는 최소의 길이를 출력, 합을 만드는 것이 불가능 하다면 0 출력
✨ Solve
- 투포인터 사용해서 sum 값이 S보다 작은 값들을 구한뒤, 길이 min()으로 비교
💻 Code
### 언어 python3, 메모리 42340KB, 시간 120ms
n, s = map(int, input().split())
numbers = list(map(int, input().split()))
sum = numbers[0]
left, right = 0, 0
answer = 100001 # 답이 될 수 없는 값
while True:
if sum < s:
right += 1
if right == n: break
sum += numbers[right]
else:
sum -= numbers[left]
answer = min(answer, right-left+1)
left += 1
print(answer if answer != 100001 else 0)
'# 소쿠리 개발 공부방 > 코테 문제풀이' 카테고리의 다른 글
[BAEKJOON] [10828] 스택: PYTHON (0) | 2023.07.27 |
---|---|
[BAEKJOON] [2230] 수고르기: PYTHON (0) | 2023.07.18 |
[BAEKJOON] [18870] 좌표 압축: PYTHON (0) | 2023.07.18 |
[BAEKJOON] [10816] 숫자카드2: PYTHON (0) | 2023.07.18 |