16953๋ฒ: A → B
์ฒซ์งธ ์ค์ A, B (1 ≤ A < B ≤ 109)๊ฐ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์
์ ์ A๋ฅผ B๋ก ๋ฐ๊พธ๋ ค๊ณ ํ๋ค. ๊ฐ๋ฅํ ์ฐ์ฐ์ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง์ด๋ค.
- 2๋ฅผ ๊ณฑํ๋ค.
- 1์ ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐํ๋ค.
A๋ฅผ B๋ก ๋ฐ๊พธ๋๋ฐ ํ์ํ ์ฐ์ฐ์ ์ต์๊ฐ์ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ A, B (1 ≤ A < B ≤ 109)๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
A๋ฅผ B๋ก ๋ฐ๊พธ๋๋ฐ ํ์ํ ์ฐ์ฐ์ ์ต์๊ฐ์ 1์ ๋ํ ๊ฐ์ ์ถ๋ ฅํ๋ค. ๋ง๋ค ์ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
2 162
์์ ์ถ๋ ฅ
5
ํ์ด
โ 2 -> 162 ๋ก ๋ฐ๊ฟ ๋, ๊ฑฐ๊พธ๋ก ๊ฐ๋ณด์.
1) ๊ฐ๋ฅํ ์ฐ์ฐ ์ค 2๋ฅผ ๊ณฑํ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ 162๋ฅผ 2๋ก ๋๋์ด ๋ณด๋ ๊ฒ์ ์๊ฐํ๋ค.
2) 2๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 0์ด๋ฉด ๊ทธ ์์ 2๋ฅผ ๊ณฑํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋๋จธ์ง๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ 2๋ฅผ ๊ณฑํ ๊ฒ์ด ์๋๊ฒ ๋๋ค.
3) 162 % 2 = 0์ด๊ธฐ ๋๋ฌธ์ ๋ชซ์ธ 81์ 2๋ฅผ ๊ณฑํ ๊ฒ์ด ๋๋ค. ๊ทธ๋ฌ๋ 81์ ๋ค์ 2๋ก ๋๋๋ฉด ๋๋จธ์ง๊ฐ 1์ด๋ค.
4) 2๋ก ๊ณฑํ ๊ฒ์ด ์๋๊ฒ ๋ผ์, ๊ฐ๋ฅํ ์ฐ์ฐ ์ค 1์ ์์ ๊ฐ์ฅ ์ค๋ฅธ์ชฝ์ ์ถ๊ฐํ๋ค๋ ๊ฒ์ ์๊ฐํ๋ค. ๊ทธ๋ ๋ค๋ฉด 8์ 1์ ์ถ๊ฐํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
5) ๊ทธ๋ผ 8์์ 1์ ๋นผ์ผ ํ๋๋ฐ, ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ด ์๋ค. ๋ฌธ์์ด๋ก ์นํํด์ 1์ ์ ๊ฑฐํ๋ฉด ์ข์ผ๋ 1์ด ์๋ ๋ค๋ฅธ ์ซ์๊ฐ ๋ถ์ด์๋ค๋ฉด ์ฒ๋ฆฌํ ์์ธ ์ํฉ์ ๋์ด๋๊ณ ์ฝ๋ ๊ธธ์ด ๋ํ ๊ธธ์ด์ง๋ค.
6) ๋ฐ๋ผ์ 3๋ฒ์ผ๋ก ๋์๊ฐ์, 81์ 2๋ก ๋๋์ง ์๊ณ 10์ผ๋ก ๋๋๋ค. ๊ทธ๋ผ 81 % 10 = 1, 81 // 10 = 8 ์ด๋ค.
7) 8 // 2 = 4, 4 // 2 = 2 ๊ฐ ๋์ ๋ ์ ์ A์ ๊ฐ์์ก๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
Solution
import sys
input = sys.stdin.readline
a, b = map(int,input().split())
cnt = 0
while a < b:
if b % 2 != 0 and b % 10 != 1: #๋ ์กฐ๊ฑด์ด ์ฑ๋ฆฝ๋์ง ์์ ๋
break
if b % 10 == 1: #ํ์์ผ ๋ 10์ผ๋ก ๋๋๋ฉด 1๋ง ๋จ๊ฒ ๋จ. ๊ทธ๋ผ ์กฐ๊ฑด ํ๋๊ฐ ์ฑ๋ฆฝ.
b //= 10
cnt += 1
elif b % 2 == 0: #์ง์์ผ ๋ 2๋ฅผ ๊ณฑํ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์กฐ๊ฑด ํ๋๊ฐ ์ฑ๋ฆฝ
b //= 2
cnt += 1
if a == b:
print(cnt + 1)
else:
print('-1')
ํ๋ฆฐ ์ฝ๋
import sys
input = sys.stdin.readline
a, b = map(int,input().split())
cnt = 0
while a < b:
if b % 2 != 0:
if b <= 10:
b //= 2
cnt += 1
else:
str_b = str(b)
b = int(str_b[:-1])
cnt += 1
elif b % 2 == 0:
b //= 2
cnt += 1
if a == b:
print(cnt + 1)
else:
print('-1')
์ฃผ์ด์ก๋ ํ ์คํธ ์ผ์ด์ค๋ ๋ชจ๋ ๋ง์์ผ๋ ์ ์ถ ๊ฒฐ๊ณผ๋ ์ค๋ต์ด๋ค.
๋ฐ๋ก: 2 43
๋ต : -1
์ค์ ์ถ๋ ฅ : 3
10์ผ๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 1์ด์ฌ์ผ๋ง ์กฐ๊ฑด์ด ์ฑ๋ฆฝํ๋ค. ๊ทธ๋ฌ๋ ์ ์ฝ๋๋ ๋๋จธ์ง๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ๊น์ง ํฌํจ์์ผ์ ํ๋ฆฐ ๊ฒ์ด๋ค. ๋ง์ฝ 83์ 10์ผ๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 1์ด ์๋๋ฐ๋ ๋ชซ์ด 4์ด๊ธฐ ๋๋ฌธ์ ์ง์์ผ ๋์ ์ฝ๋๋ก ๋์ด๊ฐ๋ค. ๊ทธ๋์ ์ง์, ํ์๋ก ๋๋๋ ๊ฒ ์๋ 10์ผ๋ก ๋๋ด์ ๋ ๋๋จธ์ง๊ฐ 1์ธ ๊ฒ๋ง ๊ณ์ฐํ๋๋ก ํ๋ค.
'๐งฉ Algorithm > [BOJ] Silver' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| BOJ 10709๋ฒ : ๊ธฐ์์บ์คํฐ (Python/Silver 5) (0) | 2023.04.17 |
|---|---|
| BOJ 14916๋ฒ : ๊ฑฐ์ค๋ฆ๋ (Python/Silver 5) (0) | 2023.04.12 |
| BOJ 1541๋ฒ : ์์ด๋ฒ๋ฆฐ ๊ดํธ (Python/Silver 2) (0) | 2023.04.04 |
| BOJ 2217๋ฒ : ๋กํ (Python/Silver 4) (0) | 2023.04.03 |
| BOJ 1654๋ฒ : ๋์ ์๋ฅด๊ธฐ (Python/Silver 2) (0) | 2023.04.03 |