https://www.acmicpc.net/problem/2559
1. 해결방법
"""
1. 아이디어
- 투포인터를 사용
- for문을 이용해서 처음의 k개의 값을 저장
- 다음 인덱스를 더하고, 이전 인덱스를 뺴줌
- 이때마다 최대값 갱신
2. 시간복잡도
- O(2N) == O(N)
3. 자료구조
배열 : int[]
"""
2. 정답코드
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
temp = list(map(int, input().split()))
result = 0
for i in range(K):
result += temp[i]
max_v = result
for i in range(K, N):
result += temp[i]
result -= temp[i-K]
max_v = max(max_v, result)
print(max_v)
시간복잡도 때문에 투포인터를 사용해야 된다는 발상만 하면 쉬운 문제이다.
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2003. 수들의 합2 (0) | 2022.09.02 |
---|---|
[BOJ] 3273. 두 수의 합 (0) | 2022.09.01 |
[BOJ] 14719. 빗물 (0) | 2022.08.05 |
[BOJ] 17144. 미세먼지 안녕! (0) | 2022.08.04 |
[BOJ] 16234. 인구 이동 (0) | 2022.07.18 |