728x90
문제출처: https://www.acmicpc.net/problem/1912
1912번: 연속합
첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다.
www.acmicpc.net
1. 코드
1
2
3
4
5
6
7
8
9
10
11
|
n=int(input())
arr=list(map(int, input().split()))
sum=[arr[0]] #sum의 0번째 인덱스에 첫 문자 넣어줌
for i in range(len(arr)-1):
sum.append(max(sum[i]+arr[i+1],arr[i+1]))
#sum의 i번째 인덱스와 새로운 숫자를 더한 값과
#새로운 숫자를 비교했을 때 더 큰 값을 비교해서 리스트에 넣어줌
print(max(sum))
|
cs |
2. 해결과정
sum이라는 빈 리스트를 설정하고 0번째 인덱스에 arr의 첫 숫자를 넣어준다.
sum의 i번째 인덱스와 그 다음 새로운 숫자를 더한 값과, 새로운 숫자를 비교했을 때 더 큰 값을 sum 리스트에 추가한다. (음수값이 들어갈 수 있기 때문에)
마지막으로 sum리스트에서 가장 큰 값을 출력해주면 된다.
3. 느낀점
dp는 정말 점화식, 규칙만 찾으면 쉬운데..그 규칙 찾기가 넘 어려움 ㅜ
728x90
'공부 자료 > 알고리즘' 카테고리의 다른 글
(Python/파이썬) 백준 4153번 - 직각삼각형 (0) | 2021.08.04 |
---|---|
(Python/파이썬) 백준 2156번 - 포도주 시식 (0) | 2021.08.04 |
(Python/파이썬) 백준 2193번 - 이친수 (0) | 2021.08.04 |
(Python/파이썬) 백준 1475번 - 방 번호 (0) | 2021.08.03 |
(Python/파이썬) 백준 3009번 - 네 번째 점 (0) | 2021.08.03 |