728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/43163
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도
LV 3
문제 설명
시작 단어 begin, 도착 단어 target이 주어지고 변환할 수 있는 단어의 배열 words가 주어진다.
변환할 수 있는 조건은 한번에 한 개의 알파벳만 바꿀 수 있고,
words안에 있는 단어로만 변경이 가능하다.
최소 몇단개에 걸쳐 begin의 단어를 target으로 변환 가능한지 Retrun해준다.
만약 변환할 수 없는 경우 0을 Retrun 해준다.
해결법
deque로 DFS를 구현해 해결하였다.
- 단어와 몇번째 변환인지를 큐에 저장하고 words에서 변환할 수 있는 단어를 탐색해 큐에 저장한다.
- 변환할 수 있느 단어인지 확인법은 for문으로 하나의 단어만 다른 경우를 세주었다.
- 이 과정을 큐에 단어가 존재할 때 반복하다 단어가 target과 동일하면 총 단계의 수를 반환한다.
- 만약 변환할 수 없는 경우에는 0을 반환한다.
코드
from collections import deque
def solution(begin, target, words):
if target not in words:
return 0
q = deque()
q.append([begin, 0])
while q:
s, idx = q.popleft()
if s == target:
return idx
cnt = 0
for i in range(len(words)):
cnt = 0
word = words[i]
for j in range(len(s)):
if s[j] != word[j]:
cnt += 1
if cnt == 1:
q.append([word, idx + 1])
return 0
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 단속카메라 by 파이썬 (Python) : 탐욕법 (0) | 2023.08.11 |
---|---|
[프로그래머스] 숫자 게임 by 파이썬 (Python) (0) | 2023.08.10 |
[프로그래머스] 야근 지수 by 파이썬 (Python) (0) | 2023.08.06 |
[프로그래머스] 최고의 집합 by 파이썬 (Python) (0) | 2023.08.04 |
[프로그래머스] 이중 우선 순위 큐 by 파이썬 (Python) : heap (0) | 2023.08.03 |