728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/43163
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
최단 시간을 구해야 하기 때문에 BFS를 사용해서 풀이하였다.
많이 어렵진 않은 문제
from collections import deque
# 두 단어 사이 다른 글자 개수 확인
def check(word1, word2):
cnt = 0
for i in range(len(word1)):
if word1[i] != word2[i]:
cnt += 1
return cnt
def solution(begin, target, words):
answer = 0
# 만약 words에 목표 단어가 없다면 바로 0 반환
if target not in words:
return 0
# BFS 진행
q = deque()
q.append((begin, 0))
while q:
n_word, times = q.popleft()
if n_word == target:
return times
# 모든 단어를 보면서 바꿀 수 있는 단어라면 바꾸기
for word in words:
change = check(word, n_word)
if change == 1:
q.append((word, times + 1))
728x90
반응형
'Study > algorithm' 카테고리의 다른 글
[백준] 11726번: 2×n 타일링 (python) (0) | 2024.07.11 |
---|---|
[백준] 1463번: 1로 만들기 (python) (0) | 2024.07.11 |
[programmers] 부대복귀 (python) (0) | 2024.07.04 |
[programmers] 양과 늑대 (python) (0) | 2024.07.04 |
[programmers] 요격 시스템 (python) (0) | 2024.07.03 |