99ν΄λ½ μ½ν μ€ν°λ 22μΌμ°¨ TIL / μμ νμ
βοΈ λ¬Έμ
[νλ‘κ·Έλλ¨Έμ€/Programmers] νΌλ‘λ(https://school.programmers.co.kr/learn/courses/30/lessons/87946)
XXκ²μμλ νΌλ‘λ μμ€ν (0 μ΄μμ μ μλ‘ ννν©λλ€)μ΄ μμΌλ©°, μΌμ νΌλ‘λλ₯Ό μ¬μ©ν΄μ λμ μ ννν μ μμ΅λλ€. μ΄λ, κ° λμ λ§λ€ ννμ μμνκΈ° μν΄ νμν "μ΅μ νμ νΌλ‘λ"μ λμ ννμ λ§μ³€μ λ μλͺ¨λλ "μλͺ¨ νΌλ‘λ"κ° μμ΅λλ€. "μ΅μ νμ νΌλ‘λ"λ ν΄λΉ λμ μ νννκΈ° μν΄ κ°μ§κ³ μμ΄μΌ νλ μ΅μνμ νΌλ‘λλ₯Ό λνλ΄λ©°, "μλͺ¨ νΌλ‘λ"λ λμ μ ννν ν μλͺ¨λλ νΌλ‘λλ₯Ό λνλ λλ€. μλ₯Ό λ€μ΄ "μ΅μ νμ νΌλ‘λ"κ° 80, "μλͺ¨ νΌλ‘λ"κ° 20μΈ λμ μ νννκΈ° μν΄μλ μ μ μ νμ¬ λ¨μ νΌλ‘λλ 80 μ΄μ μ΄μ΄μΌ νλ©°, λμ μ ννν νμλ νΌλ‘λ 20μ΄ μλͺ¨λ©λλ€. μ΄ κ²μμλ ν루μ ν λ²μ© ννν μ μλ λμ μ΄ μ¬λ¬κ° μλλ°, ν μ μ κ° μ€λ μ΄ λμ λ€μ μ΅λν λ§μ΄ νννλ € ν©λλ€. μ μ μ νμ¬ νΌλ‘λ kμ κ° λμ λ³ "μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"κ° λ΄κΈ΄ 2μ°¨μ λ°°μ΄ dungeons κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ μ κ° ννν μ μλ μ΅λ λμ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- kλ 1 μ΄μ 5,000 μ΄νμΈ μμ°μμ λλ€.
- dungeonsμ μΈλ‘(ν) κΈΈμ΄(μ¦, λμ μ κ°μ)λ 1 μ΄μ 8 μ΄νμ λλ€.
- dungeonsμ κ°λ‘(μ΄) κΈΈμ΄λ 2 μ λλ€.
- dungeonsμ κ° νμ κ° λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"] μ λλ€. "μ΅μ νμ νΌλ‘λ"λ νμ "μλͺ¨ νΌλ‘λ"λ³΄λ€ ν¬κ±°λ κ°μ΅λλ€.
- "μ΅μ νμ νΌλ‘λ"μ "μλͺ¨ νΌλ‘λ"λ 1 μ΄μ 1,000 μ΄νμΈ μμ°μμ λλ€.
- μλ‘ λ€λ₯Έ λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"]κ° μλ‘ κ°μ μ μμ΅λλ€.
π€ μ μΆλ ₯ μμ
π§ λμ΄λ/μμ μκ°
β λμ΄λ: νλ‘κ·Έλλ¨Έμ€ Level.2
β μμ μκ°: 53λΆ
β κΆμ₯ μκ°: 1μκ° 15λΆ
π‘ νμ΄
1) λ¬Έμ μ΄ν΄
λ¬Έμ μ μ νλλ‘ μ ꡬννλ©΄ λλ λ¬Έμ λ€. λ¬Έμ μμ μ£Όμ΄μ§ μ΅λ κ°μμ λμ μ΄ μ λ ₯μΌλ‘ λ€μ΄μ¨λ€κ³ ν΄λ μ 체 4λ§ κ° μ λλ§ νμΈνλ©΄ λκΈ° λλ¬Έμ μ¬λ§νλ©΄ μκ° μ΄κ³Όκ° μ λμ§ μμκΉ μΆλ€.
λμ λ°©λ¬Έ μμλ₯Ό 미리 λ§λ€μ΄λκ³ , κ° μμλ§λ€ λ°©λ¬Έ κ°λ₯ν λμ κ°μλ₯Ό 체ν¬νκΈ° μν΄ itertools λͺ¨λμ permutations ν¨μλ₯Ό μ¬μ©νλ€.
2) μμ΄λμ΄ νλ¦
β μ λ΅ μ μ₯ λ³μ answer μ΄κΈ°κ°μ -1λ‘ μ€μ
β‘ λμ λ°©λ¬Έ μμ 미리 λ§λ€μ΄λκΈ°
→ dungeon_combinations = list(permutations(dungeons, len(dungeons)))
β’ dungeon_combinations 리μ€νΈλ₯Ό μννλ©΄μ λ°©λ¬Έ μμ νμΈ
→ current_order = νμ¬ νμΈ μ€μΈ λ°©λ¬Έ μμ 리μ€νΈ
for i in range(0, len(dungeon_combinations)):
current_order = dungeon_combinations[i]
β£ current_orderλ₯Ό μ£Όμ΄μ§ λμ κ°μλ§νΌ μννλ©΄μ μ΅μ νμ νΌλ‘λμ μλͺ¨ νΌλ‘λλ₯Ό κ°μ§κ³ λ¨μ νΌλ‘λ κ³μ°
β€ λ¨μ νΌλ‘λκ° νμ¬ λ°©λ¬Έν λμ μ μ΅μ νμ νΌλ‘λλ³΄λ€ μμΌλ©΄ λμ΄μ νμνμ§ μκ³ λ€μ λ°©λ¬Έ μμ 리μ€νΈ νμΈ
3) ꡬν
from itertools import permutations
def solution(k, dungeons):
answer = -1
dungeon_combinations = list(permutations(dungeons, len(dungeons)))
dungeon_len = len(dungeons)
for i in range(0, len(dungeon_combinations)):
visit_cnt = 0
current_order = dungeon_combinations[i]
fatigue = k
for j in range(0, dungeon_len):
if fatigue >= current_order[j][0]:
visit_cnt += 1
fatigue -= current_order[j][1]
answer = max(answer, visit_cnt)
else:
break
return answer
4) μ΄λ €μ λ μ /λ°°μ΄ μ
π¨ μ΄λ €μ λ μ
- μμ
β λ°°μ΄ μ
- λ³μ μ μΈ μμΉκ° λ§€μ°λ§€μ° μ€μν¨ - μ²μμ answer = max(answer, visit_cnt) λΆλΆμ λ€λ₯Έ κ³³μ λ£μ΄λ¬μ λ΅μ΄ μ λλ‘ λμ€μ§ μμλ€.