https://www.acmicpc.net/problem/2003
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
문제
수열의 구간합이 M을 만족하는 경우의 수를 구하시오
입력
첫 번째 줄 => N: 수열의 원소의 개수 M: 구간합이 만족해야하는 조건
두 번째 줄 => 수열
풀이
# 2003번 수들의 합 2
# 투 포인터 알고리즘 사용
N, M = map(int, input().split())
arr = list(map(int, input().split()))
count = 0
end = 0
interval_sum = 0
for start in range(N):
while interval_sum < M and end < N:
interval_sum += arr[end]
end += 1
if interval_sum == M:
count += 1
interval_sum -= arr[start]
print(count)
출력결과
'백준 > 완전 탐색' 카테고리의 다른 글
[백준] 1759번 암호 만들기 - 파이썬 (0) | 2022.02.07 |
---|---|
[백준] 1644번 소수의 연속합 - 파이썬 (0) | 2022.02.07 |
[백준] 1806번 부분합 - 파이썬 (0) | 2022.02.06 |
[백준] 16943번 숫자 재배치 - 파이썬 (0) | 2022.02.05 |
[백준] 1051번 숫자 정사각형 - 파이썬 (0) | 2022.02.05 |