-
[Python] Programmers 단어 변환알고리즘/문제풀이 2021. 10. 6. 13:13728x90
1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/43163
2. 문제 요약
한 번에 한 개의 단어만 변경하여 begin ⇒ target으로 변경하는 최소의 과정 찾기
3. 아이디어 정리
- bfs로 현재 단어에서 변경 가능한 값을 방문하는 방식을 이용합니다.
- 현재 값이 target과 동일하면 그만
- 모든 단어를 현재 단어와 비교하여 1개 차이나는 경우 deque에 넣어서 방문하도록 한다.
4. 문제 풀이
4-1. 내 풀이
from collections import deque def solution(begin, target, words): dq = deque([(begin, 0)]) visit = [False] * len(words) while dq: now, count = dq.popleft() if now == target: # target과 동일하면 현재 단계 리턴 return count # 모든 단어 확인하면서 1개 차이나는 것 찾기 for i, word in enumerate(words): if visit[i]: # 방문한 경우 그만 continue if len([i for i, w in enumerate(word) if now[i] != w ]) == 1: dq.append((word, count + 1)) visit[i] = True return 0 # 변환 불가능한 경우
5. 결론
- bfs를 활용하여 begin 값에 너비 우선 탐색을 하는 문제
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 백준 1174 줄어드는 숫자 (1) 2021.10.08 [Python] 백준 17129 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유 (0) 2021.10.08 [Python] Programmers 위클리 8주차 최소직사각형 (0) 2021.10.05 [Python] 백준 2812 크게 만들기 (0) 2021.09.28 [Python] 백준 5397 키로거 (0) 2021.09.28