문제요약
나의 코드 및 설명
- result_list : 연속적인 k일 동안의 온도의 합을 저장한다. 이 때 첫 0일부터 K-1일까지의 온도의 합을 저장한다.
- 그 다음, for문을 돌며, 이전의 온도의 합에서 가장 앞의 날짜에 해당하는 온도는 빼고, 가장 뒤에 있던 날짜의 다음날에 해당하는 온도는 더해준다.
n, k = map(int,input().split())
temperture = list(map(int, input().split()))
result_list = [sum(temperture[0:k])]
for i in range(n-k): #ex) 가장 앞의 수열 제외하고 10-5 =5 0~4까지 5번
result_list.append(result_list[i] - temperture[i] + temperture[i+k])
print(max(result_list))
피드백
처음에는 연속적인 날짜의 온도의 합을 일일이 구하여 최대값을 구했는데, 시간초과가 떴다. 다른 코드를 참고해보니 시간초과를 해결하는 방법으로, 다음 수열을 구하기 위해 이전 수열의 첫 번째 인덱스에 해당하는 온도는 삭제하고, 마지막 인덱스의 다음 인덱스에 해당하는 온도를 더해주어, 새로운 수열의 합을 구하는 것을 알 수 있었다.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 10709 기상캐스터 (실버5) (0) | 2023.03.16 |
---|---|
[백준] 3085 사탕 게임 (실버2) (0) | 2023.03.15 |
[백준] 11399 ATM (실버4) (0) | 2023.03.15 |
[백준] 10163 색종이 (브론즈1) / 서브태스크, 시간초과 해결 (0) | 2023.03.15 |
[백준] 2839 설탕배달 (실버4) (2) | 2023.03.15 |