본문 바로가기
Algorithm/programmers

programmers 단어 변환(DFS/BFS)

by 갈잃자 2022. 6. 8.

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

 

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

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

programmers.co.kr

 

위 문제는 begin단어가 target단어까지 몇번만에 변화를 하는지 확인하는 문제이다.

 

나의경우

bfs를 이용하여 풀었는데 begin단어가 변할 수 있는 words를 확인하기 위해 모든 단어들을 list형태로 다시 풀어주었고,

다른알파벳이 하나인 경우에만  begin단어를 변환시켜 target단어까지 가는데 count를 세어주었다.

 


def solution(begin, target, words):
    begin = list(begin) # 단어를 알파벳 단위로 확인하기 위해 list로 바꾸어줌
    target = list(target) # 위와동일
    for i in range(len(words)): # 위와동일
        words[i] = list(words[i])

    def bfs(begin, answer):
        q = []
        q.append((begin, answer))

        while q:
            nowbegin, nowanswer = q.pop(0)

            if nowbegin == target:
                return nowanswer

            if target not in words: #단어가 target으로 변하지 못하는 경우 0을 return 시켜주는 if문
                return 0

            for y in range(len(words)):
                cnt = 0
                for x in range(len(words[y])):
                    if nowbegin[x] != words[y][x]:
                        cnt += 1
                if cnt == 1:
                    q.append((words[y], nowanswer + 1))


    answer = bfs(begin,0)
    return answer

 

댓글