alpyrithm_알파이리즘
[알고리즘][Python] 백준(BOJ) 10211 Maximum Subarray_파이썬 본문
10211 Maximum Subarray www.acmicpc.net/problem/10211
문제 풀기 전 공부할 것 : 다이나믹 프로그래밍, 누적 합
풀이
<내용>
- 연속하는 부분 배열의 원소의 합이 가장 큰 것을 찾는 문제이다.
- dp를 이용해서 해결할 수 있다.
- 연속하는 부분 배열이기 때문에 이전의 값에서 현재 값을 더한 값(dp[i-1]+arr[i])과 현재 값(arr[i])을 비교해서 더 큰 값을 저장하면 된다.
<코드>
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
n = int(input())
arr = list(map(int, input().split()))
dp = [0] * n
dp[0] = arr[0]
for i in range(1, n):
dp[i] = max(dp[i-1]+arr[i], arr[i])
print(max(dp))
728x90
반응형
'Algorithm > 백준 알고리즘_Python' 카테고리의 다른 글
[알고리즘][Python] 백준(BOJ) 1244 스위치 켜고 끄기_파이썬 (0) | 2020.10.29 |
---|---|
[알고리즘][Python] 백준(BOJ) 5347 LCM_파이썬 (0) | 2020.10.28 |
[알고리즘][Python] 백준(BOJ) 2776 암기왕_파이썬 (0) | 2020.10.24 |
[알고리즘][Python] 백준(BOJ) 11441 합 구하기_파이썬 (0) | 2020.10.23 |
[알고리즘][Python] 백준(BOJ) 1431 시리얼 번호_파이썬 (0) | 2020.10.22 |
Comments