반응형
백준 21921번 블로그
투 포인터 / 누적 합 / 슬라이딩 윈도우
[문제]

구간 합 문제
접두사 합을 사용한 알고리즘을 적용하면 효과적
[과정]
- 각 구간(data)에 대하여 누적 합을 계산한 배열(prefix_sum)을 생성
- 0에서 부터 x만큼 증가하여 각 x기간 동안의 누적 합을 배열(result)에 저장
- result중 최댓값을 출력하고, 해당 최댓값의 개수를 출력
[소스코드]
# 블로그
import sys
input = sys.stdin.readline
n,x = map(int, input().split())
data = list(map(int, input().split()))
sum_value = 0
prefix_sum = [0]
for i in data:
sum_value += i
prefix_sum.append(sum_value)
result = []
cnt = 0
while cnt+x <= n:
result.append(prefix_sum[cnt+x]-prefix_sum[cnt])
cnt += 1
if max(result) == 0:
print('SAD')
else:
print(max(result))
print(result.count(max(result)))
[통과]

반응형
'코딩테스트 문제풀이 > beakjoon' 카테고리의 다른 글
[백준] 1158 요세푸스 문제 (0) | 2021.08.20 |
---|---|
[백준] 14502 연구소 (0) | 2021.08.16 |
[백준] 11659 구간 합 구하기 4 (0) | 2021.08.16 |
[백준] 11728 배열 합치기 (0) | 2021.08.13 |
[백준] 1167 트리의 지름 (0) | 2021.08.07 |
댓글