티스토리 뷰
반응형
https://www.acmicpc.net/problem/1912

일단 DP에서 값을 계속 더해 가면서 선택, 선택 안함 유형으로 풀이했다.
다음 값을 계속 더해나가되 계속 양수이면 이어서 연속으로 합을 구한다. 하지만 음수가 되버리면 최대값의 조건이 깨지므로 0으로 초기화 한다.
N = int(input())
lst = [0] + list(map(int, input().split()))
dp = [0] * (N+1)
if max(lst[1:]) < 0:
ans = max(lst[1:])
else:
for i in range(0, N+1):
dp[i] = max(0, dp[i-1] + lst[i])
ans = max(dp[1:])
print(ans)
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 분산시스템
- 카카오페이
- 우선순위큐
- Python
- java
- lightsail
- LangChain
- springboot
- 보안기사
- 다이나믹프로그래밍
- 리눅스
- 카카오페이면접후기
- 정보보안
- 시간초과
- synflooding
- linux
- llm
- 정보보안기사
- 코딩테스트
- t-test
- Ai
- 자료구조
- FastAPI
- 그리디
- 프로그래머스
- 백준
- 딥러닝
- huggingface
- 파이썬
- 보안
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
글 보관함
