[프로그래머스] 단어 변환

yjseo·2024년 9월 21일

https://school.programmers.co.kr/learn/courses/30/lessons/43163

visited배열에 몇 번째에 방문했는지 저장했다.
beginwords에 포함된 단어가 아니기 때문에 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 삽입이 안되는 걸까ㅠㅠ

참고
🧠
🤖

profile
저 뭐해먹고 살아요..🥺

0개의 댓글