Lv2. [3차] n진수 게임

Hello·2022년 8월 6일
0

코딩테스트 연습 > [3차] n진수 게임

1. 풀이 설명

  • 진법 n, 미리 구할 숫자의 개수 t, 게임에 참가하는 인원 m, 튜브의 순서 p
  1. t * m 길이가 될 때까지 0부터 숫자를 하나씩 늘려가며, n 진법으로 변환한다.

  2. i % m == p-1 를 만족하는 str[i]의 숫자를 결과에 추가하여 반환한다.

    • 튜브의 순서에 해당하는 숫자.

2. 나의 풀이

def solution(n, t, m, p):
    answer = ''
    str = ''
    max = t * m
    
    num = 0
    while len(str) < max:
        str += dec_to(num, n)
        num += 1
    
    for i in range(max):
        if i%m == (p-1):
            answer += str[i]
    
    return answer

def dec_to(num, n):
    if num == 0:
        return '0'
    
    result = ''
    while num > 0:
        num, mod = divmod(num, n)
        if mod == 10:
            mod = 'A'
        elif mod == 11:
            mod = 'B'
        elif mod == 12:
            mod = 'C'
        elif mod == 13:
            mod = 'D'
        elif mod == 14:
            mod = 'E'
        elif mod == 15:
            mod = 'F'
        result += str(mod)
    return result[::-1]

3. 배운점

  1. 개선된 코드: mod 의 경우의 수를 미리 정의한다 (m_chars)
def dec_to(num, n):
    m_chars = '0123456789ABCDEF'
    num, mod = divmod(num, n)
    result = m_chars[mod]
    while num > 0:
        num, mod = divmod(num, n)
        result += str(m_chars[mod])
    return result[::-1]
profile
안녕하세요 :)

0개의 댓글