본문 바로가기

Algorithm/BOJ

[BOJ] 2559. 수열

https://www.acmicpc.net/problem/2559

 

2559번: 수열

첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기

www.acmicpc.net

 

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