문제 설명 및 제한사항
아이디어 및 해결 방법
코드
import itertools
from collections import defaultdict, deque
def hamming(w1, w2):
return sum(c1 != c2 for c1, c2 in zip(w1, w2))
def solution(begin, target, words):
A = defaultdict(list)
for w1, w2 in itertools.combinations(words + [begin], 2):
if hamming(w1, w2) == 1:
A[w1].append(w2)
A[w2].append(w1)
q, vis = deque(), set()
q.append((begin, 0))
vis.add(begin)
while len(q) > 0:
word, d = q.popleft()
if word == target:
return d
for v in A[word]:
if v not in vis:
q.append((v, d+1))
vis.add(v)
return 0
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges