일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Kafka
- Java
- MSA
- Data Structure
- MySQL
- Galera Cluster
- 알고리즘
- 자바
- 백준
- c언어
- redis
- Algorithm
- OS
- 자료구조
- JavaScript
- mongoDB
- Proxy
- 디자인 패턴
- IT
- 운영체제
- spring webflux
- react
- Heap
- 파이썬
- design pattern
- C
- 네트워크
- 컴퓨터구조
- JPA
- Spring
Archives
- Today
- Total
시냅스
백준 boj 14501 - 퇴사 (파이썬, python) 본문
https://www.acmicpc.net/problem/14501
다이나믹 프로그래밍을 통해 해결하였다.
다만, 문제를 풀면서 고려해야할 조건이 2가지인데, 최대값과 일자를 고려하여야 했다.
주어지는 일자를 넘어가면 안 되는데, 이를 위해 for문을 역순으로 돌렸다.
값을 구할 때에 뒤에서부터 더해질 수 있는 최대값을 구해나가고,
일자를 벗어난다면 전의 결과를 저장함으로써 0번째 인덱스에 최대값을 도출할 수 있게 했다.
code
total = int(input())
days =[]
cost = []
dp = []
for i in range(total):
n, m = map(int, input().split())
days.append(n)
cost.append(m)
dp.append(m)
dp.append(0)
for i in range(total - 1, -1, -1):
if days[i] + i > total:
dp[i] = dp[i + 1]
else:
dp[i] = max(dp[i + 1], cost[i] + dp[i + days[i]])
print(dp[0])
'알고리즘' 카테고리의 다른 글
백준 boj 2529 - 부등호 (파이썬, python) (0) | 2022.03.01 |
---|---|
백준 boj 15661 - 링크와 스타트 (파이썬, python) (0) | 2022.03.01 |
백준 boj 1759 - 암호 만들기 (파이썬, python) (0) | 2022.02.23 |
백준 boj 15663 - N과 M(9) (파이썬, python) (0) | 2022.02.19 |
백준 boj 1748 - 수 이어 쓰기 1 (파이썬, python) (0) | 2022.02.11 |
Comments