n진수 게임

개발새발log·2022년 9월 19일
0

Programmers

목록 보기
24/35

문제

https://school.programmers.co.kr/learn/courses/30/lessons/17687

접근 방식

처음에는 n진수를 하나씩 세는 형태로 가려다가 뇌가 10 진수 이외의 숫자 세기 체계를 받아들이지 못하는 거 같아 포기했다. 대신, 10 진수를 n진수로 변환하는 함수를 따로 구현했다. 이때 유의할 점은 11 진수부터 16 진수인데, 10 ~ 15는 'A'~'F'로 처리해야 하기 때문에 16 진수 변환 내장 함수 hex를 따로 사용했다.

코드

def getNbase(n, q):
    if n == 0: return '0'
    rev_base = ''
    while n > 0:
        n, mod = divmod(n, q)
        rev_base += hex(mod)[2:].upper()
    return rev_base[::-1]

def solution(n, t, m, p):
    num = 0
    cnt = 0
    res = ''
    while num <= t * m:
        nBaseNum = getNbase(num, n)
        for x in nBaseNum:
            if (cnt // m) == t: break
            if cnt % m == (p - 1):
                res += x
            cnt += 1
        num += 1
    return res

divmod(n, q)는 n을 q로 나누었을 때 몫과 나머지 튜플을 리턴하는 함수라고 한다

참고: https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95

profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글