ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

16953๋ฒˆ: A → B

์ฒซ์งธ ์ค„์— A, B (1 ≤ A < B ≤ 109)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ •์ˆ˜ A๋ฅผ B๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • A์— 2๋ฅผ ๊ณฑํ•œ๋‹ค.
  • A์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์— 1์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 ์ด๋•Œ, B๋กœ ๋ฐ”๊พธ๋Š”๋ฐ ํ•„์š”ํ•œ ์—ฐ์‚ฐ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ด๋Š” `DFS`๋ฅผ ํ†ตํ•ด `2๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒฝ์šฐ`์™€ `์˜ค๋ฅธ์ชฝ์— 1์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ`์— ๋Œ€ํ•ด ๊ฐ€์ง€๋ฅผ ๋ป—์–ด๋‚˜๊ฐ€๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


def dfs(sub_total, cur_depth):
    # B๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, ๊ฐ€์ง€์น˜๊ธฐ
    if sub_total > B:
        return

    if sub_total == B:
        print(cur_depth)
        exit(0)
        return

    # 2๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒฝ์šฐ
    dfs(sub_total * 2, cur_depth + 1)
    # ์˜ค๋ฅธ์ชฝ์— 1์„ ๋”ํ•˜๋Š” ๊ฒฝ์šฐ
    dfs(int(str(sub_total) + '1'), cur_depth + 1)


if __name__ == "__main__":
    A, B = map(int, stdin.readline().split())

    dfs(A, 1)
    print(-1)

 

 

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€