🐍 μ½”λ”©ν…ŒμŠ€νŠΈ λŒ€λΉ„ : PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] 124 λ‚˜λΌμ˜ 숫자 (level2, python)

개발자 HOON 2022. 9. 25. 20:18

문제 μ„€λͺ…

124 λ‚˜λΌκ°€ μžˆμŠ΅λ‹ˆλ‹€. 124 λ‚˜λΌμ—μ„œλŠ” 10진법이 μ•„λ‹Œ λ‹€μŒκ³Ό 같은 μžμ‹ λ“€λ§Œμ˜ κ·œμΉ™μœΌλ‘œ 수λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€.

  1. 124 λ‚˜λΌμ—λŠ” μžμ—°μˆ˜λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.
  2. 124 λ‚˜λΌμ—λŠ” λͺ¨λ“  수λ₯Ό ν‘œν˜„ν•  λ•Œ 1, 2, 4만 μ‚¬μš©ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄μ„œ 124 λ‚˜λΌμ—μ„œ μ‚¬μš©ν•˜λŠ” μˆ«μžλŠ” λ‹€μŒκ³Ό 같이 λ³€ν™˜λ©λ‹ˆλ‹€.


μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n을 124 λ‚˜λΌμ—μ„œ μ‚¬μš©ν•˜λŠ” 숫자둜 λ°”κΎΌ 값을 return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄ μ£Όμ„Έμš”.


μ œν•œμ‚¬ν•­
  • n은 50,000,000μ΄ν•˜μ˜ μžμ—°μˆ˜ μž…λ‹ˆλ‹€.

 


μž…μΆœλ ₯ 예

풀이 μ½”λ“œ

def solution(n):
    result = []
    while n:
        t = n % 3
        if not t:
            t = 4
            n -= 1
        result.append(str(t))
        n //= 3
    return ''.join(result[::-1])

 

κ΅¬ν˜„ λ¬Έμ œμ΄λ‹€.

μš°μ„ , λ‚˜μ˜€λŠ” μˆ«μžκ°€ 1, 2, 4밖에 μ—†λŠ” 것을 보면, 3μ§„μˆ˜λ₯Ό 잘 μ΄μš©ν•΄μ„œ λ³€ν™˜ν•˜λ©΄ κ΅¬ν˜„ν•  수 μžˆμ„ κ²ƒμœΌλ‘œ 보인닀.

 

μ£Όμ˜ν•΄μ•Ό ν•  점은, 일반 3μ§„μˆ˜λŠ” 0이 μžˆμ–΄μ„œ 일반적인 숫자 μ²΄κ³„μ²˜λŸΌ κ°€μž₯ μ•žμ˜ 숫자둜 0이 올 수 μ—†μ§€λ§Œ

124λ‚˜λΌμ˜ μ§„μˆ˜λŠ” 11처럼 κ°€μž₯ μ•žμ˜ 숫자둜 κ°€μž₯ μž‘μ€ λ‹¨μœ„μ˜ μˆ«μžκ°€ 올 수 μžˆλ‹€.

 

10진법 3진법 124λ‚˜λΌ
1 1 1
2 2 2
3 10 4
4 11 11
5 12 12
6 20 14
7 21 21
8 22 22
9 100 24

λΉ¨κ°„ λΆ€λΆ„ μ΄μ™Έμ—λŠ” 3μ§„λ²•μœΌλ‘œ λ³€ν™˜ν•˜λŠ” κ°’μ΄λž‘ λ™μΌν•˜λ‹€.

λΉ¨κ°„ 뢀뢄을 μœ μ‹¬ν•˜κ²Œ 보면, 3의 λ°°μˆ˜λ“€λ§Œ ν•΄λ‹Ήν•˜λ©°, 여기에 λŒ€ν•œ 둜직만 μ„Έμ›Œμ£Όλ©΄ λœλ‹€.

 

3의 λ°°μˆ˜λŠ” 3으둜 λ‚˜λˆ΄μ„ λ•Œ λ‚˜λ¨Έμ§€κ°€ 0인데, 124 λ‚˜λΌμ˜ 숫자λ₯Ό 보면 λ‹€ 4λ₯Ό κ°€μ§€κ³  μžˆλŠ” 곡톡점을 κ°–κ³  μžˆλ‹€.

λ”°λΌμ„œ 3의 λ°°μˆ˜μ— λŒ€ν•΄μ„œ 4둜 μ²˜λ¦¬ν•˜κ³ , λͺ«μ— λŒ€ν•΄μ„œ 1만 λΉΌμ£Όλ©΄ λ³Έ κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€.

μ½”λ“œμ™€ 같이 보면 μ‰½κ²Œ 이해할 수 μžˆλ‹€.