반응형
https://programmers.co.kr/learn/courses/30/lessons/43163
역시 이번에도 잘 푼 사람의 풀이를... 조금 더 python스럽게 최적화 해서 가져와 보았다.
from collections import deque
# 일단 dfs, bfs는... queue를 써주는게 성능 면에서 매우 좋다.
def solution(begin, target, words):
# 방문 여부와, 몇번의 변환이 필요한지를 저장하는 dict
dist = {begin: 0}
# 시작 word를 queue에 넣고 시작
queue = deque([begin])
while queue:
current = queue.popleft()
# words에서... 다른 게 하나 있는 녀석들만 filter 해준당... ㅋㅋ
next_words = filter(lambda w : sum([int(x!=y) for x,y in zip(current,w)])==1,words)
for next_word in next_words:
# 방문 한 적 없으면...
if next_word not in dist:
# 이전 단어에서의 거리로 dist 딕셔너리에 등록
dist[next_word] = dist[current] + 1
queue.append(next_word)
return dist.get(target, 0)
반응형
'ETC' 카테고리의 다른 글
[LV1] 크레인 인형뽑기 Python (0) | 2020.10.03 |
---|---|
[LV1] 모든 레코드 조회하기 Mysql (0) | 2020.10.03 |
프로그래머스 DFS/BFS 네트워크 Python 풀이 (0) | 2020.03.08 |
프로그래머스 DFS/BFS 타겟 넘버 python 풀이 (0) | 2020.03.08 |
프로그래머스 그래프 가장 먼 노드 python 풀이 (0) | 2020.03.05 |