[Python] 프로그래머스 - n진수 게임
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17687
2018 카카오 블라인드 코딩테스트에 출제된 문제이다.
# 이 문제를 풀기위한 keyPoint는 다음과 같다.
1. convert함수를 통해 원하는 수를 원하는 진법으로 변경해줘야 한다.
2. 마지막 answer를 출력할땐 튜브의 차례에 해당하는 수만 뽑아낼 수 있어야 한다.
# 20번째 줄에서 l이 10만 이상일때 break해주는 이유: t가 1000이하이고 m이 100이하이므로
구해야 하는 수 중 가장 큰 수는 t * m인 100000번째 수이다.
따라서 10만이 넘어가면 더 이상 res를 구할 필요가 없다.
def solution(n, t, m, p):
# num을 base진수로 변경해주는 convert함수
def convert(num, base):
T = "0123456789ABCDEF"
q, r = divmod(num, base)
if q == 0:
return T[r]
else:
return convert(q, base) + T[r]
answer = ''
res = ''
i, l = 0, 0
while True:
# i를 0부터 1씩 증가시켜가면서 n진수로 변환한 값을 res에 한글자씩 넣어준다.
x = convert(i, n)
res += x
# n진수로 변환한 값의 길이를 l에 더해주다가 l이 10만을 초과하면 while문 탈출
l += len(x)
if l > 100001:
break
i += 1
# 튜브의 순서 p-1부터 t*m-1까지 m칸씩 건너뛰며 res값을 answer에 넣어주고 answer 출력
answer += res[p-1: t * m: m]
return answer
(프로그래머스 level: 2)
728x90
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 도둑질 (0) | 2021.05.24 |
---|---|
[Python] 프로그래머스 - 가장 큰 수 (0) | 2021.05.23 |
[Python] 프로그래머스 - 파일명 정렬 (0) | 2021.05.22 |
[Python] 프로그래머스 - 압축 (0) | 2021.05.21 |
[Python] 프로그래머스 - 방금그곡 (0) | 2021.05.20 |
TAGS.