반응형
코드
n,x = map(int,input().split())
visit = list(map(int,input().split()))
v_max = sum(visit[:x])
num = sum(visit[:x])
cnt = 1
for i in range(x,n):
num = num - visit[i-x] + visit[i]
if num > v_max:
v_max = num
cnt = 1
elif num == v_max:
cnt += 1
if v_max == 0:
print("SAD")
else:
print(v_max)
print(cnt)
설명
투포인터 알고리즘과 비슷한 슬라이딩 윈도우 알고리즘으로 풀었다.
더해야 하는 개수가 고정되어 있기 때문에 처음에만 visit[0]부터 visit[x-1] 까지 더해주고
그 이후부터는 중간값은 계속 겹치기 때문에 가장 첫번째 값을 빼주고 다음 값을 더해주면 된다.
반응형
'알고리즘 > 투포인터' 카테고리의 다른 글
[백준][JAVA] 2018번 수들의 합 5 (0) | 2023.03.10 |
---|---|
[백준][Python] 2470번 두 용액 (0) | 2023.03.02 |
[백준][Python] 20922번 겹치는 건 싫어 (0) | 2022.06.30 |
댓글