sm 기술 블로그

129. 1912(연속합) 본문

문제/백준_파이썬

129. 1912(연속합)

sm_hope 2022. 7. 3. 13:16
import sys
input = sys.stdin.readline
N = int(input())
num = list(map(int, input().split()))

for i in range(1 , N):
  num[i] = max(num[i], num[i-1]+num[i])
  
print(max(num))

문제요약

모든 경우의 연속된 수를 더 했을 때 가장 큰 수가 무엇인가? 

설명

리스트의 크기는 상관 없다.

들어온 입력의 리스트 만큼 사용할 것이다.

다음과 같이 숫자(현재 인덱스) 값과 숫자(현재 인덱스) + 숫자(현재 인덱스 - 1) 의 값 중 더 큰 것을 비교하여 본래 리스트에 덮어 씌운다.

 

예를들어 num[4]번째 에서 3번째 인덱스 값은 0 , 1 , 2 를 합 했을 경우 가장 큰 수를 나타낸다.

num[4] 입장에서는 자기 자신의 값 혹은 num[3]의 값 중 더 큰 것을 index = 4 (num[4]) 에 저장하면서 다음 값으로 진행한다.

 

즉, 최종 결과에서 각 인덱스의 값은 자기 자신의 인덱스 까지 연속된 합의 수중에서 제일 큰 수를 나타내는 것이다.

 

그 결과 중 가장 큰 수를 뽑는다면 제시된 수 중의 연속된 합 중에서 가장 큰 수를 뽑는 것이다.

'문제 > 백준_파이썬' 카테고리의 다른 글

131. 1932(정수 삼각형)  (0) 2022.07.03
130. 1149(RGB 거리)  (0) 2022.07.03
128. 9461 (파도반 수열)  (0) 2022.07.03
127. 1904 (01타일)  (0) 2022.07.03
126. 9184 (신나는 함수 실행)  (0) 2022.07.02
Comments