본문 바로가기

코딩테스트 연습/프로그래머스

[프로그래머스/코딩테스트 연습 ] [3차] n진수 게임

def solution(n, t, m, p):
    number = '0123456789ABCDEF'
    answer = ''
    num = number[:n]
    i = 0 # 진행 할 수 
    an = '0' #진행되는 동안 n진수의 수열
    while len(an) < (t*m) : 
        a = '' # 현재 i의 n진수를 저장할 공간
        q = i # q에 i를 넣어준다.
        while q > 0 : 
            q,r = divmod(q,n)
            a= num[r]+a #n진수이므로 r번쨰 값을 넣어준다.
        an+=a # 마지막에는 최중 n진수 수열에 붙여준다.
        i+=1 # i는 점점 커지면서
    for i in range(t):
        answer+=an[p+(i*m)-1]
    return answer

이 문제를 어떻게 해야 효율적으로 풀 수 있을까 고민을 했는데, 사실 해결이 안되서 그냥

전체 n진수로 만든 순열을 구하고 거기에서 튜브가 말해야하는 부분만 뽑아오는 방식을 취하였다. 

다른 방법은 못풀겠당.. 

그래서 효율성은 좋지 않을 것이라고 생각한다. 

그래도 풀은것에 의의를 둔다...