λ¬Έμ
νλ‘κ·Έλλ¨Έμ€ - λ¨μ΄ λ³ν
νμ΄ κ³Όμ
μμ λ¨μ΄μμ λͺ©ν λ¨μ΄λ‘ λ³ννλ μ΅λ¨ κ²½λ‘(λΉμ©)μ μ°Ύλ λ¬Έμ μ
λλ€.
κ° λ¨μ΄λ μ΅λ ν λ¬Έμλ§ λ³κ²½μ΄ κ°λ₯νκ³ μ£Όμ΄μ§ 리μ€νΈμ ν¬ν¨λ λ¨μ΄μΌ κ²½μ°μλ§ ν΄λΉ λ¨μ΄λ‘ λ³νμ μλν΄λ³Ό μ μμ΅λλ€.
λ°λΌμ κ° νμλ§λ€ λ¨μ΄μ μ리μλ₯Ό νλμ© νμνμ¬ a to z
μ€ λ³νμ΄ κ°λ₯ν λ¨μ΄κ° μλμ§ λ°μ Έμ€λλ€.
μ΄λ Python μμλ ord & chr
λ₯Ό ν΅ν΄μ λ¬Έμμ μμ€ν€μ½λ κ°μ νμ©ν μ μλλ° λ¬Έμμ΄μ μ½κ² μ²λ¦¬νκΈ° μν΄ νμ©νμμ΅λλ€.
λν μ€λ³΅λ λ³νμ νΌνκΈ° μν΄ visit
μ λμ
λλ¦¬λ‘ μ μΈνμ¬ λ¬Έμμ΄ ν΄μ±
μ ν΅ν΄ μ΄λ―Έ λ³νμ μλνλ λ¨μ΄μΈμ§ ν¨μ¨μ μΌλ‘ νλ¨νλλ‘ νμ΅λλ€.
μ½λ
from collections import deque
def bfs(start, goal, words):
q = deque()
visit = dict.fromkeys(words, 0)
q.append((start, 0))
while q:
here, cost = q.popleft()
if here == goal:
return cost
# κ° μ리λ₯Ό μννλ©° μνλ²³ νλλ₯Ό λ³κ²½ν΄ λ§λ€ μ μλ λ¨μ΄λ₯Ό νμν΄λ΄
λλ€.
for i, c in enumerate(here):
for j in range(ord('a'), ord('z')+1):
if i != chr(j):
new_word = here[:i] + chr(j) + here[i+1:]
# μλ‘ λ§λ€μ΄μ§ λ¨μ΄κ° ν보 리μ€νΈμ μ‘΄μ¬νλ€λ©΄
if new_word in words and not visit[new_word]:
visit[new_word] = 1
q.append((new_word, cost + 1))
return 0
def solution(begin, target, words):
ans = bfs(begin, target, words)
return ans
'π algorithm > programmers' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘κ·Έλλ¨Έμ€ Level 2 - νκ² λλ² (0) | 2021.03.01 |
---|---|
νλ‘κ·Έλλ¨Έμ€ Level 3 - λ€νΈμν¬ (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 3 - μ΅κ³ μ μ§ν© (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 2 - ν° μ λ§λ€κΈ° (0) | 2021.03.01 |
νλ‘κ·Έλλ¨Έμ€ Level 3 - μ¬ μ°κ²°νκΈ° (0) | 2021.03.01 |
π¬ λκΈ