문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43163?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
from collections import deque
def solution(begin, target, words):
visited = [False] * len(words)
answer = 0
q = deque()
q.append([begin,0])
while q:
now,cnt = q.popleft()
if now == target:
answer = cnt
break
for i in range(len(words)):
trans_cnt = 0
if visited[i] == False:
for j in range(len(now)):
if now[j] != words[i][j]:
trans_cnt += 1
if trans_cnt == 1:
q.append([words[i],cnt+1])
visited[i] = True
return answer
풀이
- 4방향 탐색과 다른점은 현재 단어(now)에서 words의 원소가 아직 탐색하지 않은 단어이면, for문을 통해 자릿수를 체크해야한다는 점이다.
- 현재 단어에서 다음 단어로 바꿀수 있는 조건이 1회만 변경된 경우이므로, 알파벳 단위로 체크해서 다른 횟수(trans_cnt)를 체크해서 1인경우, 변환할 수 있는 단어이므로 q에 해당 단어와 cnt+1을 넣어준다.
'👨🏻💻알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv1. 푸드 파이트 대회 (0) | 2023.01.30 |
---|---|
[프로그래머스] Lv2. 모음사전 (0) | 2023.01.30 |
[프로그래머스] Lv3. 야근 지수 (0) | 2023.01.28 |
[프로그래머스] Lv3. 네트워크 (0) | 2023.01.27 |
[프로그래머스] Lv2. 할인 행사 (0) | 2023.01.26 |