Programmers
[프로그래머스] n진수 게임
h32j00
2021. 2. 5. 19:43
문제
programmers.co.kr/learn/courses/30/lessons/17687
처음 작성한 코드
def tenToWhat(num,what):
result = []
remain = ['A','B','C','D','E','F']
while num:
num, namaji = divmod(num,what)
if namaji>=10:
namaji-=10
result.append(remain[namaji])
else: result.append(str(namaji))
return ''.join(result[::-1])
def solution(n, t, m, p):
num = 1
tmp = '0'
while True:
if len(tmp)>t*m:
tmp = tmp[:t*m]
break
tmp+= tenToWhat(num, n)
num+=1
answer = [tmp[i] for i in range(len(tmp)) if i%m==p-1]
return ''.join(answer)
코드 리뷰 후
def tenToWhat(num,what):
result = []
remain = ['A','B','C','D','E','F']
while num:
num, namaji = divmod(num,what)
if namaji>=10:
namaji-=10
result.append(remain[namaji])
else: result.append(str(namaji))
return ''.join(result[::-1])
def solution(n, t, m, p):
num = 1
tmp = '0'
while True:
if len(tmp)>t*m:
break
tmp+= tenToWhat(num, n)
num+=1
answer = tmp[p-1::m][:t]
return ''.join(answer)
깨달은 점
- array[a:b:c]의 사용법을 알게되었다. a부터 b까지 c의 간격만큼의 의미를 갖고있다. 사람수(m)만큼 간격을 가지면서 p-1부터 시작하면 그게 맞는 값이 answer에 저장되고 문자열로 반환하게 작성하였다.