본문 바로가기
알고리즘/프로그래머스

[Python] 프로그래머스 n진수 게임

by 컴공맨 2021. 5. 1.
 

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

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr


풀이

숫자를 n진수로 바꾸어주는 convert 함수를 만들어 10진수로 0부터 N진수로 바꾸면서 num 리스트에 한 글자씩 추가했습니다.

이때, num 리스트의 길이가 t * m 즉, 참가하는 인원인 m명의 사람들이 t개씩 말하는 모든 경우를 저장하게 했습니다.

이를 활용하여 시작 순서인 p번째부터 m칸씩 건너뛰게 하여 정답을 구해 해결했습니다.


코드

def solution(n, t, m, p):
    answer = ''

    num = list()

    i = 0
    while len(num) <= (t * m):
        num.extend(convert(i, n))
        i += 1

    idx = p - 1
    for i in range(0, t):
        answer += num[idx + (i * m)]

    return answer


def convert(num, base):
    temp = "0123456789ABCDEF"
    q, r = divmod(num, base)

    if q == 0:
        return temp[r]
    else:
        # q를 base로 변환
        # 즉, n진수의 다음 자리를 구함
        return convert(q, base) + temp[r]

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com