문제 링크
LV 2: 숫자 변환하기
구현 방식
- 간단한 bfs 문제였다
- queue에 값을 넣는 조건만 조금 생각해주면 된다
- visit을 set으로 정의하고, dest의 값이 visit에 없고, dest가 y 이하라면 그 다음 depth로 넘어갈 수 있다
코드
from collections import deque
def solution(x, y, n):
def bfs(x):
queue = deque([]); queue.append((x, 0))
visit = set(); visit.add(x)
while queue:
src, cnt = queue.popleft()
if src == y:
return cnt
dest = src + n
if dest not in visit and dest <= y:
visit.add(dest)
queue.append((dest, cnt+1))
dest = src * 2
if dest not in visit and dest <= y:
visit.add(dest)
queue.append((dest, cnt+1))
dest = src * 3
if dest not in visit and dest <= y:
visit.add(dest)
queue.append((dest, cnt+1))
return -1
result = bfs(x)
return result