[Silver II] Title: A → B, Time: 92 ms, Memory: 41388 KB -BaekjoonHub
This commit is contained in:
32
백준/Silver/16953. A → B/A → B.py
Normal file
32
백준/Silver/16953. A → B/A → B.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import sys
|
||||
from collections import defaultdict
|
||||
import math
|
||||
from collections import deque
|
||||
|
||||
input = sys.stdin.readline
|
||||
|
||||
a, b = map(int, input().split())
|
||||
case = 0
|
||||
|
||||
def BFS(start, end):
|
||||
queue = deque([(start, 1)])
|
||||
visited = set([start])
|
||||
while queue:
|
||||
k, chance = queue.popleft()
|
||||
if k == end:
|
||||
return chance
|
||||
temp1 = int(str(k) + '1') # 1을 추가한 값
|
||||
temp2 = k * 2 # 2를 곱한 값
|
||||
|
||||
# 두 가지 연산을 수행하고 큐에 추가 (범위 초과 방지)
|
||||
if temp1 <= end and temp1 not in visited:
|
||||
visited.add(temp1)
|
||||
queue.append((temp1, chance + 1))
|
||||
|
||||
if temp2 <= end and temp2 not in visited:
|
||||
visited.add(temp2)
|
||||
queue.append((temp2, chance + 1))
|
||||
|
||||
return -1 # 만들 수 없는 경우
|
||||
|
||||
print(BFS(a,b))
|
||||
35
백준/Silver/16953. A → B/README.md
Normal file
35
백준/Silver/16953. A → B/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# [Silver II] A → B - 16953
|
||||
|
||||
[문제 링크](https://www.acmicpc.net/problem/16953)
|
||||
|
||||
### 성능 요약
|
||||
|
||||
메모리: 41388 KB, 시간: 92 ms
|
||||
|
||||
### 분류
|
||||
|
||||
너비 우선 탐색, 그래프 이론, 그래프 탐색, 그리디 알고리즘
|
||||
|
||||
### 제출 일자
|
||||
|
||||
2025년 3월 1일 22:02:10
|
||||
|
||||
### 문제 설명
|
||||
|
||||
<p>정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.</p>
|
||||
|
||||
<ul>
|
||||
<li>2를 곱한다.</li>
|
||||
<li>1을 수의 가장 오른쪽에 추가한다. </li>
|
||||
</ul>
|
||||
|
||||
<p>A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.</p>
|
||||
|
||||
### 입력
|
||||
|
||||
<p>첫째 줄에 A, B (1 ≤ A < B ≤ 10<sup>9</sup>)가 주어진다.</p>
|
||||
|
||||
### 출력
|
||||
|
||||
<p>A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.</p>
|
||||
|
||||
Reference in New Issue
Block a user