Post
Aβ†’B(λ°±μ€€ 16953번) | Gihun Son

Aβ†’B(λ°±μ€€ 16953번)

πŸ’‘ **Check Point !

(Β ν•΄λ‹Ήμ‚¬ν•­Β βœ“μ²΄ν¬Β )

  1. λ§‰νž˜ 없이 μˆ˜μ›”ν•˜κ²Œ ν’€λ¦° λ¬Έμ œμΈκ°€?

  2. 1μ‹œκ°„μ΄λ‚΄λ‘œ ν’€λ Έλ˜ λ¬Έμ œμΈκ°€?βœ“

  3. 1μ‹œκ°„ 이상 or 며칠을 두고 ν’€μ–΄λ΄€λ”λ‹ˆ ν’€λ¦° λ¬Έμ œμΈκ°€?

  4. μ‹œκ°„μ„ 써도 도무지 ν’€ 수 μ—†λŠ” λ¬Έμ œμΈκ°€?

  5. μ†”λ£¨μ…˜μ„ μ°Ύμ•„λ΄€λŠ”κ°€?


λ‚œμ΄λ„ 체감

  1. μ΅œμƒ

  2. 상

  3. μ€‘βœ“

  4. ν•˜


이해도

  1. μ™„λ²½νžˆ μ΄ν•΄βœ“

  2. λ‹€μ†Œ ν—·κ°ˆλ¦¬λŠ” 뢀뢄듀이 있음

  3. 이해 λͺ»ν•¨

문제

μ •μˆ˜ Aλ₯Ό B둜 λ°”κΎΈλ €κ³  ν•œλ‹€. κ°€λŠ₯ν•œ 연산은 λ‹€μŒκ³Ό 같은 두 가지이닀.

  • 2λ₯Ό κ³±ν•œλ‹€.
  • 1을 수의 κ°€μž₯ 였λ₯Έμͺ½μ— μΆ”κ°€ν•œλ‹€.

Aλ₯Ό B둜 λ°”κΎΈλŠ”λ° ν•„μš”ν•œ μ—°μ‚°μ˜ μ΅œμ†Ÿκ°’μ„ κ΅¬ν•΄λ³΄μž.

Untitled

λ‚˜μ˜ 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from collections import deque

A,B=map(int,input().split())

queue=deque()

queue.append((A,1))

while queue:
    v=queue.popleft()
    v1=v[0]*2
    v2=(v[0]*10)+1
    if v1==B or v2==B:
        print(v[1]+1)
        break
    if v1<B:
        queue.append((v1,v[1]+1))
    if v2<B:
        queue.append((v2,v[1]+1))
else:
    print(-1)
  • 2λ₯Ό κ³±ν•œλ‹€. β†’ *2
  • 1을 수의 κ°€μž₯ 였λ₯Έμͺ½μ— μΆ”κ°€ν•œλ‹€. β†’ *10+1
  • μœ„μ²˜λŸΌ 식을 μ„ΈμšΈ 수 μžˆλ‹€. λ”°λΌμ„œ BFSλ°©μ‹μœΌλ‘œ 값을 λ§Œλ“€ 수 μžˆλŠ”μ§€ νƒμƒ‰ν•˜λ„λ‘ μ½”λ”©ν•˜μ˜€λ‹€. 이 λ•Œ, μ›λž˜ countλ°©μ‹μœΌλ‘œ λͺ‡λ²ˆμ˜ 계산을 ν•΄μ•Ό ν•˜λŠ”μ§€ κ³„μ‚°ν•˜λ €κ³  ν–ˆλŠ”λ°, 연산을 ν•œλ²ˆ ν•  λ•Œλ§ˆλ‹€ +1을 λ”ν•˜λŠ” κ²ƒμœΌλ‘œ 계산할 수 μ—†μ—ˆλ‹€.(같은 depthλ₯Ό κ°–λŠ” node의 계산일 μˆ˜λ„ 있기 λ•Œλ¬Έ)
  • λ”°λΌμ„œ (μ—°μ‚°κ°’, 총 μ—°μ‚° 수)의 νŠœν”Œ ν˜•νƒœλ‘œ queue에 μ €μž₯ν•˜λŠ” BFS μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•˜μ˜€λ‹€.

+) while에도 elseλ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

This post is licensed under CC BY 4.0 by the author.