본문 바로가기
알고리즘/백준

연속합 (1912)

by 수쨔앙 2023. 2. 8.

1912

문제 n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다.
예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.
입력 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
출력 첫째 줄에 답을 출력한다.
n = int(input())
a = list(map(int, input().split()))
lst = [a[0]]
for i in range(len(a)-1):
    lst.append(max((lst[i]+a[i+1]),a[i+1]))
print(max(lst))

for 문을 돌리면서 연속된 값을 더해주며 lst에 담아서 마지막에 최대값을 출력하자


1. 첫번째 줄에 연속될 숫자의 개수를 입력받게 하고
# n = int(input())


2. 두번째 줄에 입력된 개수만큼 수열을 입력받게 하자
#a = list(map(int, input().split()))


3. for 문으로 돌리면서 연속된 수를 더해줘서 더 큰 값을 lst에 담아두자.
# for i in range(len(a)-1):
#     lst.append(max((lst[i]+a[i+1]),a[i+1]))


이때 첫번째 값 하나만이 최대값이 될 수 있기 때문에 처음부터 lst에 따로 담아두자
# lst = [a[0]]

728x90

'알고리즘 > 백준' 카테고리의 다른 글

기본수학2 (11653, 1929)  (1) 2022.09.16
기본수학2 (1978, 2581)  (1) 2022.09.15
기본수학1 (10250, 2775, 2839, 10757)  (1) 2022.09.14
기본수학1 (1712, 2292, 1193, 2869)  (0) 2022.09.13
문자열(1152, 2908, 5622, 2941, 1316)  (1) 2022.09.11

댓글