본문 바로가기
프로젝트들/코딩 테스트

[코딩테스트] 프로그래머스 - n진수 게임 (Lv.2) in Python

by 코곰 2021. 2. 6.

n진수 게임 문제.

2진수 ~ 16진수 (n)에 따라, m명의 사람 중 p번 째인 튜브가 t개의 숫자를 말해야할 때, 그 숫자들을 string으로 return하여라.

  1. 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, … 열 번째 사람은 9를 말한다.
  2. 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 자리인 0을 말한다.

 

programmers.co.kr/learn/courses/30/lessons/17687

 

코드 구현 in Python

def solution(n, t, m, p):
    answer = ''
    answers = [0]
    keys = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F']
    count = 1

    # get the number array
    while len(answers) <=t*m:
        tmp = []
        i = count
        while i > 0 :
            div = i // n
            mod = keys[i % n]
            i = div
            tmp.append(mod)
        answers.extend(tmp[::-1])  

        count += 1

    # get Tube's number
    while len(answer) <t:
        answer +=str(answers [p-1])
        p += m

    return answer

- 숫자들을 n진수에 따라 특정 배열 (answers)에 먼저 each digit 넣어주고

- 그 배열에서 튜브 순서에 해당하는 숫자들을 이어 붙여 return.

 

다른 분들의 풀이

- 파이썬에서는 q, r = divmod(n, base)의 문법도 가능하다. 몫과 나머지를 동시에 구하는 방법!

댓글