문제:
풀이방법:
내가 말해야 하는 단어까지만 알면 되므로 0부터 n진수로 변환을 하면서 digits에 더하고 digits의 길이가 t*m보다 커지면 그만 변환하도록 하면 된다.
digits를 다 구했다면 내가 말해야 하는 위치의 인덱스 값을 answer에 더해서 반환하도록 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def conv(number,base):
T="0123456789ABCDEF"
i,j=divmod(number,base)
if i==0:
return T[j]
else:
return conv(i,base)+T[j]
def solution(n,t,m,p):
digits=[]
number=0
while len(digits) < t*m:
digits+=list(conv(number,n))
number+=1
answer=''
for i in range(t):
answer+=digits[i*m+(p-1)]
return answer
|
cs |
문제링크:
https://programmers.co.kr/learn/courses/30/lessons/17687
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 3. 종이접기 (0) | 2019.12.06 |
---|---|
[Programmers]Lv 2. 멀쩡한 사각형 (0) | 2019.12.05 |
[Programmers]2018 Kakao.파일명 정렬 (0) | 2019.12.03 |
[Programmers]2018 Kakao.압축 (0) | 2019.12.02 |
[Programmers]2018 Kakao.방금그곡 (0) | 2019.12.01 |