알고리즘
[프로그래머스] [3차] n진수 게임
j9972
2023. 3. 28. 13:31
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17687
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
1. 문제를 보면서 떠오른 생각 " n 진법으로 p + m * idx 자리에 있는 것을 말하되, t개를 말하면 되겠다 "
2. 10진수 -> n진수로 변경하는 함수를 만들어 준다
3. 처음 p의 자리부터 말하면 되는데, 최대 p + m * t 개까지 변환을 시켜준다
4. idx의 값을 조정하면서 ans에 넣어주면 되는데 리스트의 시작은 0임을 잊지말자 ( res[p+idx-1]에서 -1을 하는 이유 )
풀이
def convert(num, base): # 숫자, 진법
temp = '0123456789ABCDEF'
q,r = divmod(num,base)
if q == 0:
return temp[r]
else:
return convert(q,base) + temp[r]
def solution(n, t, m, p):
ans = ''
# 최대 m == 100, t == 1000 이면, len(res) == 100.000
res = ''
for i in range(p+m*t):
res += convert(i,n)
#print('res : ', res)
idx = 0
while t > 0:
ans += res[p+idx-1]
idx += m
t -= 1
return ans