😎 κ³΅λΆ€ν•˜λŠ” μ§•μ§•μ•ŒνŒŒμΉ΄λŠ” μ²˜μŒμ΄μ§€?

[BAEKJOON C++] 14501_퇴사 λ³Έλ¬Έ

πŸ¦₯ μ½”ν…Œ/BAEKJOON

[BAEKJOON C++] 14501_퇴사

μ§•μ§•μ•ŒνŒŒμΉ΄ 2023. 8. 19. 14:26
728x90
λ°˜μ‘ν˜•
πŸ’› 문제
μƒλ‹΄μ›μœΌλ‘œ μΌν•˜κ³  μžˆλŠ” λ°±μ€€μ΄λŠ” ν‡΄μ‚¬λ₯Ό ν•˜λ €κ³  ν•œλ‹€.
μ˜€λŠ˜λΆ€ν„° N+1일째 λ˜λŠ” λ‚  ν‡΄μ‚¬λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ,
 λ‚¨μ€ N일 λ™μ•ˆ μ΅œλŒ€ν•œ λ§Žμ€ μƒλ‹΄μ„ ν•˜λ €κ³  ν•œλ‹€.

λ°±μ€€μ΄λŠ” λΉ„μ„œμ—κ²Œ μ΅œλŒ€ν•œ λ§Žμ€ μƒλ‹΄μ„ μž‘으라고 λΆ€νƒμ„ ν–ˆκ³ , 
λΉ„μ„œλŠ” ν•˜λ£¨μ— ν•˜λ‚˜μ”© μ„œλ‘œ λ‹€λ₯Έ μ‚¬λžŒμ˜ μƒλ‹΄μ„ μž‘μ•„λ†“μ•˜λ‹€.

각각의 μƒλ‹΄μ€ μƒλ‹΄μ„ μ™„λ£Œν•˜λŠ”λ° κ±Έλ¦¬λŠ” κΈ°κ°„ Ti와 μƒλ‹΄μ„ ν–ˆμ„ λ•Œ λ°›μ„ μˆ˜ μžˆλŠ” κΈˆμ•‘ Pi둜 μ΄λ£¨μ–΄μ Έ μžˆλ‹€.

N = 7인 κ²½μš°μ— λ‹€μŒκ³Ό κ°™μ€ μƒλ‹΄ μΌμ •ν‘œλ₯Ό λ³΄μž.
1일 2일 3일 4일 5일 6일 7일
Ti 3 5 1 1 2 4 2
Pi 10 20 10 20 15 40 200

1일에 μž‘ν˜€μžˆλŠ” μƒλ‹΄μ€ μ΄ 3일이 κ±Έλ¦¬λ©°, μƒλ‹΄ν–ˆμ„ λ•Œ λ°›μ„ μˆ˜ μžˆλŠ” κΈˆμ•‘은 10이닀. 
5일에 μž‘ν˜€μžˆλŠ” μƒλ‹΄μ€ μ΄ 2일이 κ±Έλ¦¬λ©°, λ°›μ„ μˆ˜ μžˆλŠ” κΈˆμ•‘은 15이닀.
상담을 ν•˜λŠ”데 ν•„μš”ν•œ κΈ°κ°„은 1일보닀 ν΄ μˆ˜ μžˆκΈ° λ•Œλ¬Έμ—, λͺ¨λ“  μƒλ‹΄μ„ ν•  μˆ˜λŠ” μ—†λ‹€. 
예λ₯Ό λ“€μ–΄μ„œ 1일에 μƒλ‹΄μ„ ν•˜κ²Œ λ˜λ©΄, 2일, 3일에 μžˆλŠ” μƒλ‹΄μ€ ν•  μˆ˜ μ—†κ²Œ λœλ‹€. 
2일에 μžˆλŠ” μƒλ‹΄μ„ ν•˜κ²Œ λ˜λ©΄, 3, 4, 5, 6일에 μž‘ν˜€μžˆλŠ” μƒλ‹΄μ€ ν•  μˆ˜ μ—†λ‹€.
λ˜ν•œ, N+1μΌμ§Έμ—λŠ” νšŒμ‚¬μ— μ—†κΈ° λ•Œλ¬Έμ—, 6, 7일에 μžˆλŠ” μƒλ‹΄μ„ ν•  μˆ˜ μ—†λ‹€.
퇴사 μ „에 ν•  μˆ˜ μžˆλŠ” μƒλ‹΄μ˜ μ΅œλŒ€ μ΄μ΅μ€ 1일, 4일, 5일에 μžˆλŠ” μƒλ‹΄μ„ ν•˜λŠ” κ²ƒμ΄λ©°, μ΄λ•Œμ˜ μ΄μ΅μ€ 10+20+15=45이닀.

상담을 μ μ ˆνžˆ ν–ˆμ„ λ•Œ, λ°±μ€€μ΄κ°€ μ–»μ„ μˆ˜ μžˆλŠ” μ΅œλŒ€ μˆ˜μ΅μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€

πŸ’š μž…λ ₯
첫째 μ€„에 N (1 ≤ N ≤ 15)이 μ£Όμ–΄μ§„λ‹€.
λ‘˜μ§Έ μ€„λΆ€ν„° N개의 μ€„에 Ti와 Piκ°€ κ³΅λ°±μœΌλ‘œ κ΅¬λΆ„λ˜μ–΄μ„œ μ£Όμ–΄μ§€λ©°, 
1일뢀터 NμΌκΉŒμ§€ μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§„λ‹€. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)

πŸ’™ μΆœλ ₯
첫째 μ€„에 λ°±μ€€μ΄κ°€ μ–»μ„ μˆ˜ μžˆλŠ” μ΅œλŒ€ μ΄μ΅μ„ μΆœλ ₯ν•œλ‹€.
"""
[14501] 퇴사

πŸ’› 문제
μƒλ‹΄μ›μœΌλ‘œ μΌν•˜κ³  μžˆλŠ” λ°±μ€€μ΄λŠ” 퇴사λ₯Ό ν•˜λ €κ³  ν•œλ‹€.
μ˜€λŠ˜λΆ€ν„° N+1일째 λ˜λŠ” λ‚  퇴사λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ,
 남은 N일 λ™μ•ˆ μ΅œλŒ€ν•œ λ§Žμ€ 상담을 ν•˜λ €κ³  ν•œλ‹€.

λ°±μ€€μ΄λŠ” λΉ„μ„œμ—κ²Œ μ΅œλŒ€ν•œ λ§Žμ€ 상담을 작으라고 뢀탁을 ν–ˆκ³ , 
λΉ„μ„œλŠ” ν•˜λ£¨μ— ν•˜λ‚˜μ”© μ„œλ‘œ λ‹€λ₯Έ μ‚¬λžŒμ˜ 상담을 μž‘μ•„λ†“μ•˜λ‹€.

각각의 상담은 상담을 μ™„λ£Œν•˜λŠ”λ° κ±Έλ¦¬λŠ” κΈ°κ°„ Ti와 상담을 ν–ˆμ„ λ•Œ 받을 수 μžˆλŠ” κΈˆμ•‘ Pi둜 이루어져 μžˆλ‹€.

N = 7인 κ²½μš°μ— λ‹€μŒκ³Ό 같은 상담 μΌμ •ν‘œλ₯Ό 보자.
	1일	2일	3일	4일	5일	6일	7일
Ti	3	5	1	1	2	4	2
Pi	10	20	10	20	15	40	200

1일에 μž‘ν˜€μžˆλŠ” 상담은 총 3일이 걸리며, μƒλ‹΄ν–ˆμ„ λ•Œ 받을 수 μžˆλŠ” κΈˆμ•‘μ€ 10이닀. 
5일에 μž‘ν˜€μžˆλŠ” 상담은 총 2일이 걸리며, 받을 수 μžˆλŠ” κΈˆμ•‘μ€ 15이닀.
상담을 ν•˜λŠ”λ° ν•„μš”ν•œ 기간은 1일보닀 클 수 있기 λ•Œλ¬Έμ—, λͺ¨λ“  상담을 ν•  μˆ˜λŠ” μ—†λ‹€. 
예λ₯Ό λ“€μ–΄μ„œ 1일에 상담을 ν•˜κ²Œ 되면, 2일, 3일에 μžˆλŠ” 상담은 ν•  수 μ—†κ²Œ λœλ‹€. 
2일에 μžˆλŠ” 상담을 ν•˜κ²Œ 되면, 3, 4, 5, 6일에 μž‘ν˜€μžˆλŠ” 상담은 ν•  수 μ—†λ‹€.
λ˜ν•œ, N+1μΌμ§Έμ—λŠ” νšŒμ‚¬μ— μ—†κΈ° λ•Œλ¬Έμ—, 6, 7일에 μžˆλŠ” 상담을 ν•  수 μ—†λ‹€.
퇴사 전에 ν•  수 μžˆλŠ” μƒλ‹΄μ˜ μ΅œλŒ€ 이읡은 1일, 4일, 5일에 μžˆλŠ” 상담을 ν•˜λŠ” 것이며, μ΄λ•Œμ˜ 이읡은 10+20+15=45이닀.

상담을 적절히 ν–ˆμ„ λ•Œ, 백쀀이가 얻을 수 μžˆλŠ” μ΅œλŒ€ μˆ˜μ΅μ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€

πŸ’š μž…λ ₯
첫째 쀄에 N (1 ≤ N ≤ 15)이 주어진닀.
λ‘˜μ§Έ 쀄뢀터 N개의 쀄에 Ti와 Piκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄μ„œ 주어지며, 
1일뢀터 NμΌκΉŒμ§€ μˆœμ„œλŒ€λ‘œ 주어진닀. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)

πŸ’™ 좜λ ₯
첫째 쀄에 백쀀이가 얻을 수 μžˆλŠ” μ΅œλŒ€ 이읡을 좜λ ₯ν•œλ‹€.
"""

import sys
# μ˜€λŠ˜λΆ€ν„° N+1일째 λ˜λŠ” λ‚  퇴사λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œ, 남은 N일 λ™μ•ˆ μ΅œλŒ€ν•œ λ§Žμ€ 상담
N = int(input())
# 각 μΈλ±μŠ€λ§ˆλ‹€ [상담 κΈ°κ°„, λΉ„μš©]
schedule = [list(map(int, sys.stdin.readline().split())) for i in range(N)]

dp = [0 for i in range(N+1)]

for i in range(N):
    for j in range(i+schedule[i][0], N+1):
        #  i + "상담 κΈ°κ°„"λΆ€ν„° λ§ˆμ§€λ§‰ λ‚ 
        if dp[j] < dp[i] + schedule[i][1]:
            # μ΅œλŒ€ μˆ˜μ΅μ„ dp[j]에 μ €μž₯
            dp[j] = dp[i] + schedule[i][1]

print(dp[-1])

728x90
λ°˜μ‘ν˜•
Comments