Algorithm/Programmer/DFS,BFS/level 3/単語変換(Python使用)
5327 ワード
📖 質問する
📝 解法
リスト
words
にtarget
単語がないと変換できないため、return 0
BFSアルゴリズムを使用します.<-これは、
begin
からtarget
へと「最小」段階に移行するためである.(BFSを使用する場合、最初にtarget
が発生するステップは最小のステップであるが、DFSの場合、より高いステップ数が必要となる.)隣接するノードは、アルファベットの異なる単語が1つしかありません.
2-1. リスト
words
を巡回する過程で、現在の単語とアルファベットの異なる単語のみが検索されます.(関数difference_cnt
の戻り値が1の単語)2-2. 現在の単語とアルファベットのみが他の単語が以前にアクセスしたことのないノードである場合、次のアクセスするノードが存在するキュー(
q
)に格納されます.2-3. 現在の単語が
target
である場合、現在のdepth
は最小レベルであるため、変数answer
に挿入され、while文は逃走するパスワード from collections import deque
def differences_cnt(word1, word2):
differences = 0
for i in range(len(word1)):
if word1[i] != word2[i]:
differences += 1
return differences
def solution(begin, target, words):
answer = 0
if target not in words:
return 0
q = deque()
visited = [begin]
q.append((begin,0))
# bfs 시작
while q:
cur_word, depth = q.popleft()
if cur_word == target:
answer = depth
break
for word in words:
if differences_cnt(cur_word, word) == 1 and word not in visited:
visited.append(word)
q.append((word, depth+1))
return answer
😊 に感銘を与える
レベル3なので、怖くなったのか、最初はどうやって解けばいいのか分からなかった.
また,以前に解いたDFS,BFSの問題はいずれも隣接するノードによって与えられていたが,この問題は疎かで,私自身が「隣接する条件」を探さなければならないためである.
それ以外に基本的なBFSアルゴリズムは何の応用もないので,問題を容易に解決できる.
Reference
この問題について(Algorithm/Programmer/DFS,BFS/level 3/単語変換(Python使用)), 我々は、より多くの情報をここで見つけました
https://velog.io/@yellowsummer/AlgorithmprogrammersBFS-level3-단어-변환with-python
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from collections import deque
def differences_cnt(word1, word2):
differences = 0
for i in range(len(word1)):
if word1[i] != word2[i]:
differences += 1
return differences
def solution(begin, target, words):
answer = 0
if target not in words:
return 0
q = deque()
visited = [begin]
q.append((begin,0))
# bfs 시작
while q:
cur_word, depth = q.popleft()
if cur_word == target:
answer = depth
break
for word in words:
if differences_cnt(cur_word, word) == 1 and word not in visited:
visited.append(word)
q.append((word, depth+1))
return answer
レベル3なので、怖くなったのか、最初はどうやって解けばいいのか分からなかった.
また,以前に解いたDFS,BFSの問題はいずれも隣接するノードによって与えられていたが,この問題は疎かで,私自身が「隣接する条件」を探さなければならないためである.
それ以外に基本的なBFSアルゴリズムは何の応用もないので,問題を容易に解決できる.
Reference
この問題について(Algorithm/Programmer/DFS,BFS/level 3/単語変換(Python使用)), 我々は、より多くの情報をここで見つけました https://velog.io/@yellowsummer/AlgorithmprogrammersBFS-level3-단어-변환with-pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol