[νλ‘κ·Έλλ¨Έμ€/python] μ νμ μκ°
μ νμ μκ°
OO μ°κ΅¬μλ ν λ²μ K μΉΈμ μμΌλ‘ μ ννκ±°λ, (νμ¬κΉμ§ μ¨ κ±°λ¦¬) x 2 μ ν΄λΉνλ μμΉλ‘ μκ°μ΄λμ ν μ μλ νΉμν κΈ°λ₯μ κ°μ§ μμ΄μΈ μνΈλ₯Ό κ°λ°νμ¬ νλ§€νκ³ μμ΅λλ€.
μ΄ μμ΄μΈ μνΈλ 건μ μ§λ‘ μλλλλ°, μκ°μ΄λμ νλ©΄ 건μ μ§ μ¬μ©λμ΄ μ€μ§ μμ§λ§, μμΌλ‘ K μΉΈμ μ ννλ©΄ K λ§νΌμ 건μ μ§ μ¬μ©λμ΄ λλλ€.
κ·Έλ¬λ―λ‘ μμ΄μΈ μνΈλ₯Ό μ°©μ©νκ³ μ΄λν λλ μκ° μ΄λμ νλ κ²μ΄ λ ν¨μ¨μ μ λλ€.
μμ΄μΈ μνΈ κ΅¬λ§€μλ μμ΄μΈ μνΈλ₯Ό μ°©μ©νκ³ κ±°λ¦¬κ° N λ§νΌ λ¨μ΄μ Έ μλ μ₯μλ‘ κ°λ €κ³ ν©λλ€.
λ¨, 건μ μ§ μ¬μ©λμ μ€μ΄κΈ° μν΄ μ νλ‘ μ΄λνλ κ²μ μ΅μλ‘ νλ €κ³ ν©λλ€.
μμ΄μΈ μνΈ κ΅¬λ§€μκ° μ΄λνλ €λ 거리 Nμ΄ μ£Όμ΄μ‘μ λ, μ¬μ©ν΄μΌ νλ 건μ μ§ μ¬μ©λμ μ΅μκ°μ returnνλ solution ν¨μλ₯Ό λ§λ€μ΄ μ£ΌμΈμ.
νμ΄
def solution(n):
x = 1
while 1:
if n % 2 == 0 or n == 1:
if n <= 2 : break
n = n / 2
else :
n -= 1
x += 1
return x
νμ΄ κ³Όμ
nμ΄ 50μ΄λΌκ³ κ°μ ν λ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17.... 25 26 27 28 29 30..... 41 42 43 44 45 46 47 48 49 50
50μ 25κΉμ§ λμ°©λ§ νλ€λ©΄ 50κΉμ§λ λ°°ν°λ¦¬ μ¬μ©μμ΄ κ° μ μλ€.
25λ νμ μ΄λ―λ‘ 2λ‘ λλμ΄μ§μ§ μλλ€.
25μμ 1μ λΊ 24λ 12κΉμ§λ§ λμ°©νλ€λ©΄ λ°°ν°λ¦¬ μ¬μ©μμ΄ κ° μ μλ€.
μ΄λ° λ§₯λ½μΌλ‘ nμ κ³μ 2λ‘ λλκ³ νμκ° λμ€λ©΄ λ°°ν°λ¦¬λ₯Ό νλ μ¬μ©νλ€,
nμ -1μ νκ³ κ°μ κ³μ° ν΄λκ°λ€.
λ°λΌμ nμ΄ 50μΌλλ
50 -> μ§μ -> λ°°ν°λ¦¬ μ¬μ©X
25 -> νμ -> λ°°ν°λ¦¬ μ¬μ©O
12 -> μ§μ -> λ°°ν°λ¦¬ μ¬μ©X
6 -> μ§μ -> λ°°ν°λ¦¬ μ¬μ©X
3 -> νμ -> λ°°ν°λ¦¬ μ¬μ©O
1 -> μ²μμ λ°°ν°λ¦¬λ₯Ό μ¬μ©νλ€.
λ΅ : 3