본문 바로가기
코딩테스트/프로그래머스

[프로그래머스][Lv.3][Python] 단어변환

by Hwan,. 2021. 10. 21.
728x90
반응형

1. 문제

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

 

코딩테스트 연습 - 단어 변환

두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수

programmers.co.kr

 

2. 코드

def dfs(begin, target, words, visited):
    str_end = target
    str_start = begin
    int_depth = 0
    arr_stack = [str_start]
    
    while arr_stack:
        str_top = arr_stack.pop()
        print(str_top)
        
        if str_top == target:
            return int_depth
        
        for i in range(len(words)):
            if visited[i] or words[i] == str_top:
                continue
        
            for _ in range(len(words[i])):
                count_tmp = 0
                for j in range(len(words[i])):
                    if [ch for ch in words[i]][j] == [ch for ch in str_top][j]:
                        count_tmp+=1 
                
                if (len(words[i])-1) == count_tmp:
                    visited[i] = True
                    
                    if words[i] != str_end:
                        arr_stack.append(words[i])
                    else:
                        return int_depth+1
                    break
                    
        int_depth += 1
            
            
def solution(begin, target, words):
    if target not in words:
        return 0
    
    visited = [False] * (len(words))
    print(words)
    return dfs(begin, target, words, visited)

 

3. 결과

테스트 결과

728x90
반응형

댓글