프로그래머스/LV2
[프로그래머스 Lv2,python]- 숫자 변환하기
chyam_eun
2025. 2. 16. 14:00
https://school.programmers.co.kr/learn/courses/30/lessons/154538
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
from collections import deque
def bfs(x,y,n):
queue=deque([(x,0)]) # 처음 x와 횟수를 추가해줌
cnt_list=[] # 연산 횟수들을 저장
visited = set() # 중복된 값에 방문하지 않도록
while queue:
first=queue.popleft() # 먼저 큐에서 꺼내줌
if first[0]==y: # y와 같으면 횟수를 저장
cnt_list.append(first[1])
elif first[0]<y: # y보다 작을때
if first[0] not in visited: # 중복된 값이 없으면
visited.add(first[0]) # 방문
queue.append((first[0]*2,first[1]+1)) # 차례대로 추가해줌
queue.append((first[0]*3,first[1]+1))
queue.append((first[0]+n,first[1]+1))
return cnt_list
def solution(x, y, n):
answer = bfs(x,y,n)
if len(answer)==0: # 방문할수없으면
return -1
return min(answer) # 최소 횟수