728x90
반응형
문제출처: https://school.programmers.co.kr/learn/courses/30/lessons/17687
풀이:
def convert(n, base):
T = "0123456789ABCDEF"
q, r = divmod(n, base)
if q == 0:
return T[r]
else:
return convert(q, base) + T[r]
# 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
def solution(n, t, m, p): # 인원수에 맞춰서 진수 까지 변환함
str =''
now = 0
while len(str) < t * m:
str += convert(now,n)
now +=1
res =[]
for i in range(p-1,len(str), m):
res.append(str[i])
if len(res) == t:
break
return "".join(res)
1. 진수구하는 함수를 먼저 만든다
2. 참가인원 x 구하는 갯수 만큼의 str 을 만들어야 하므로
3. 빈 str과 현재 숫자 0 으로 선언해줌
4. 와일문을 돌면서 1, 2, 3, ... 에 n진수값을 변환하여 str 로 넣어줌
5. 포문을 돌면서 시작은 p부터 str-1 까지 , 차이는 m (인원수 만큼)
6. 2진수 같은 예외
print(solution(2,4,2,1))
이 함수를 돌리면
01110
값이 나오므로 t의 길이만큼 맞춰줘야하므로 If문과 break문 추가
7. 리스트 형식이므로 Join 함수 사용
반응형
댓글