N진수 게임 (2018 KAKAO BLIND RECRUITMENT)

sen·2021년 8월 23일
0

Programmers

목록 보기
4/4
post-thumbnail

문제

[프로그래머스] N진수 게임 (2018 KAKAO BLIND RECRUITMENT)


풀이

미리 0부터 15까지에 대응하는 숫자 or 알파벳을 딕셔너리 d에 저장해둔다.

그리고 문자열 s에 모든 사람이 말하는 숫자를 저장하고 거기에서 튜브가 말해야하는 숫자만 리턴하도록 코드를 구현한다.

  • solution()의 while문
    '10진법 -> n진법'으로 변환하는 함수 convert(진법, 숫자)를 호출하고 반환값을 계속 s에 이어붙인다.
    s의 길이가 t * m이하일 동안 num을 하나씩 증가시키면서 반복한다.

  • convert(n, num) 함수
    십진수 numn진법으로 변환해준다.
    ans에 값이 거꾸로 저장되기 때문에 반활할 때 뒤집어서 반환해준다.

  • 마지막으로 문자열 s에서 슬라이싱을 활용해
    튜브의 차례인 p-1번째(인덱스는 0부터 시작하므로)부터 인원수 m씩 건너뛰면서 값을 뽑는다.
    이 때 t개의 숫자만 뽑아낼 수 있도록 인덱스의 종료값을 t * m로 한다.

d = {0:'0', 1:'1', 2:'2', 3:'3', 4:'4', 5:'5', 6:'6', 7:'7', 8:'8', 9:'9', \
    10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F'}

def convert(n, num):
    ans = ''
    while num:
        ans += d[num%n]
        num //= n
    return ans[::-1]

def solution(n, t, m, p):
    s = '0'
    num = 0
    while len(s) < t * m:
        s += convert(n, num)
        num += 1
    return s[p-1:t*m:m]
profile
공부 아카이브

0개의 댓글

관련 채용 정보