ν°μ€ν 리 λ·°
λ¬Έμ
λ¬Έμ νμ΄
NμΌ μ΄νμ ν΄μ¬λ₯Ό νλλ°, κ·Έ μ κΉμ§ ν μ μλ μΌλ€ μ€ μ΅λ μμ΅μ΄ λλ κ²½μ°μ μμ΅μ ν©μ λ°ννλ λ¬Έμ μ΄λ€.
1μΌ | 2μΌ | 3μΌ | 4μΌ | 5μΌ | 6μΌ | 7μΌ | |
Ti | 3 | 5 | 1 | 1 | 2 | 4 | 2 |
Pi | 10 | 20 | 10 | 20 | 15 | 40 | 200 |
μμ μμμ κ²½μ° 6, 7μ μλ΄νλ μΌμ ν΄μ¬ μ΄νκΉμ§ μΌμ μ§ννμ¬μΌ νλ―λ‘ ν μ μλ€. μμμμ κ°μ₯ μ΅λ μμ΅μ λ°μμν€λ κ²½μ°λ 1, 4, 5μΌμ μλ΄νλ κ²½μ°μ΄λ€.
μλ΄μ νλ κ²μ λν΄ λ κ°μ§ κ²½μ°κ° μλ€. 첫 λ²μ§Έλ μλ΄μ νλ κ²μ΄κ³ , λ λ²μ§Έλ μλ΄μ νμ§ μλ κ²μ΄λ€. μ΄λ₯Ό λ°μνμ¬ κ²½μ°μ μλ₯Ό κ³μ°νλ€λ©΄ λ€μκ³Ό κ°μ΄ κ³μ° ν μ μλ€.
κ·Έλ¦Όκ³Ό κ°μ΄ ν΄λΉ μΌμμ μλ΄μ νλκ°, μνλκ°μ λ°λΌ (a), (b)μ κ°μ΄ κ°μ§κ° 뻣λ κ²μ μ μ μλ€. λ°λΌμ DFSλ₯Ό μΌμ νλ κ²½μ°μ, νμ§ μλ κ²½μ°λ₯Ό μ¬κ· νΈμΆ νλ©΄ λλ€.
μ½λ
from sys import stdin
def dfs(day, pay):
global answer
cur_pay, next_pay = pay
if day >= n:
if day == n:
answer = max(answer, cur_pay + next_pay)
else:
answer = max(answer, cur_pay)
return
dfs(day + 1, pay)
cur_pay += next_pay
next_day, next_pay = works[day]
dfs(day + next_day, [cur_pay, next_pay])
if __name__ == "__main__":
answer = 0
n = int(stdin.readline())
works = [list(map(int, stdin.readline().split())) for _ in range(n)]
dfs(0, [0, 0])
print(answer)
μ¬κ·νΈμΆμ μ’ λ£νλ 쑰건μμ nλ³΄λ€ ν° κ²½μ°λ ν΄μ¬ μ΄νμ μΌμ μ²λ¦¬ν μ μμΌλ―λ‘ νμ¬κΉμ§ μ²λ¦¬ν μμ λ§ λ°μνμ¬μΌ νλ€. DFSλ₯Ό νΈμΆ ν λ, λ¨μν λ μ§λ§ μ¦κ°μν€λ κ²½μ°κ° ν΄λΉ λ μ§μ μΌμ νμ§ μλ κ²½μ°μ΄λ€.
'π¨βπ» μ½λ©ν μ€νΈ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€: 14889 μ€ννΈμ λ§ν¬ (0) | 2020.07.17 |
---|---|
λ°±μ€: 1759 μνΈ λ§λ€κΈ° (0) | 2020.07.17 |
λ°±μ€: 10971 μΈνμ μν 2 (0) | 2020.07.16 |
λ°±μ€: 6603 λ‘λ (0) | 2020.07.15 |
λ°±μ€: 10819 μ°¨μ΄λ₯Ό μ΅λλ‘ (0) | 2020.07.15 |