[λ°±μ€/python] 12851λ² : μ¨λ°κΌμ§ 2
λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 1μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ κ·Έλ¦¬κ³ , κ°μ₯ λΉ λ₯Έ μκ°μΌλ‘ μ°Ύλ λ°©λ²μ΄ λͺ κ°μ§ μΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μλΉμ΄κ° μλ μμΉ Nκ³Ό λμμ΄ μλ μμΉ Kκ° μ£Όμ΄μ§λ€. Nκ³Ό Kλ μ μμ΄λ€.
μΆλ ₯
첫째 μ€μ μλΉμ΄κ° λμμ μ°Ύλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ€.
λμ§Έ μ€μλ κ°μ₯ λΉ λ₯Έ μκ°μΌλ‘ μλΉμ΄κ° λμμ μ°Ύλ λ°©λ²μ μλ₯Ό μΆλ ₯νλ€.
μ λ΅
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
if K == N: # λμ΄ κ°μ μμΉμ μμ λ
print(0)
print(1)
elif K < N : # λμμ΄ λ€μ μμ λ
print(N-K)
print(1)
else:
visited = [0 for _ in range(100001)]
queue = [N]
time = 0
while queue:
time += 1
next_queue = []
for n in queue:
if (n >= 0 and n <= 100000) and (visited[n] == 0 or visited[n] == time):
next_queue.extend([n*2, n-1, n+1])
visited[n] = time
if next_queue.count(K) > 0:
print(time)
print(next_queue.count(K))
break
queue = next_queue
- visited : visitedμ κ°λ₯ν μμΉμ λͺ¨λ μ«μλ₯Ό 0μΌλ‘ μ ν νλ€.
- queue : queueμλ κ°μ λ 벨μ μλ μ«μλ€μ΄ λ€μ΄κ° μμ μ΄κ³ λ λ²¨μ΄ λ°λ λλ§λ€ queueμ κ°λ λ°λλ€.
- time : bfs κΈ°λ°μ΄κΈ° λλ¬Έμ timeμ μκ° μ¦, λ 벨μ μλ―Ένλ€.
- next_queue : next_queueλ λ€μ λ 벨μ μ«μλ€μ΄ μ μ₯λμ΄ μλ€κ° νμ¬ λ 벨μ μ«μλ€μ λ€ νμν νμ queueμ μ μ₯λλ€.
queueμ μλ λͺ¨λ μ«μλ₯Ό νλμ© λλ©΄μ
μμΉμ λ²μ μμ ν΄λΉνλ©΄μ, νλ²λ λ°©λ¬Έν μ μ΄ μκ±°λ νμ¬ λ 벨μμ λ°©λ¬Ένλ€λ©΄
next_queueμ νμ¬ μμΉμμ κ° μ μλ μμΉμ μ«μλ€μ μΆκ°νκ³
νμ¬ λ 벨μμ λ°©λ¬Ένμμ νμνκΈ° μν΄ visited[n]μ νμ¬ λ 벨 timeμ μ μ₯νλ€.
queueλ₯Ό λ€ λ ν next_queueμ λ΄κ° κ°μΌν Kκ° 1κ° μ΄μ μλ€λ©΄
timeκ³Ό next_queueμ μλ Kμ κ°μλ₯Ό μΆλ ₯νκ³ λ©μΆλ€.
'πμκ³ λ¦¬μ¦ > λ°±μ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/python] 3190λ² : λ± (0) | 2021.08.28 |
---|---|
[λ°±μ€/python] 9935λ² : λ¬Έμμ΄ νλ° (0) | 2021.08.26 |
[λ°±μ€/python] 11724λ² : μ°κ²° μμμ κ°μ (0) | 2021.08.23 |
[λ°±μ€/python] 1012λ² : μ κΈ°λ λ°°μΆ (0) | 2021.08.23 |
[λ°±μ€/python] 14500λ² : ν νΈλ‘λ―Έλ Έ (0) | 2021.08.19 |