n
, 미리 구할 숫자의 개수 t
, 게임에 참가하는 인원 m
, 튜브의 순서 p
t * m
길이가 될 때까지 0부터 숫자를 하나씩 늘려가며, n
진법으로 변환한다.
i % m == p-1
를 만족하는 str[i]
의 숫자를 결과에 추가하여 반환한다.
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]
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]