1. 아이디어
▪ 처음 K개의 숫자 합 구하기
▪ for 문 돌면서 K개 중 가장 첫 번째 값은 빼주고 새로운 값 더해주기
- 더한 값이 기존 max값보다 크면 갱신
2. 시간복잡도
▪ O(N)
3. 변수
▪ 배열을 저장할 map: int[]
▪ K개 합: int
▪ 최대값: int
Code
import sys
input = sys.stdin.readline
N,K = map(int,input().split())
map = list(map(int,input().split()))
v_sum = sum([map[i] for i in range(K)])
max_sum = v_sum
for i in range(K,N):
v_sum -= map[i-K]
v_sum += map[i]
if v_sum > max_sum:
max_sum = v_sum
print(max_sum)
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 11047번: 동전 0 (0) | 2024.03.08 |
---|---|
[코딩테스트] 백준 2559번: 수 찾기 (0) | 2024.03.08 |
[코딩테스트] 백준 14503번: 로봇 청소기 (1) | 2024.03.08 |
[코딩테스트] 백준 15649번: N과 M (1) (0) | 2024.03.08 |
[코딩테스트] 백준 2667번: 단지번호붙이기 (1) | 2024.03.08 |