
문제 풀이
- 단어를 바꾸는 change 함수를 만들어 줌(현재 단어와 words의 i번째 단어를 비교)
- deque에 0, 시작단어를 넣고 while문을 돌림 - 종료 조건 : 현재 단어와 타겟 단어가 같은 경우
- 바꾼 단어는 다시 돌아가지 않기 위해 visited 사용
- while문 종료 이후 answer값이 바뀌지 않았다면 0을 반환, 아니라면 answer를 반환
from collections import deque
def change(start, end):
cnt = 0
for i in range(len(start)):
if start[i] == end[i]:
cnt += 1
if cnt == len(start)-1:
return 1
else:
return 0
def solution(begin, target, words):
answer = 100
q = deque([(0, begin)])
visited = [False] * len(words)
while q:
cnt, now = q.popleft()
if now == target:
answer = cnt
for i in range(len(words)):
if change(now, words[i]) and visited[i] == False:
q.append((cnt+1, words[i]))
visited[i] = True
else:
continue
if answer == 100:
return 0
return answer
반응형
'프로그래머스 - Python > 알고리즘 고득점 Kit' 카테고리의 다른 글
| 알고리즘 고득점 Kit - 그래프 - 순위 (3) | 2025.07.24 |
|---|---|
| 알고리즘 고득점 Kit - 여행경로(DFS) (2) | 2025.07.10 |
| 알고리즘 고득점 Kit - BFS - 게임 맵 최단거리 (0) | 2025.06.17 |
| 알고리즘 고득점 Kit - dfs/bfs - 타겟 넘버 (0) | 2025.06.14 |
| 알고리즘 고득점 Kit - 완전탐색 - 모의고사 (0) | 2025.06.11 |