[νλ‘κ·Έλλ¨Έμ€ | Python] νΌλ‘λ
π λ¬Έμ μ 보
- λμ΄λ : Level 2
- λ¬Έμ λ§ν¬ : https://programmers.co.kr/learn/courses/30/lessons/87946
μ½λ©ν μ€νΈ μ°μ΅ - νΌλ‘λ
XXκ²μμλ νΌλ‘λ μμ€ν (0 μ΄μμ μ μλ‘ ννν©λλ€)μ΄ μμΌλ©°, μΌμ νΌλ‘λλ₯Ό μ¬μ©ν΄μ λμ μ ννν μ μμ΅λλ€. μ΄λ, κ° λμ λ§λ€ ννμ μμνκΈ° μν΄ νμν "μ΅μ νμ νΌλ‘λ"μ λ
programmers.co.kr
π λ¬Έμ μ€λͺ
λ¬Έμ μ€λͺ
XXκ²μμλ νΌλ‘λ μμ€ν (0 μ΄μμ μ μλ‘ ννν©λλ€)μ΄ μμΌλ©°, μΌμ νΌλ‘λλ₯Ό μ¬μ©ν΄μ λμ μ ννν μ μμ΅λλ€. μ΄λ, κ° λμ λ§λ€ ννμ μμνκΈ° μν΄ νμν "μ΅μ νμ νΌλ‘λ"μ λμ ννμ λ§μ³€μ λ μλͺ¨λλ "μλͺ¨ νΌλ‘λ"κ° μμ΅λλ€. "μ΅μ νμ νΌλ‘λ"λ ν΄λΉ λμ μ νννκΈ° μν΄ κ°μ§κ³ μμ΄μΌ νλ μ΅μνμ νΌλ‘λλ₯Ό λνλ΄λ©°, "μλͺ¨ νΌλ‘λ"λ λμ μ ννν ν μλͺ¨λλ νΌλ‘λλ₯Ό λνλ λλ€. μλ₯Ό λ€μ΄ "μ΅μ νμ νΌλ‘λ"κ° 80, "μλͺ¨ νΌλ‘λ"κ° 20μΈ λμ μ νννκΈ° μν΄μλ μ μ μ νμ¬ λ¨μ νΌλ‘λλ 80 μ΄μ μ΄μ΄μΌ νλ©°, λμ μ ννν νμλ νΌλ‘λ 20μ΄ μλͺ¨λ©λλ€.
μ΄ κ²μμλ ν루μ ν λ²μ© ννν μ μλ λμ μ΄ μ¬λ¬κ° μλλ°, ν μ μ κ° μ€λ μ΄ λμ λ€μ μ΅λν λ§μ΄ νννλ € ν©λλ€. μ μ μ νμ¬ νΌλ‘λ kμ κ° λμ λ³ "μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"κ° λ΄κΈ΄ 2μ°¨μ λ°°μ΄ dungeons κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ μ κ° ννν μ μλ μ΅λ λμ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ ν μ¬ν
- kλ 1 μ΄μ 5,000 μ΄νμΈ μμ°μμ λλ€.
- dungeonsμ μΈλ‘(ν) κΈΈμ΄(μ¦, λμ μ κ°μ)λ 1 μ΄μ 8 μ΄νμ
λλ€.
- dungeonsμ κ°λ‘(μ΄) κΈΈμ΄λ 2 μ λλ€.
- dungeonsμ κ° νμ κ° λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"] μ λλ€.
- "μ΅μ νμ νΌλ‘λ"λ νμ "μλͺ¨ νΌλ‘λ"λ³΄λ€ ν¬κ±°λ κ°μ΅λλ€.
- "μ΅μ νμ νΌλ‘λ"μ "μλͺ¨ νΌλ‘λ"λ 1 μ΄μ 1,000 μ΄νμΈ μμ°μμ λλ€.
- μλ‘ λ€λ₯Έ λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"]κ° μλ‘ κ°μ μ μμ΅λλ€.
μ μΆλ ₯ μ
k | dungeons | result |
80 | [[80,20],[50,40],[30,10]] | 3 |
μ μΆλ ₯ μ μ€λͺ
νμ¬ νΌλ‘λλ 80μ λλ€.
λ§μ½, 첫 λ²μ§Έ → λ λ²μ§Έ → μΈ λ²μ§Έ λμ μμλ‘ νννλ€λ©΄
- νμ¬ νΌλ‘λλ 80μ΄λ©°, 첫 λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ" λν 80μ΄λ―λ‘, 첫 λ²μ§Έ λμ μ ννν μ μμ΅λλ€. 첫 λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 20μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 60μ λλ€.
- λ¨μ νΌλ‘λλ 60μ΄λ©°, λ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 50μ΄λ―λ‘, λ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. λ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 40μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 20μ λλ€.
- λ¨μ νΌλ‘λλ 20μ΄λ©°, μΈ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 30μ λλ€. λ°λΌμ μΈ λ²μ§Έ λμ μ ννν μ μμ΅λλ€.
λ§μ½, 첫 λ²μ§Έ → μΈ λ²μ§Έ → λ λ²μ§Έ λμ μμλ‘ νννλ€λ©΄
- νμ¬ νΌλ‘λλ 80μ΄λ©°, 첫 λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ" λν 80μ΄λ―λ‘, 첫 λ²μ§Έ λμ μ ννν μ μμ΅λλ€. 첫 λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 20μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 60μ λλ€.
- λ¨μ νΌλ‘λλ 60μ΄λ©°, μΈ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 30μ΄λ―λ‘, μΈ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. μΈ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 10μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 50μ λλ€.
- λ¨μ νΌλ‘λλ 50μ΄λ©°, λ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 50μ΄λ―λ‘, λ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. λ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 40μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 10μ λλ€.
λ°λΌμ μ΄ κ²½μ° μΈ λμ μ λͺ¨λ ννν μ μμΌλ©°, μ μ κ° ννν μ μλ μ΅λ λμ μλ 3μ λλ€.
π λ¬Έμ νμ΄
λ°©λ² 1. μμ΄ νμ©, μμ νμ
dfs, bfsλ‘ νκΉλ κ³ λ―Όνμ§λ§ dungeonsμ μ΅λ κ°μκ° 8κ°μ΄κΈ°μ κ·Έλ₯ μμ νμμ μ ννλ€. λ¬Έμ λ μμ΄μ΄μλλ°, μ΄λ pythonμ itertools - permutationμ νμ©ν μ μμλ€ (μ΄λ²μ λ°°μ λ€). κ·Έλ¦¬κ³ permutationsλ₯Ό νλ©΄ κΉλν 리μ€νΈ νν μμ νμ±λλ κ²μ΄ μλλΌ, </itertools.permutations object at 0x0000024f9e679ea0>νμμ΄ λμ λΉν©νλ€. μ μμ tuple μμ listμμ λ°λ³΅λ¬Έμ λ리기 μν΄ μ΄μ€ forλ¬Έμ νμ©νμλ€.
from itertools import permutations
def solution(k, dungeons):
answer = 0
for permut in permutations(dungeons, len(dungeons)):
cnt = 0
energy = k
for pmt in permut:
if energy >= pmt[0]:
cnt += 1
energy -= pmt[1]
if answer < cnt:
answer = cnt
return answer
π‘ What I learned
1. μμ΄κ³Ό μ‘°ν©
: itertools λΌμ΄λΈλ¬λ¦¬ - permutation , combinations
import itertools
pool = ['A', 'B', 'C']
print(list(map(''.join, itertools.permutations(pool)))) # 3κ°μ μμλ‘ μμ΄ λ§λ€κΈ°
print(list(map(''.join, itertools.permutations(pool, 2)))) # 2κ°μ μμλ‘ μμ΄ λ§λ€κΈ°
# μΆλ ₯ κ²°κ³Ό
['ABC', 'ACB', 'BAC', 'BCA', 'CAB', 'CBA']
['AB', 'AC', 'BA', 'BC', 'CA', 'CB']
1-1. join ν¨μ
joinμ μΌμ ν κ·μΉμ κ°μ§κ³ 리μ€νΈλ₯Ό λ¬Έμμ΄λ‘ ν©μ³μ£Όλ ν¨μμ΄λ€. λ¬Έμμ΄μ λ€λ£° λ μ μ©νκ² μΈ μ μλ€.
β ''.join() : λ§€κ°λ³μλ‘ λ€μ΄μ¨ 리μ€νΈμ μμλ€μ ν©μ³μ νλμ λ¬Έμμ΄λ‘ λ°κΎΈμ΄ λ°ννλ€.
aList = ['a', 'b', 'c', 'd', '1', '2', '3']
result = "".join(aList)
print(result) # μΆλ ₯ κ²°κ³Ό => abcd123
β 'ꡬλΆμ'.join : 리μ€νΈμ κ°κ³Ό κ° μ¬μ΄μ ꡬλΆμλ₯Ό λ£μ΄μ νλμ λ¬Έμμ΄λ‘ λ°κΎΈμ΄ λ°ννλ€.
aList = ['python', 'join', 'example']
result = "_".join(aList)
print(result) # μΆλ ₯ κ²°κ³Ό => python_join_example
μ°Έκ³ μλ£
- νλ‘κ·Έλλ¨Έμ€ - νλ‘κ·Έλλ° κ°μ - νμ΄μ¬μ νμ΄μ¬λ΅κ² (https://programmers.co.kr/learn/courses/4008/lessons/12836)
- [κ°λ°μ μ§λ§μ:ν°μ€ν 리] https://blockdmask.tistory.com/468
'Problem Solving > Programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€ | Python] μ κ· μμ΄λ μΆμ² (0) | 2022.06.29 |
---|---|
[νλ‘κ·Έλλ¨Έμ€ | Python] λ‘λμ μ΅κ³ μμμ μ΅μ μμ (0) | 2022.06.29 |
[νλ‘κ·Έλλ¨Έμ€ | Python] κ²μ λ§΅ μ΅λ¨κ±°λ¦¬ (0) | 2022.06.21 |
[νλ‘κ·Έλλ¨Έμ€ | Python] 3μ§λ² λ€μ§κΈ° (0) | 2022.06.20 |
[νλ‘κ·Έλλ¨Έμ€ | Python] ν€ν¨λ λλ₯΄κΈ° (0) | 2022.06.20 |