728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17687?language=python3
최종 코드
from collections import deque
import string
tmp = string.digits + string.ascii_uppercase
def convert_10_to_n(num, base):
q, r = divmod(num, base)
if q == 0:
return tmp[r]
else:
return convert_10_to_n(q, base) + tmp[r]
def solution(n, t, m, p):
answer = ''
num = 0
turn = 1
while len(answer) < t:
q = deque(convert_10_to_n(num, n))
while q:
c = q.popleft()
if turn == p:
answer += c
if len(answer) == t: break
turn += 1
if turn > m: turn = 1
num += 1
return answer
풀이 과정
풀이 시간 31분
from collections import deque
import string
tmp = string.digits + string.ascii_uppercase
def convert_10_to_n(num, base):
#num을 base로 나눈 몫과 나머지
q, r = divmod(num, base)
#몫이 0인 경우, 나머지에 해당하는 값을 리턴한다
if q == 0:
return tmp[r]
#몫이 0이상인 경우, 몫에 관한 base 진수를 재귀로 구하고 나머지에 해당하는 값을 이어 붙여 리턴한다
else:
return convert_10_to_n(q, base) + tmp[r]
def solution(n, t, m, p):
answer = ''
#말해야하는 숫자
num = 0
#말할 차례
turn = 1
#튜브가 t개의 숫자를 말할 때까지 반복
while len(answer) < t:
#현재 말해야하는 숫자를 n진법으로 바꾼 값을 q에 담는다
q = deque(convert_10_to_n(num, n))
while q:
c = q.popleft()
#현재 말할 차례가 튜브인 경우, 숫자를 answer에 담는다
if turn == p:
answer += c
#t개의 숫자를 모두 말한 경우, 반복문을 종료한다
if len(answer) == t: break
#차례를 갱신한다
turn += 1
#차례가 m보다 크면 다시 1번으로 돌아간다
if turn > m: turn = 1
#말해야 하는 차례를 1 증가한다
num += 1
return answer
참고
- 3. 파일명 정렬 - 2022.03.29 - [코테 노트/프로그래머스] - Level 2 [3차] 파일명 정렬 <2018 KAKAO BLIND RECRUITMENT> Python 3
- 5. 자동완성
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 3 기둥과 보 설치 <2020 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.04.02 |
---|---|
Level 3 매칭 점수 <2019 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.04.01 |
Level 2 [3차] 파일명 정렬 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.29 |
Level 2 [3차] 압축 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.28 |
Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2022.03.25 |