백준_DP_퇴사_14501_파이썬

석준·2022년 8월 18일
0

백준_문제풀이

목록 보기
14/30
post-thumbnail

✅문제 요약

  1. 오늘부터 N+1일이 되는 날 퇴사를 한다
  2. 각 일별 소요되는 상담시간과 금액이 다르다
  3. 남은 N일 간 최대한 많은 수익을 내는 상담을 진행할 때 수익을 출력

✅문제 풀이

dp로 어떤 값을 출력할 지가 dp문제의 핵심이다.

1. dp에 최대 수익을 담아야하고
2. max를 사용하며 비교를 한다고 추측할 수 있다.

dp 배열 크기는 N이 최대 15일 이고, T의 최대값은 5이기에 21로 잡았다.

각 일 별 소요 시간과 그 시간이 끝났을 때, 해당 수익을 추가하며 비교했다.
또 전날수익이 오늘의 수익보다 크다면 전날 수익을 덮어씌움(현재날 수익경우의 상담이 덜 이득)

N = int(input())

T, P, dp = [0]*N, [0]*N, [0]*21
for i in range(N):
    T[i], P[i] = map(int, input().split())

for j in range(N):
    if dp[j] > dp[j+1]:
        dp[j+1] = dp[j]
    if dp[j+T[j]] < dp[j]+P[j]:
        dp[j+T[j]] = dp[j]+P[j]

print(dp[N])
profile
파이썬 서버 개발자 지망생

0개의 댓글