https://www.acmicpc.net/problem/2559
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
내 코드
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
temp = list(map(int, input().split()))
window = sum(temp[:k])
ans = window
for i in range(k, n):
window += temp[i] - temp[i-k]
if window > ans:
ans = window
print(ans)
코드 리뷰
슬라이딩 윈도우
이 문제는 슬라이딩 윈도우의 기본 개념을 묻는 문제이다.
문제에서 요구하는 것은 각 부분 합 중에서 가장 큰 값을 찾아 출력하는 것이다.
for i in range(k, n):
window += temp[i] - temp[i-k]
if window > ans:
ans = window
그래서 윈도우를 한 칸씩 옮겨주면서, 이전에 저장해놓았던 ans 값과 비교해준다.
최댓값을 발견하면 ans 에 저장하고, 이 값을 마지막에 출력하면 된다.
같이 풀면 좋은 문제(비슷한 난이도)
https://beehand.tistory.com/118
[Python][백준/BOJ] 12847번 : 꿀 아르바이트
https://www.acmicpc.net/problem/12847 12847번: 꿀 아르바이트 월세를 내기 바로 전 날 까지 인 n (1 ≤ n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일
beehand.tistory.com
https://beehand.tistory.com/115
[Python][백준/BOJ] 21921번 : 블로그
https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경
beehand.tistory.com
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 3078번 : 좋은 친구 (0) | 2023.08.03 |
|---|---|
| [Python][백준/BOJ] 10025번 : 게으른 백곰 (0) | 2023.08.02 |
| [Python][백준/BOJ] 12847번 : 꿀 아르바이트 (0) | 2023.08.02 |
| [Python][백준/BOJ] 2003번 : 수들의 합 2 (0) | 2023.08.02 |
| [Python][백준/BOJ] 12891번 : DNA 비밀번호 (0) | 2023.08.01 |