λ¬Έμ μ€λͺ
XXκ²μμλ νΌλ‘λ μμ€ν (0 μ΄μμ μ μλ‘ ννν©λλ€)μ΄ μμΌλ©°, μΌμ νΌλ‘λλ₯Ό μ¬μ©ν΄μ λμ μ ννν μ μμ΅λλ€. μ΄λ, κ° λμ λ§λ€ ννμ μμνκΈ° μν΄ νμν "μ΅μ νμ νΌλ‘λ"μ λμ ννμ λ§μ³€μ λ μλͺ¨λλ "μλͺ¨ νΌλ‘λ"κ° μμ΅λλ€. "μ΅μ νμ νΌλ‘λ"λ ν΄λΉ λμ μ νννκΈ° μν΄ κ°μ§κ³ μμ΄μΌ νλ μ΅μνμ νΌλ‘λλ₯Ό λνλ΄λ©°, "μλͺ¨ νΌλ‘λ"λ λμ μ ννν ν μλͺ¨λλ νΌλ‘λλ₯Ό λνλ λλ€. μλ₯Ό λ€μ΄ "μ΅μ νμ νΌλ‘λ"κ° 80, "μλͺ¨ νΌλ‘λ"κ° 20μΈ λμ μ νννκΈ° μν΄μλ μ μ μ νμ¬ λ¨μ νΌλ‘λλ 80 μ΄μ μ΄μ΄μΌ νλ©°, λμ μ ννν νμλ νΌλ‘λ 20μ΄ μλͺ¨λ©λλ€.
μ΄ κ²μμλ ν루μ ν λ²μ© ννν μ μλ λμ μ΄ μ¬λ¬κ° μλλ°, ν μ μ κ° μ€λ μ΄ λμ λ€μ μ΅λν λ§μ΄ νννλ € ν©λλ€. μ μ μ νμ¬ νΌλ‘λ kμ κ° λμ λ³ "μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"κ° λ΄κΈ΄ 2μ°¨μ λ°°μ΄ dungeons κ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ μ κ° ννν μ μλ μ΅λ λμ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- kλ 1 μ΄μ 5,000 μ΄νμΈ μμ°μμ λλ€.
- dungeonsμ μΈλ‘(ν) κΈΈμ΄(μ¦, λμ μ κ°μ)λ 1 μ΄μ 8 μ΄νμ
λλ€.
- dungeonsμ κ°λ‘(μ΄) κΈΈμ΄λ 2 μ λλ€.
- dungeonsμ κ° νμ κ° λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"] μ λλ€.
- "μ΅μ νμ νΌλ‘λ"λ νμ "μλͺ¨ νΌλ‘λ"λ³΄λ€ ν¬κ±°λ κ°μ΅λλ€.
- "μ΅μ νμ νΌλ‘λ"μ "μλͺ¨ νΌλ‘λ"λ 1 μ΄μ 1,000 μ΄νμΈ μμ°μμ λλ€.
- μλ‘ λ€λ₯Έ λμ μ ["μ΅μ νμ νΌλ‘λ", "μλͺ¨ νΌλ‘λ"]κ° μλ‘ κ°μ μ μμ΅λλ€.
μ μΆλ ₯ μ
νμ¬ νΌλ‘λλ 80μ λλ€.
λ§μ½, 첫 λ²μ§Έ → λ λ²μ§Έ → μΈ λ²μ§Έ λμ μμλ‘ νννλ€λ©΄
- νμ¬ νΌλ‘λλ 80μ΄λ©°, 첫 λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ" λν 80μ΄λ―λ‘, 첫 λ²μ§Έ λμ μ ννν μ μμ΅λλ€. 첫 λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 20μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 60μ λλ€.
- λ¨μ νΌλ‘λλ 60μ΄λ©°, λ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 50μ΄λ―λ‘, λ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. λ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 40μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 20μ λλ€.
- λ¨μ νΌλ‘λλ 20μ΄λ©°, μΈ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 30μ λλ€. λ°λΌμ μΈ λ²μ§Έ λμ μ ννν μ μμ΅λλ€.
λ§μ½, 첫 λ²μ§Έ → μΈ λ²μ§Έ → λ λ²μ§Έ λμ μμλ‘ νννλ€λ©΄
- νμ¬ νΌλ‘λλ 80μ΄λ©°, 첫 λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ" λν 80μ΄λ―λ‘, 첫 λ²μ§Έ λμ μ ννν μ μμ΅λλ€. 첫 λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 20μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 60μ λλ€.
- λ¨μ νΌλ‘λλ 60μ΄λ©°, μΈ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 30μ΄λ―λ‘, μΈ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. μΈ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 10μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 50μ λλ€.
- λ¨μ νΌλ‘λλ 50μ΄λ©°, λ λ²μ§Έ λμ μ λκΈ°μν΄ νμν "μ΅μ νμ νΌλ‘λ"λ 50μ΄λ―λ‘, λ λ²μ§Έ λμ μ ννν μ μμ΅λλ€. λ λ²μ§Έ λμ μ "μλͺ¨ νΌλ‘λ"λ 40μ΄λ―λ‘, λμ μ ννν ν λ¨μ νΌλ‘λλ 10μ λλ€.
λ°λΌμ μ΄ κ²½μ° μΈ λμ μ λͺ¨λ ννν μ μμΌλ©°, μ μ κ° ννν μ μλ μ΅λ λμ μλ 3μ λλ€.
νμ΄ μ½λ
from collections import deque
def bfs(start, k, dungeons):
queue = deque()
queue.append([start, k, 0, [False for _ in range(len(dungeons))]])
counted = []
while queue:
location, tired, count, visited = queue.popleft()
visited[location] = True
tired -= dungeons[location][1]
count += 1
counted.append(count)
for i in range(len(dungeons)):
if not visited[i] and tired >= dungeons[i][0]:
queue.append([i, tired, count, visited[:]])
return max(counted)
def solution(k, dungeons):
answer = -1
for i in range(len(dungeons)):
if dungeons[i][0] <= k:
answer = max(answer, bfs(i, k, dungeons))
return answer
BFSλ₯Ό μ¬μ©νμ¬ νμ΄νμκ³ , λͺ¨λ 루νΈλ₯Ό νμΈνλ μμ νμ λ¬Έμ μλ€.
μ¬μ€ permutation λͺ¨λμ μ¬μ©ν΄μ νμ΄ν΄λ λμ§λ§, BFSλ₯Ό μ¬μ©ν΄μ νμλ€.
μμ νμμ΄ κ°λ₯ν μ΄μ λ λμ μ κ°μκ° μ΅λ 8κ°λ°μ λμ§ μλλ€λ μ μ΄λ€.
μ²μμ μ μ₯ κ°λ₯ν λμ μ λν΄μλ§ bfs μΆλ°μ μΌλ‘ μΌλλ€.
κ°κ°μ 루νΈλ§λ€ λ€λ₯Έ λμ μ λ°©λ¬Ένλμ§ νμΈν΄μ£ΌκΈ° μν΄μ,
νμ μμ λ΄μ visitedλ₯Ό ν¬ν¨ν΄μ£Όμλ€.
ν λ΄λΆμλ [νμ¬ μμΉ, νΌλ‘λ, λμ μ΄ λ°©λ¬Έ νμ, λμ λ³ λ°©λ¬Έ μ¬λΆ λ°°μ΄]μ κ°μ μμλ€μ΄ ν¬ν¨λμ΄ μκ³ ,
μ΄ κ²μ νλμ νμ μμκ° λ‘μ§μ κ±°μΉλ κ² = κ°κ°μ κ²½λ‘λ₯Ό μλ―Ένλ κ²μ΄λ€.
μ΄λ μ£Όμν΄μ£Όμ΄μΌ ν μ μ, νμ μλ‘μ΄ μμλ₯Ό append ν λμ΄λ€.
μμ§ λ°©λ¬Ένμ§ μμκ³ , μ μ₯ νΌλ‘λκ° μ νμ κ±Έλ¦¬μ§ μμ κ²½μ° appendλ₯Ό ν΄μ£Όμ΄μΌ νλλ°,
visitedλ₯Ό κΌ λ³΅μ¬ν΄μ λ£μ΄μ£Όμ΄μΌ νλ€.
λμ λ°©λ¬Έ νμ μ€ κ°μ₯ λ§μ΄ λ°©λ¬Έν κ²μ κ³μν΄μ κ°±μ ν΄μ£Όλ©΄ λ¬Έμ κ° νλ¦°λ€.
'π μ½λ©ν μ€νΈ λλΉ : PS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νλ‘κ·Έλλ¨Έμ€] λ±κ΅£κΈΈ (level3, python) (0) | 2022.09.13 |
---|---|
[νλ‘κ·Έλλ¨Έμ€] [1μ°¨] νλ μ¦4λΈλ‘ (level2, python) (1) | 2022.09.13 |
[νλ‘κ·Έλλ¨Έμ€] λ¨μ΄ λ³ν (level3, python) (0) | 2022.09.13 |
[νλ‘κ·Έλλ¨Έμ€] μ£Όμκ°κ²© (level2, python) (1) | 2022.09.13 |
[νλ‘κ·Έλλ¨Έμ€] λ λ§΅κ² (level2, python) (0) | 2022.09.12 |