coding/알고리즘,자료구조
BFS 연습 - 1로 만들기(백준)
Jeo
2022. 2. 9. 18:44
문제: https://www.acmicpc.net/problem/1463
import collections
import sys
n = int(sys.stdin.readline())
que = collections.deque([(n, 0)])
while True:
num, cnt = que.popleft()
# 만들고자 하는 수인 1이 되면 몇 번의 연산이 사용되었는지 출력하고 while 종료
if num == 1:
print(cnt)
break
# 1 뺀 값, 연산 횟수 1추가해서 큐에 넣기
sub1 = (num-1, cnt+1)
que.append(sub1)
# 3으로 나눌 수 있다면 3으로 나눈 값, 연산 횟수 1 추가해서 큐에 넣기
if num%3 == 0:
div3 = (num//3, cnt+1)
que.append(div3)
# 2로 나눌 수 있다면 2로 나눈 값, 연산 횟수 1 추가해서 큐에 넣기
if num%2 == 0:
div2 = (num//2, cnt+1)
que.append(div2)