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

수경·2023년 5월 8일
0

problem solving

목록 보기
143/174

프로그래머스 - 단어 변환

풀이

  1. 단어 변환 조건에 부합하는지 확인하는 compare 함수
    단어 변환 조건: 한 문자만 달라야 함
    -> 한 문자만 다르면 true, 아니면 false 반환

  2. bfs
    기존 bfs와 차이
    - compare가 true이면 큐에 넣어줌
    - visited -> 0이면 방문 x, 1이상이면 방문 o (지나쳐온 개수 저장)


코드

from collections import deque

def solution(begin, target, words):
    if target not in words:
        return 0
    else:
        visited = [0] * len(words)
        bfs(begin, target, words, visited)
        print(visited)
        return visited[words.index(target)]

def bfs(begin, target, words, visited):
    queue = deque([begin])
    q_idx = 0
    while queue:
        q = queue.popleft()
        if q == target:
            return 0
        if q in words:
            q_idx = words.index(q)
        for i, w in enumerate(words):
            if compare(q, w) and not visited[i]:
                queue.append(w)
                visited[i] = visited[q_idx] + 1
    
        
def compare(a, b):
    answer = 0
    for i in range(len(a)):
        if a[i] == b[i]:
            answer += 1
    return True if answer == len(a) - 1 else False
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글