https://www.acmicpc.net/problem/14501
나의 답... (틀림)
N = int(input())
ti = []
pi = []
for i in range (N):
t = list(map(int,input().split()))
ti.append(t[0])
pi.append(t[1])
result = []
MAX = 0
for i in range (N):
for j in range(i,N,1):
a = []
while (j<N and j+ti[j] < N):
a.append(pi[j])
j += ti[j]
print(a)
MAX = max(MAX, sum(a))
print(MAX)
모든 경우의수를 넣어보려고 했는데, 안되네...
내가 못찾은 경우가 있나보다.
테스트 케이스에서는 마지막 테케가 원하는 값대로 안나왔다.
다른 사람 답
N = int(input())
t = []
p = []
dp = [0 for _ in range(N+1)]
for _ in range(N):
T, P = map(int, input().split())
t.append(T)
p.append(P)
for i in range(N-1, -1, -1): # 뒤에서부터 거꾸로
if t[i] + i > N: # 상담에 필요한 일수가 퇴사일을 넘어가면
dp[i] = dp[i+1] # 다음날 값 그대로 가져옴
else:
dp[i] = max(dp[i+1], dp[t[i] + i] + p[i]) # 오늘 상담을 안 할 경우와 상담을 할 경우 중 max 값
print(dp[0])
'코딩테스트' 카테고리의 다른 글
[Python] 백준 - 영단어 암기는 괴로워 (0) | 2024.05.16 |
---|---|
[Python] 백준 - 덩치 (0) | 2024.05.14 |
[Python] 백준 - 한수 (0) | 2024.05.13 |
[Python] 백준 - 블랙잭 (0) | 2024.05.13 |
[Python] 백준 - 영화감독 숌 (0) | 2024.05.10 |