N,X = map(int,input().split())
arr = list(map(int,input().split()))
if max(arr) == 0:
print('SAD')
else:
value = sum(arr[:X])
max_value = value
max_cnt = 1
for i in range(X,N):
value += arr[i]
value -= arr[i-X]
if value > max_value:
max_value = value
max_cnt = 1
elif value == max_value:
max_cnt += 1
print(max_value)
print(max_cnt)
범위 내의 최대 누적자수를 구하면 되는 문제이다.
그래서 나는 슬라이딩 윈도우를 이용해 X의 크기만큼의 첫 방문자수를 구한뒤 한칸씩 이동하면서 더해주고 빼주는 작업을 반복했다.
그리고 값이 갱신되면 1로 초기화를 해주고, 그렇지 않고 최대값과 같은 값이 나왔을때는 더해주는 방식으로 풀 수 있었다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 21923 곡예비행 (0) | 2021.06.10 |
---|---|
[BOJ/백준] 21922 학부 연구생 민상 (0) | 2021.06.10 |
[BOJ/백준] 21920 서로소 평균 (0) | 2021.06.10 |
[BOJ/백준] 21919 소수 최소 공배수 (0) | 2021.06.10 |
[BOJ/백준] 21918 전구 (0) | 2021.06.10 |