# 해당 문제를 bfs로 풀었고
# 처음에는 bfs로 어떻게 접근해야하는지에 대한 고민을 많이 했다.
# 그래서 dfs, bfs로 접근을 한다면 [ 변경되는 값, idx ]와 같은 걸
# 어떻게 문제에 반영할 수 있는지에 대해 생각해보기로 했다.
from collections import deque
def solution(begin, target, words):
if target not in words: return 0
w_ln = len(words)
que = deque([[begin,0]])
while True:
b, idx = que.popleft()
visit, flag = [0]*w_ln, False
if b == target: break
for i in range(w_ln):
for j in range(len(words[i])):
if b[j] == words[i][j]: visit[i] += 1
for i in range(w_ln):
if len(begin)-1 == visit[i]:
if words[i] == target:
idx += 1
flag = True
break
que.append([words[i], idx+1])
words[i] = ''
if flag: break
return idx
'알고리즘' 카테고리의 다른 글
[프로그래머스] 부족한 금액 계산하기 (0) | 2023.07.02 |
---|---|
[프로그래머스] 문자열 내림차순으로 배치하기 (0) | 2023.07.01 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2023.06.30 |
[프로그래머스] 내적 (0) | 2023.06.30 |
[프로그래머스] 수박수박수박수박수박수? (0) | 2023.06.30 |