[백준/1912] 연속합(Python3)

SeokHyun·2022년 8월 14일
0

백준

목록 보기
1/5

문제 링크: https://www.acmicpc.net/problem/1912

문제 접근

해당 문제는 원 배열(arr)과 최대 값을 저장하는 배열(sum_arr)을 두고, 각 자리마다 최대 값을 갱신하는 문제이다.

배열0123456789
arr10-43156-351221-1
sum_arr1069101521-14123332

위의 표를 보면, sum_arr[i-1]+arr[i]arr[i] 중에 더 큰 것을 선택하여 sum_arr[i]를 갱신하는 것을 볼 수 있다. 이것만 알면 해결 ssap가능이다.

소스 코드

from typing import List


def get_input() -> List[int]:
  input()

  arr: List[int] = [int(i) for i in input().split(" ")]
  return arr

  
def caculate(arr: List[int]) -> int:
  length: int = len(arr)
  max_value: int = arr[0]

  sum_arr: List[int] = [0] * length
  sum_arr[0] = arr[0]

  for i in range(1, length):
    sum_arr[i] = max(sum_arr[i - 1] + arr[i], arr[i])
    max_value = max(max_value, sum_arr[i])
  
  return max_value
  

print(caculate(get_input()))
profile
SI를 넘어 백엔드 엔지니어를 향하여

0개의 댓글