🧠 124 λ‚˜λΌμ˜ 숫자

문제

124 λ‚˜λΌκ°€ μžˆλ‹€. 124 λ‚˜λΌμ—μ„œλŠ” 10진법이 μ•„λ‹Œ λ‹€μŒκ³Ό 같은 μžμ‹ λ“€λ§Œμ˜ κ·œμΉ™μœΌλ‘œ 수λ₯Ό ν‘œν˜„ν•œλ‹€. 124 λ‚˜λΌμ—λŠ” μžμ—°μˆ˜λ§Œ μ‘΄μž¬ν•œλ‹€. 124 λ‚˜λΌμ—λŠ” λͺ¨λ“  수λ₯Ό ν‘œν˜„ν•  λ•Œ 1, 2, 4만 μ‚¬μš©ν•œλ‹€. μžμ—°μˆ˜ n이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, n을 124 λ‚˜λΌμ—μ„œ μ‚¬μš©ν•˜λŠ” 숫자둜 λ°”κΎΌ 값을 return ν•˜λ„λ‘ ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜λΌ.

  • n은 500,000,000μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ‹€.
10진법 124 λ‚˜λΌ 10진법 124 λ‚˜λΌ
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41

λ‚˜μ˜ 풀이

import math


def check_zero(n):
    if not n:
        return '4'
    return str(n)


def country_124(n):
    answer = []
    if n <= 2:
        return str(n)
    else:
        while n > 2:
            answer.append(check_zero(n % 3))
            n = math.floor(n / 3) - 1 if not n % 3 else math.floor(n / 3)
        answer.append(str(n))
    return str(int(''.join(answer[::-1])))

문제만 봀을 λ•ŒλŠ” κ½€ μ‰¬μ›Œλ³΄μ˜€λŠ”λ°, 막상 ν’€μ–΄λ³΄λ‹ˆ μ‹œκ°„μ΄ 였래 κ±Έλ Έλ‹€. 124 숫자둜만 이루어진 λ‚˜λΌλΌλ©΄ 3진법을 μ‚¬μš©ν•˜λ©΄ λ˜λŠ”λ°, λ¬Έμ œλŠ” 3μ΄λΌλŠ” μˆ«μžλŠ” μ‚¬μš©λ˜μ§€ μ•Šκ³  λŒ€μ‹  4κ°€ μ“°μΈλ‹€λŠ” 점이닀.

μš°μ„  ν•„μžλŠ” μž…λ ₯으둜 1μ΄λ‚˜ 2κ°€ λ“€μ–΄μ˜€λ©΄ λ°”λ‘œ λ¦¬ν„΄μ‹œν‚€λ„λ‘ ν•˜κ³  3λΆ€ν„° while문의 ꡬ렁텅이에 빠지도둝 ν–ˆλ‹€. μž…λ ₯값이 3의 배수인 κ²½μš°μ—λŠ” λ‚˜λ¨Έμ§€κ°€ 0μ΄λ―€λ‘œ 무쑰건 4λ₯Ό μΆ”κ°€ν•œλ‹€. μ•„λ‹Œ κ²½μš°μ—λŠ” λ‚˜λ¨Έμ§€ κ°’ κ·ΈλŒ€λ‘œ λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•œλ‹€. 그리고 μž…λ ₯값을 3으둜 λ‚˜λˆˆ λͺ«μœΌλ‘œ λ‹€μ‹œ μ €μž₯ν•΄μ€€λ‹€. μ΄λ ‡κ²Œλ˜λ©΄ λͺ«μ΄ 1 λ˜λŠ” 2일 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•˜κ²Œ λ˜λŠ”λ°, λ°˜λ³΅λ¬Έμ„ λΉ μ Έλ‚˜μ˜€λ©΄ λ§ˆμ§€λ§‰ λͺ«μ„ λ¦¬μŠ€νŠΈμ— μΆ”κ°€ν•œλ‹€. 이 λ¦¬μŠ€νŠΈλŠ” κΈ°λŒ“κ°’κ³ΌλŠ” λ°˜λŒ€λ‘œ μ €μž₯λ˜μ–΄ μžˆμœΌλ―€λ‘œ 거꾸둜 좜λ ₯ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이

def country_124(n):
    num = ['1','2','4']
    answer = ""
    while n > 0:
        n -= 1
        answer = num[n % 3] + answer
        n //= 3
    return answer

이 뢄은 124λ₯Ό 미리 numμ΄λΌλŠ” λ¦¬μŠ€νŠΈμ— μ €μž₯μ‹œμΌœλ‘κ³  μž…λ ₯값이 0보닀 크면 1을 λΊ€ ν›„ 3으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€μ— λŒ€ν•œ μΈλ±μŠ€μ— ν•΄λ‹Ήν•˜λŠ” 숫자λ₯Ό 결과값에 μΆ”κ°€ν•΄μ£Όμ—ˆλ‹€. ν•„μžλŠ” λͺ«μ„ κ΅¬ν•˜κΈ° μœ„ν•΄ math.floorλ₯Ό μ‚¬μš©ν–ˆλŠ”λ° 이 μ½”λ“œλ₯Ό λ³΄λ‹ˆ 그럴 ν•„μš” 없이 //λ₯Ό ν•΄μ£Όλ©΄ λ˜λŠ” μΌμ΄μ—ˆλ‹€.. μ˜€λŠ˜λ„ 많이 배우고 κ°„λ‹€. ν•˜ν•«

References


Written by@ugaemi
Record things I want to remember

🐱 GitHubπŸ“š Reading Space