๊ฐœ๋ฐœ/๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜

baekjoon. 2559 ์ˆ˜์—ด [Silver III][python]

ttoance 2023. 8. 20. 07:44

๋ฐ˜๋ก€ 74% https://www.acmicpc.net/board/view/75765

5 2
100 -1 1 -100 -100

# ๋‹ต : 99

 

 

๋ฌธ์ œ ๋งํฌ :

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

 

2559๋ฒˆ: ์ˆ˜์—ด

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

www.acmicpc.net

 

 

ํ’€์ด 

- K๋ฒˆ ์ „๊นŒ์ง€๋Š”, ์—ฐ์†๋œ ๋ฐฐ์—ด์˜ ํ•ฉ์„ dp[i]์— ์ €์žฅํ•˜๊ณ , 

- K+1 ๋ฒˆ ๋ถ€ํ„ฐ๋Š”, dp[i-1]์—์„œ ๋งจ ์ฒ˜์Œ ๋“ค์–ด์˜จ degrees[i - K]๋ฅผ ๋นผ๊ณ  ์ง€๊ธˆ degrees[i]๋ฅผ ๋”ํ•œ๋‹ค. 

 

# ๋‘ ๊ฐœ์˜ ์ •์ˆ˜ N๊ณผ K 
# N : ์˜จ๋„ ์ธก์ •ํ•œ ์ „์ฒด ๋‚ ์งœ์˜ ์ˆ˜ 
# K : ์—ฐ์†์ ์ธ ๋‚ ์งœ์˜ ์ˆ˜ 


N, K = map(int, input().split())
degrees = list(map(int, input().split()))
    
dp = [None for _ in range(N)]
dp[0] = degrees[0]
    
for i in range(1, N):
    if i < K:
        dp[i] = dp[i - 1] + degrees[i]
    else:
        dp[i] = dp[i - 1] - degrees[i - K] + degrees[i]
   
result = max(dp[K-1:])
    
print(result)

 

๋ฐ˜์‘ํ˜•