
https://school.programmers.co.kr/learn/courses/30/lessons/43163
visited배열에 몇 번째에 방문했는지 저장했다.
begin은 words에 포함된 단어가 아니기 때문에 visited배열의 인덱스는 words 인덱스에 1씩 더했다.
아 그리고 range(cword)라고 오타나는 바람에
TypeError: 'str' object cannot be interpreted as an integer
라고 에러남
만약 진짜 시험이었으면 지피티 돌려볼 수도 없고.. 다 풀어놓고 틀릴 듯 🥺
from collections import deque
def solution(begin, target, words):
def bfs():
visited = [-1] * (len(words) + 1)
queue = deque([(begin, 0)])
visited[0] = 0
while queue:
cword, idx = queue.popleft()
if cword == target:
return visited[idx]
for i in range(len(words)):
# 이동 가능한지 확인
nword = words[i]
cnt = 0
for j in range(len(cword)):
if cword[j] != nword[j]:
cnt += 1
if cnt != 1: # 이동 불가능
continue
if visited[i + 1] == -1:
visited[i + 1] = visited[idx] + 1
queue.append((nword, i + 1))
else:
visited[i + 1] = min(visited[idx] + 1, visited[i + 1])
return 0
answer = bfs()
return answer
아 그리고 벨로그는 왜 git gist 삽입이 안되는 걸까ㅠㅠ
참고
🧠
🤖