๋ฐฑ์ค€ ์ˆ˜์—ด 2559๋ฒˆ ํŒŒ์ด์ฌ

2022. 7. 12. 23:46ใ†๐Ÿ”ฑ Algorithm/Else

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

 

2559๋ฒˆ: ์ˆ˜์—ด

์ฒซ์งธ ์ค„์—๋Š” ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ N๊ณผ K๊ฐ€ ํ•œ ๊ฐœ์˜ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ •์ˆ˜ N์€ ์˜จ๋„๋ฅผ ์ธก์ •ํ•œ ์ „์ฒด ๋‚ ์งœ์˜ ์ˆ˜์ด๋‹ค. N์€ 2 ์ด์ƒ 100,000 ์ดํ•˜์ด๋‹ค. ๋‘ ๋ฒˆ์งธ ์ •์ˆ˜ K๋Š” ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ

www.acmicpc.net

 

 

ํ’€์ด 

deque ์„ ์ด์šฉํ•ด ํ’€์—ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ„๋“ค์€ ํˆฌํฌ์ธํ„ฐ ๋“ฑ์˜ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ๋˜๋ฐ ๋‚˜๋Š” deque ์ด ๊ฐ€์žฅ ์ง๊ด€์ ์ด๋ผ ๋Š๊ปด์กŒ๋‹ค.

์šฐ์„  ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ ์Šฌ๋ผ์ด์‹ฑ์„ ๋จผ์ € ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž…๋ ฅ์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๊ฐ€ ์‹ญ๋งŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ํ„ฐ์ง„๋‹ค. ์ด์ •๋„๋ฉด b๊ธ‰ ์˜ํ™”์˜ ๋ป”ํ•œ ์‹œ๋†‰์‹œ์Šค๋ณด๋‹ค ๋” ๋ป”ํ•œ ์ „๊ฐœ๊ฐ€ ์•„๋‹ ์ˆ˜ ์—†๋‹ค. ํด๋ฆฌ์…ฐ๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” deque ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

์šฐ์„  k ํฌ๊ธฐ ๋งŒํผ์˜ ์ดˆ๊ธฐ ๋ฐฐ์—ด์„ deque๋กœ ๊ตฌํ•œ๋‹ค. ์ด๋ฅผ init_arr ๋ผ ์ •์˜ํ–ˆ๋‹ค. init_arr ์€ deque ๋‹ค. double-ended queue ๋ž€ ๋œป์ด๋‹ค. ์ฆ‰ ์–‘์ชฝ์œผ๋กœ ๋„ฃ๊ณ  ๋นผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ init_arr์˜ ๋’ค์ชฝ์œผ๋กœ๋Š” ์ƒˆ๋กœ์šด ์ˆซ์ž๋ฅผ ๋„ฃ์œผ๋ฉด์„œ ๋™์‹œ์— ๋งจ ์•ž์ชฝ์˜ ์›์†Œ๋Š” popleft() ํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด O(n) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ arr ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ init_arr ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹ค. init_arr ์€ deque ์ด๊ธฐ ๋•Œ๋ฌธ์— append ๋‚˜ popleft ๋ชจ๋‘ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1) ์ด๋‹ค.

 

์ฝ”๋“œ

import sys
from collections import deque

input = sys.stdin.readline
n, k = map(int, input().split())

arr = list(map(int, input().split()))  # arr ์˜ ๊ธธ์ด 100_000
init_arr = deque()
for i in range(k):
    init_arr.append(arr[i])
init_sum = sum(init_arr)
result = init_sum
for i in range(k, len(arr)):
    pop = init_arr.popleft()
    init_sum -= pop
    new = arr[i]
    init_sum += new
    init_arr.append(new)

    result = max(result, init_sum)

print(result)