File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed
Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 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 )
You can’t perform that action at this time.
0 commit comments