일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- react
- Java
- JavaScript
- Spring
- 디자인 패턴
- Heap
- 알고리즘
- Galera Cluster
- 네트워크
- IT
- Data Structure
- OS
- 파이썬
- MSA
- Kafka
- 컴퓨터구조
- Proxy
- mongoDB
- redis
- 자료구조
- 자바
- design pattern
- MySQL
- 백준
- C
- spring webflux
- JPA
- 운영체제
- Algorithm
- c언어
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