[알고리즘] dp - 백준 25644 1904 11060 1309 15486
알고리즘
2023. 3. 18. 21:05
25644 최대 상승
import sys input = sys.stdin.readline n = int(input()) nums = list(map(int, input().split())) ans, benefit = 0, 0 for i in range(len(nums)-1, -1, -1): benefit = max(benefit, nums[i]) ans = max(ans, benefit - nums[i]) print(ans)
1904 01타일
n = int(input()) dp = [0 for _ in range(n+1)] dp[0] = 1 dp[1] = 1 if n > 1: dp[2] = 2 for i in range(3, n+1): dp[i] = (dp[i-1] + dp[i-2])%15746 print(dp[n])
11060 점프 점프
import sys input = sys.stdin.readline n = int(input()) miro = list(map(int, input().split())) dp = [n+1] * n dp[0] = 0 for i in range(n): for j in range(1, miro[i] + 1): if i + j >= n: break dp[i+j] = min(dp[i+j], dp[i] + 1) print(dp[n-1] if dp[n-1] != n+1 else -1)
1309 동물원
n = int(input()) dp = [0] * (n+1) if n == 1: print(3) else: dp[0] = 1 dp[1] = 3 for i in range(2, n+1): dp[i] = (dp[i-1]*2 + dp[i-2])%9901 print(dp[-1]%9901)
15486 퇴사 2
import sys input = sys.stdin.readline n = int(input()) t, p = [], [] dp = [0 for _ in range(n+1)] for _ in range(n): tt, pp = map(int, input().split()) t.append(tt) p.append(pp) k = 0 for i in range(n): k = max(k, dp[i]) if i + t[i] > n: continue dp[i + t[i]] = max(k + p[i], dp[i + t[i]]) print(max(dp))
'알고리즘' 카테고리의 다른 글
[알고리즘] 그리디 - 1417 1758 27446 2777 17392 11000 (1) | 2023.11.23 |
---|---|
[알고리즘] BFS - 백준 2589 2636 5427 9205 13913 17836 (0) | 2023.03.16 |
[알고리즘] 플로이드 - 백준 11403 1389 11404 2458 1956 14938 (0) | 2023.03.15 |
[알고리즘] 다익스트라 - 백준 18352 1446 1916 5972 13549 17396 (0) | 2023.03.14 |
[알고리즘] 정렬 - 백준 1181 3273 2075 11497 2170 (0) | 2023.03.06 |