Skip to content

Commit daac8eb

Browse files
committed
[Silver II] Title: A → B, Time: 32 ms, Memory: 32412 KB -BaekjoonHub
1 parent 220bcf6 commit daac8eb

2 files changed

Lines changed: 63 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 16953 A → B
2+
# 실버 2
3+
4+
import sys
5+
input = sys.stdin.readline
6+
7+
A, B = map(int, input().split())
8+
9+
count = 1 # 연산 횟수의 최솟값에 1을 더하라 했기 때문에 1로 시작
10+
11+
# B를 줄여서 A로 만들어가는 과정
12+
while A != B:
13+
count += 1
14+
15+
# B 값 임시 저장
16+
tmp = B
17+
18+
if B % 10 == 1: # 오른쪽 끝이 1인 경우
19+
B //= 10 # 오른쪽 끝의 1 없애기
20+
elif B % 2 == 0: # 2로 나눠질 때
21+
B //= 2
22+
23+
# 위 과정에 해당이 되지 않아서 B 값에 변화가 없을 때
24+
if tmp == B:
25+
print(-1)
26+
break
27+
else:
28+
print(count)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# [Silver II] A → B - 16953
2+
3+
[문제 링크](https://www.acmicpc.net/problem/16953)
4+
5+
### 성능 요약
6+
7+
메모리: 32412 KB, 시간: 32 ms
8+
9+
### 분류
10+
11+
그래프 이론, 그리디 알고리즘, 그래프 탐색, 집합과 맵, 너비 우선 탐색
12+
13+
### 제출 일자
14+
15+
2025년 6월 17일 15:54:09
16+
17+
### 문제 설명
18+
19+
<p>정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.</p>
20+
21+
<ul>
22+
<li>2를 곱한다.</li>
23+
<li>1을 수의 가장 오른쪽에 추가한다. </li>
24+
</ul>
25+
26+
<p>A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.</p>
27+
28+
### 입력
29+
30+
<p>첫째 줄에 A, B (1 ≤ A < B ≤ 10<sup>9</sup>)가 주어진다.</p>
31+
32+
### 출력
33+
34+
<p>A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.</p>
35+

0 commit comments

Comments
 (0)