사용 언어 - Python3
문제 - 단어 변환
정답
큐를 활용한 이중 for문 (정답 맞춘 여부 X)
1. 예외처리
원하는 target 값이 words 리스트에 없는 경우, 0을 return 한다.
2. q = deque() 활용
q.append([begin, 0]) = q에 [시작값, 변환횟수] 형태로 입력한다.
각 원소를 x, cnt로 저장하여 while 문에서 처리
words 리스트에서 한 단어씩 확인하면서 x 값과 비교해준다. x[j] != word[j]
j번째 알파벳이 다른 경우, diff += 1을 해주면서 몇개의 알파벳이 다른지 저장한다.
1개의 알파벳만 다른 경우, 이동할 수 있으므로 q.append([word,cnt+1]) 해주면서 이동 처리해준다.
x == target 일 때까지 반복해주고, return cnt
3. target 값으로 변환될 수 없는 경우는 return 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:
x, cnt = q.popleft()
if x == target:
return cnt
for i in range(0, len(words)):
diff = 0
word = words[i]
for j in range(len(x)):
if x[j] != word[j]:
diff += 1
if diff == 1: #한개만 알파벳이 다른 경우
q.append([word,cnt+1]) #이동처리 cnt+1
return 0 #target 값으로 변환될 수 없는 경우
레퍼런스
- 정답 참고
- 정답 깃허브
'Algorithm > DFS&BFS&백트래킹&재귀' 카테고리의 다른 글
[백준] 수열 - 재귀함수 구현 정리 (1) (0) | 2023.10.30 |
---|---|
[프로그래머스 lv3] 여행경로 (1) | 2023.04.22 |
[Python3] 백준 1697번 숨바꼭질 (0) | 2023.04.19 |
[Python3] 1189번 컴백홈 (0) | 2023.04.09 |
[Python3] 백준 1012번 유기농 배추 (0) | 2023.04.09 |
댓글