Developer/🐟 μ•Œκ³ λ¦¬μ¦˜ 문제

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€/python] 점프와 μˆœκ°„

dalpaeng 2020. 7. 8. 20:30

점프와 μˆœκ°„

 

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