[프로그래머스] n진수 게임
프로그래머스
- 숫자를 0부터 시작해서 차례대로 말한다. 첫 번째 사람은 0, 두 번째 사람은 1, ... 열 번째 사람은 9를 말한다.
- 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉 열한 번째 사람은 10의 첫 자리인 1, 열두 번째 사람은 둘째 사람인 0을 말한다.
이렇게 게임을 진행할 경우,
0,1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,1,4,1,5,1,6,...
순으로 숫자를 말하면 된다.
이 게임을 이진수로 진행하는 경우에는,
0,1,1,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,...
자신이 말해야 하는 숫자를 스마트폰에 미리 출력해주는 프로그램을 만들려고 한다. 튜브의 프로그램을 구현하라.
입력형식
진법 n
, 미리 구할 숫자의 갯수 t
, 게임에 참가하는 인원 m
, 튜브의 순서 p
가 주어진다.
- 2<=
n
<=16 - 0<
t
<=1000 - 2<=
m
<=100 - 1<=
p
<=m
출력형식
튜브가 말해야 하는 숫자 t개를 공백 없이 차례대로 나타낸 문자열. 단, 10
~15
는 각각 대문자 A
~F
로 출력한다.
코드
NUM_CODE = {0:'0',1:'1',2:'2',3:'3',4:'4',5:'5',
6:'6',7:'7',8:'8',9:'9',10:'A',11:'B',12:'C',
13:'D',14:'E',15:'F'}
def solution(n, t, m, p):
answer = []
solve(n,t,m,p,answer)
return ''.join([NUM_CODE[x] for x in answer])
# num을 n진수로 표현(배열)
def makeNo(num, n):
result = []
while num >= n:
result.append(num % n)
num //= n
result.append(num)
return list(reversed(result))
def solve(n, t, m, p, answer):
no, num, cp = 0, 0, p # 튜브가 말한 개수, 현재 숫자, p
while True:
cur = makeNo(num, n)
for c in cur:
cp -= 1
if cp == 0:
answer.append(c)
if len(answer) == t:
return
cp = m
num += 1
Author And Source
이 문제에 관하여([프로그래머스] n진수 게임), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@haman/프로그래머스-n진수-게임저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)