코테 노트/프로그래머스

Level 2 [3차] n진수 게임 <2018 KAKAO BLIND RECRUITMENT> Python 3

화요밍 2022. 3. 30. 16:16
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/17687?language=python3 

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

 

최종 코드

 

GitHub - hwayeon351/Programmers-Algorithms: 프로그래머스 알고리즘 소스 코드 모음

프로그래머스 알고리즘 소스 코드 모음. Contribute to hwayeon351/Programmers-Algorithms development by creating an account on GitHub.

github.com

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

참고

 

Level 2 [3차] 압축 <2018 KAKAO BLIND RECRUITMENT> Python 3

https://programmers.co.kr/learn/courses/30/lessons/17684?language=python3 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] program..

hwayomingdlog.tistory.com

 

Level 2 [3차] 파일명 정렬 <2018 KAKAO BLIND RECRUITMENT> Python 3

https://programmers.co.kr/learn/courses/30/lessons/17686?language=python3 코딩테스트 연습 - [3차] 파일명 정렬 파일명 정렬 세 차례의 코딩 테스트와 두 차례의 면접이라는 기나긴 블라인드 공채를 무사히..

hwayomingdlog.tistory.com

 

Level 2 [3차] 방금그곡 <2018 KAKAO BLIND RECRUITMENT> Python 3

https://programmers.co.kr/learn/courses/30/lessons/17683?language=python3 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때..

hwayomingdlog.tistory.com

  • 5. 자동완성
728x90
반응형