Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[문제풀이 py] B2559 수열 본문
수열 / 슬라이딩 윈도우 🚠
🎠. '슬라이딩 윈도우'알고리즘을 구현할 줄 알아야한다 => '이전의 계산한 결과'를 최대한 이용하는 방식으로
[시간초과 난 코드.py]
N, K = map(int, input().split())
tempers = list(map(int, input().split()))
# print(tempers)
sum_prev = sum(tempers[:K])
for i in range(1, len(tempers)-K):
cur = sum(tempers[i:K+i])
sum_prev = max(sum_prev, cur)
print(sum_prev)
🤡. 실수한 부분
: 이전에 계산한 결과를 써먹지 못했다.
[성공한 코드.py]
N, K = map(int, input().split())
tempers = list(map(int, input().split()))
# print(tempers)
sum = sum(tempers[:K])
prev = sum
for i in range(K,N):
sum -= tempers[i-K]
sum += tempers[i]
prev = max(sum, prev)
print(prev)
💡. 문제 접근 방법
: 연속된 날짜의 온도의 합을 구할 때, 어차피 연속된 날짜의 길이는 K로 고정되어 있다
이를 한칸씩 오른쪽으로 이동하면서, 전의 결과와 비교하는 것에서 '슬라이딩 윈도우' 알고리즘이 생각났다.
최대한 이전에 계산한 결과를 이용하기 위해서, 한칸 이동할 때마다 이전 결과에
앞의 한개를 빼고 뒤에 한개를 더하면 시간초과 나지 않고 문제를 해결할 수 있다.
'코딩 테스트 > 문제풀이 Python ver.' 카테고리의 다른 글
[문제풀이 py] B16948 데스나이트 (0) | 2023.07.10 |
---|---|
[문제풀이 py] B17298 오큰수 (0) | 2023.07.08 |
[문제풀이 py] B15686 치킨배달 (0) | 2023.07.07 |
[문제풀이 py] P84512 모음사전 (0) | 2023.07.06 |
[문제풀이 py] P87946 피로도 (0) | 2023.07.05 |
Comments