Algorithm/Ch 3. 응용 자료구조
누적합 배열 예제
bellmake
2024. 9. 18. 16:31
https://www.acmicpc.net/problem/2559
N, K = list(map(int, input().split()))
A = list(map(int, input().split()))
# 누적합
psum = [0]*N
psum[0] = A[0]
for i in range(1,N):
psum[i] = psum[i-1]+A[i]
# 연속된 K일 온도합
temp_sum = []
for i in range(0,N-K+1):
# i ~ i+K-1
if i==0:
sum=psum[i+K-1]
else:
sum=psum[i+K-1]-psum[i-1]
temp_sum.append(sum)
print(max(temp_sum))
https://www.acmicpc.net/problem/14465
N, K, B = list(map(int, input().split()))
check = [0]*N
for _ in range(B):
id = int(input())
check[id-1] = 1
psum = [0]*N
psum[0] = check[0]
for i in range(1, N):
psum[i] = psum[i-1] + check[i]
need = []
for i in range(0, N-K+1): # 0부터 N-K번까지 탐색
# i ~ i+K-1
if i==0:
num = psum[i+K-1]
else:
num = psum[i+K-1]-psum[i-1]
need.append(num)
print(min(need))