Algorithm Problem/Python

[python] λ°±μ€€ - 14501. 퇴사

deo2kim 2020. 11. 11. 08:47
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S4 | 완전탐색 or DP

λ‚œμ΄λ„κ°€ S4인 만큼 μ™„μ „νƒμƒ‰μœΌλ‘œ 해결해도 λœλ‹€.

ν•˜μ§€λ§Œ μ €λ²ˆμ— ν•œλ²ˆ ν’€μ–΄λ΄€μœΌλ―€λ‘œ μ΄λ²ˆμ—λŠ” DP둜 ν•΄κ²°ν•΄λ΄€λ‹€.

 

 

μΌν•˜λŠ” 날을 맨 λ’€μ—μ„œλΆ€ν„° κ³„μ‚°ν•΄λ³΄μž

7일을 μ„ νƒν•˜λ©΄ κ·Όλ¬΄μ‹œκ°„ 초과둜 이읡 0

6일도 λ§ˆμ°¬κ°€μ§€

5일을 μ„ νƒν•˜λ©΄ 이읡 15

4일을 μ„ νƒν•˜λ©΄ 이읡은 20에, 5일에도 일할 수 μžˆμœΌλ―€λ‘œ +15 ν•΄μ„œ 35

3일을 μ„ νƒν•˜λ©΄ 이읡은 10에 4일에도 일할 수 μžˆμœΌλ―€λ‘œ (4일에 μΌν•˜λ©΄ μœ„μ—μ„œ ν™•μΈν–ˆλ“―μ΄ 5일도 μΌν•œλ‹€) +35 μ΄λ―€λ‘œ 45

2일을 μ„ νƒν•˜λ©΄ 이읡은 20

1일을 μ„ νƒν•˜λ©΄ 이읡은 10에 4일뢀터 일할 수 μžˆμœΌλ―€λ‘œ ( μ•„κΉŒ κ·Έ 35 λ₯Ό λ”ν•œλ‹€) +35 μ΄λ―€λ‘œ 45

 

결과적으둜 1,4,5 μΌν•˜λ©΄ 45

λ˜λŠ” 3,4,5 μΌν•˜λ©΄ 45

이 λ‘κ°€μ§€μ˜ κ²½μš°κ°€ μ΅œλŒ€μ΄λ‹€.

 

ν•œκ°€μ§€ μΆ”κ°€ν•΄μ•Όν•  κ²½μš°λŠ” κ·Όλ¬΄μ‹œκ°„μ΄ μ΄ˆκ³Όν•΄μ„œ 일할 수 없더라도 0λŒ€μ‹  ν˜„μž¬λ‚˜μ˜¨ μ΅œλŒ€μ΄μ΅κ°’μ„ μ±„μ›Œλ„£μ–΄μ€˜μ•Όν•œλ‹€.

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

import sys

input = sys.stdin.readline

if __name__ == '__main__':
    N = int(input())
    schedule = [tuple(map(int, input().split())) for _ in range(N)]
    profit = [0] * (N + 1)
    max_profit = 0
    for i in range(N - 1, -1, -1):
        day, money = schedule[i]
        if i + day > N:
            profit[i] = max_profit
            continue
        else:
            max_profit = max(money + profit[i + day], max_profit)
            profit[i] = max_profit
    print(max_profit)
 

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

링크: https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

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

www.acmicpc.net

λ°˜μ‘ν˜•