728x90
문제출처: https://www.acmicpc.net/problem/12847
12847번: 꿀 아르바이트
월세를 내기 바로 전 날 까지 인 n (0 < n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 < Ti ≤ 1,000,000)
www.acmicpc.net
1. 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import sys
input = sys.stdin.readline
n,m = map(int, input().split())
money = list(map(int,input().split()))
work = m #일할 수 있는 날
search = sum(money[:work]) #일할 수 있는 날만큼의 합
ans = search
#처음에 처음부터 m개의 수를 더함
#인덱스 m부터 n까지 순차적으로 탐색
#현재 나오는 수를 search에 더함 -> search에 맨 처음에 더한 값 뺌
#현재 ans와 비교 -> ans 갱신
for i in range(work, n):
search += money[i] - money[i-work]
ans = max(ans, search)
print(ans)
|
cs |
2. 해결과정
특정 구간의 합 중에 최댓값을 구하는 문제였다.
처음부터 M개의 원소를 더한 다음 M+1부터 탐색을 진행한다.
탐색하면서 현재 나오는 숫자를 더하고 이미 더한 숫자 중 처음 값을 빼서 최댓값을 비교해주고, 갱신하여 출력해주면 된다.
728x90
'공부 자료 > 알고리즘' 카테고리의 다른 글
(Python/파이썬) 백준 2583번 - 영역 구하기 (0) | 2021.09.07 |
---|---|
(Python/파이썬) 백준 2553번 - 마지막 팩토리얼 수 (0) | 2021.09.03 |
(Python/파이썬) 백준 12605번 - 단어순서 뒤집기 (0) | 2021.08.19 |
(Python/파이썬) 백준 1874번 - 스택 수열 (0) | 2021.08.19 |
(Python/파이썬) 백준 1158번 - 요세푸스 문제 (0) | 2021.08.19 |