[BOJ][Python][실1][1912] 연속합

문제 링크

문제링크

첫 번째 풀이

정답 코드

dp[i] = i번째까지 확인했을 때의 정답

이 외의 조건은 모두 아래 코드에서 정의한 그대로 입니다. 주의할 점은 if문 안에서 ans = max(ans,dp[i])를 하면 아래의 경우를 커버할 수 없다는 점입니다.

1
2
3
4
5
-5 -4 -3 -2 -1
틀린답 : -5
정답 : -1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
from math import sqrt, ceil
from bisect import bisect_left, bisect_right
from operator import itemgetter

# sys.stdin = open("input.txt", "r")
n = int(input())
# R, C, K = n, 2, 1
# dp = [[0] * C for _ in range(R)]
# dp = [[[0] * K for _ in range(C)] for _ in range(R)]
# MOD = 1000000000

arr = (list(map(int, sys.stdin.readline().split())))
dp = [0] * n
dp[0] = arr[0]
ans = dp[0]
for i in range(1, n):
    dp[i] = arr[i]
    if dp[i - 1] + arr[i] > dp[i]:
        dp[i] += dp[i - 1]
    ans = max(ans, dp[i])

print(ans)

Success Notice: 수고하셨습니다. :+1:

Leave a comment