프로그래머스/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) # 최소 횟수