λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Algorithm/Programmers

[Programmers] 3진법 뒀집기

 

 

문제 μ„€λͺ…

 

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. n을 3진법 μƒμ—μ„œ μ•žλ’€λ‘œ 뒀집은 ν›„, 이λ₯Ό λ‹€μ‹œ 10μ§„λ²•μœΌλ‘œ ν‘œν˜„ν•œ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

 

λ‚˜μ˜ μ½”λ“œ 

 

def solution(n):
    p = 0
    tmp = ''
    
    # μ›λž˜ μ‹€μ œ 3진법은 μ΅œμ’…μ μœΌλ‘œ 뒀집어야 ν•˜μ§€λ§Œ, μ—¬κΈ°μ„œλŠ” 뒀집은 수둜 10진법을 κ΅¬ν•˜κΈ° λ•Œλ¬Έμ— 뒀집지 μ•ŠμŒ.
    while n:
        tmp += str(n % 3)
        n = n // 3
    
    # 3진법 10μ§„λ²•μœΌλ‘œ λ³€ν™˜ int(tmp,3) μœΌλ‘œλ„ κ°€λŠ₯. 
    for i in range(len(tmp),0,-1):
        if tmp[i-1] != '0':
            p += int(tmp[i-1]) * (3 ** (len(tmp) - i))
    return p
뢄석 > 10μ§„μˆ˜λ₯Ό 3μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 방법을 μ•Œκ²Œ λ˜μ—ˆλ‹€. n을 3으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λŠ” λ¬Έμžμ—΄μ— μΆ”κ°€ν•˜κ³ , λͺ«μ΄ n이 λ˜λ©΄μ„œ n값이 μ‘΄μž¬ν•  λ•ŒκΉŒμ§€ λ°˜λ³΅λ¬Έμ„ 돌리고 λ‚˜μ˜¨ λ¬Έμžμ—΄μ„ λ’€μ§‘μœΌλ©΄ κ·Έ μˆ˜κ°€ n의 3μ§„μˆ˜κ°€ λ˜λŠ” 것이닀. μ—¬κΈ°μ„œλŠ” μ• μ΄ˆμ— 뒀집은 3μ§„μˆ˜κ°€ ν•„μš”ν•˜κΈ° λ•Œλ¬Έμ— λ¬Έμžμ—΄μ„ 뒀집지 μ•Šκ³  κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜μ˜€λ‹€. λ‚˜λŠ” 10μ§„μˆ˜λ₯Ό 3μ§„μˆ˜λ‘œ λ§Œλ“€κΈ° μœ„ν•΄ 직접 κ΅¬ν˜„μ„ ν–ˆλŠ”λ°, νŒŒμ΄μ¬μ—λŠ” int(λ³€ν™˜ν•  수, 진법) 의 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ μ–΄λ–€ μ§„λ²•μ˜ μˆ˜λ“  10μ§„μˆ˜λ‘œ λ³€ν™˜ν•  수 μžˆμ—ˆλ‹€. 

 

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - 3진법 뒀집기

μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. n을 3진법 μƒμ—μ„œ μ•žλ’€λ‘œ 뒀집은 ν›„, 이λ₯Ό λ‹€μ‹œ 10μ§„λ²•μœΌλ‘œ ν‘œν˜„ν•œ 수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”. μ œν•œμ‚¬ν•­ n은 1 이상 100,000,000 μ΄ν•˜μΈ μžμ—°μˆ˜

programmers.co.kr