Skip to content

Commit 5007cb0

Browse files
committed
[BOJ]#2259. 수열/실버3/30분
https://www.acmicpc.net/problem/2259
1 parent 183ef27 commit 5007cb0

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

Hongjoo/백준/수열.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
"""
2+
# slide window , 투 포인터
3+
-연속된 날짜의 온도 합 중 최대값 출력 = goal
4+
- sum(temp[s:e]) 같은 한번씩 슬라이딩으로 합을 구하면 시간 초과 발생
5+
- window 범위 내 start 와 end 포인트 값을 빼고, 더하는 식으로 전체 합 구하기
6+
# flow
7+
1. temp 리스트 입력 받기
8+
-window size =k , N : 날짜
9+
2. window 범위에 해당하는 리스트 합 중 최대값 구하기
10+
next_window = 이전 window - 앞 + 뒤
11+
=> sliding winodw을 통해 window 내 맨앞과 맨 뒤 값만 구해서 더하고 빼면 범위내 총합 구할 수 있다.
12+
13+
"""
14+
import sys
15+
input = sys.stdin.readline
16+
#0. 전체 일수 = N , 연속 일수= K ,
17+
N , k = map(int,input().split())
18+
temp = list(map(int, input().split()))
19+
20+
# 1. 첫 window 범위 초기화
21+
sum_tmp = sum(temp[0:k]) # 초기 window 내 리스트의 합
22+
max_sum = sum_tmp # 최대값을 window 합 초기값으로 설정
23+
# 2. 투 포인터 (s,e)을 이동하여 window 범위 합 구하기
24+
# e :새로운 window 범위에 들어가는 값
25+
# s :새로운 window 범위에서 빠지는 값
26+
for e in range(k, N):
27+
s = e-k # 0 n-k
28+
sum_tmp = sum_tmp - temp[s] + temp[e] # 새로운 window 범위 내의 합
29+
max_sum = max(max_sum , sum_tmp) #
30+
31+
print(max_sum)

0 commit comments

Comments
 (0)