본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 단어 변환

by 안녕나는현서 2021. 12. 22.
728x90

📌 문제

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

 

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

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

programmers.co.kr

 

📌 문제 접근 방법

  1. dfs를 사용하여 풀이하였고, 스택에 변환 횟수를 같이 저장해주었다.
  2. 만약 target 단어가 words에 없다면 바로 0을 리턴한다.
  3. words에 target이 있다면 스택에서 하나씩 pop하여 words에 있는 단어와 비교한다.
  4. words의 단어와 딱 한 글자만 다른 단어를 다시 스택에 넣는다.
  5. 위의 과정을 반복하다가 스택에서 pop한 단어가 target과 일치하면 그 때의 변환 횟수를 출력한다.

 

📌 코드

def solution(begin, target, words):
    if target not in words:
        return 0
    
    stack = [(begin, 0)]
    visited = [0 for _ in range(len(words))]
    N = len(begin)
    
    while stack:
        word, cnt = stack.pop()
        if word == target:
            return cnt
        
        for i in range(len(words)):
            if not visited[i]:
                c = 0
                for j in range(N):
                    if word[j] != words[i][j]:
                        c += 1
                
                if c == 1:
                    visited[i] = 1
                    stack.append((words[i], cnt+1))
728x90

'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글

[PG/Python] 야근 지수  (0) 2021.12.22
[PG/Python] N으로 표현  (0) 2021.12.22
[PG/Python] 다단계 칫솔 판매  (0) 2021.12.17
[PG/Python] 배달  (0) 2021.12.16
[PG/Python] 행렬 테두리 회전하기  (0) 2021.12.16

댓글