728x90
문제
12847번: 꿀 아르바이트
월세를 내기 바로 전 날 까지 인 n (1 ≤ n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 < Ti ≤ 1,000,000)
www.acmicpc.net

풀이
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
Ts = list(map(int, input().split()))
ans = sum(Ts[:m])
total = ans
left, right = 0, m - 1
while right < n - 1:
left += 1
right += 1
total = total - Ts[left - 1] + Ts[right]
ans = max(ans, total)
print(ans)
1. 구간의 넓이가 m으로 고정되어 있으므로 인덱스가 0일 때의 합산 값을 슬라이싱으로 구한다.
2. 양쪽의 포인터를 한 칸씩 이동시키며 왼쪽 값은 빼주고 오른쪽 값은 더해준다.
3. 최댓값을 계속 업데이트 해주면서 반복문을 돌면 끝!
728x90