이 문제는 2018년 카카오 블라인드 채용 코딩테스트에 출제되었던 문제이다. 이 문제는 369 게임과 비슷하게 숫자가 한문장 "12345678910"이런식으로 존재하면 이것을 n진수"011011100..." 로 변환해서 자신의 차례에는 어떤 숫자를 말해야 하는지를 t개 만큼 추출해내는 문제이다.
def solution(n, t, m, p):
answer = ''
sentence = ''
for i in range(t*m):
sentence += TransNotation(i, n)
for j in range(p-1, t*m, m):
answer += sentence[j]
return answer
TransNotation함수로 변환된 숫자들을 sentence에 저장해두고 반복문을 통해 자신의 차례 p-1(인덱스이기 때문에 -1)부터 m step씩 반복 해서 answer에 저장해준다.
def TransNotation(num, p):
arr = "0123456789ABCDEF"
ans = ''
if num == 0:
return '0'
while num > 0:
ans= arr[num % p] + ans
num = num // p
return ans
진수가 2,8,16 진수 이외에 3,4,5,7 진수 들도 입력이 가능하기 때문에 파이썬의 bin(), Oct(), Hex()와 같은 것을 사용하지 않고 직접 진수 변환을 해주었다.