[Python] [BOJ] 연속합(1912)

긍정왕·2021년 6월 9일
1

Algorithm

목록 보기
20/69

💡 문제 해결

  1. dp리스트에 주어진 숫자에 대한 기본값을 저장
  2. 0 index를 제외한 1 index부터 주어진 숫자를 계산
  3. dp리스트의 N번째 index는 N번째 index가 가장 큰 수가 될 수 있도록 갱신
  4. 계산된 dp리스트 중 가장 큰 값을 출력


🧾 문제 설명

n개의 정수로 이루어진 임의의 수열이 주어진다. 
우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 
단, 수는 한 개 이상 선택해야 한다.
예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 
여기서 정답은 12+21인 33이 정답이 된다.

문제보기



🖨 입출력



📝 풀이

N = int(input())
nums = list(map(int, input().split()))

dp = [val for val in nums]
for i in range(1, N):
    dp[i] = max(dp[i], dp[i - 1] + nums[i])

print(max(dp))

profile
Impossible + 땀 한방울 == I'm possible

0개의 댓글