🤔 문제


 

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

 

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

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

programmers.co.kr

😀 풀이


본 문제는 10진수로 주어진 숫자를 n진수로 변환하면 쉽게 풀 수 있는 구현 문제입니다.

n진수 변환의 경우 풀이 코드에 convert라는 함수로 정의해놓았습니다. 또한 진수 변환의 경우 참고할만한 코드가 많으므로 설명은 생략하겠습니다.

 

게임에 참여하는 인원(m)과 튜브가 미리 구할 숫자의 개수(t)를 고려해보았을 때 최대 t * m의 숫자를 말할 것이므로 t * m개의 숫자를 n진법으로 변환하고 이를 문자열에 계속해서 추가해줍니다. 이를 바탕으로 p번째 말하는 사람이 어떤 숫자를 말해야 하는지 체크해가며 정답을 만들어주면 됩니다!

 

💻 풀이 코드는 아래와 같습니다.

# n진수로 변환하는 함수
def convert(number, n):
    if number == 0:
        return '0'
    NUMBERS = "0123456789ABCDEF"
    res = ""
    while number > 0:
        number, mod = divmod(number, n)
        res += NUMBERS[mod]
    return res[::-1]

def solution(n, t, m, p):
    answer = ''
    game = ''
    cur = p - 1
    for num in range(t * m):
        game += convert(num, n)
    while 1:
        if len(answer) == t:
            break
        answer += game[cur]
        cur += m
    return answer

 

반응형
복사했습니다!