본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[프로그래머스] [3차] n진수 게임 - Python

by chaemj97 2023. 2. 28.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/17687#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


  • 풀이
    • 참가인원(m)이 t바퀴 : m*t가 최대 100,000이므로 게임에 나올 수 있는 수 다 구한 뒤 튜브가 말할 수 구하기!
  • 코드
# i를 n진법으로 변환하기
def change(n,i):
    box = {2:'b',8:'o',16:'x'}
    if n in box:
        return format(i,box[n]).upper()
    
    if i == 0:
        return '0'
    
    result = ''
    nn = '0123456789ABCDEF'
    while i > 0:
        # i를 n으로 나눈 몫 : a
        # i를 n으로 나눈 나머지 : b
        a,b = divmod(i,n)
        i = a
        result += nn[b]
    return result[::-1]


def solution(n, t, m, p):
    # 게임에 나오는 수
    game = ''
    i = 0
    while len(game) < t*m:
        game += change(n,i)
        i += 1
    # 튜브가 말해야 하는 숫자
    answer = ''
    for j in range(p-1,m*t,m):
        answer += game[j]
    return answer

 

728x90
반응형

댓글