본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 줄 서는 방법

728x90

나의 풀이 (시간 초과)

from itertools import permutations

def solution(n, k):
    return list(permutations(range(1, n + 1), n))[k - 1]

 

 

 

나의 풀이 (최종)

def solution(n, k):
    pool = [i for i in range(1, n + 1)]
    answer = []
    num = 1
    k -= 1

    for i in range(2, n):
        num *= i

    for i in range(n - 1, 0, -1):
        answer.append(pool[k // num])
        pool.remove(pool[k // num])
        k %= num
        num //= i

    answer.append(pool[0])

    return answer

 - math 라이브러리의 factorial을 사용했어도 좋았을 것

 

 

 

 

 

 

 

 

반응형