-
https://www.acmicpc.net/problem/1912
DP 문제입니다.
주어진 배열의 연속된 가장 큰 값을 구하는 함수를 만들었는데
dp0에는 가장 큰 값을 계속 저장하고
dp1에는 for문을 돌며 나오는 값 중에서 연속된 가장 큰 값을 계속해서 저장합니다.
그래서 dp1과 dp0중 더 큰 값을 dp0에 저장하기 때문에 dp0만 반환하면 간단하게 풀 수 있습니다.
n = int(input()) n_list = list(map(int, input().strip().split(' '))) def getmax(n_list): if len(n_list) == 1: return n_list[0] dp0 = n_list[0] dp1 = dp0 for i, v in enumerate(n_list): if i != 0: dp0 = max(dp0, dp1 + n_list[i], n_list[i]) dp1 = max(dp1 + n_list[i], n_list[i]) else: continue return dp0 print(getmax(n_list))
'Study > BOJ' 카테고리의 다른 글
BOJ 11053번 (0) 2020.03.09 BOJ 11727번 (0) 2020.02.24 BOJ 2156번 (0) 2020.02.20 BOJ 1932번 (0) 2020.02.02 BOJ 2193번 파이썬 (0) 2020.01.30