Written by
최태열
on
on
[Python][프로그래머스][Level3] 줄 서는 방법
[Python][프로그래머스][Level3] 줄 서는 방법
코드
def solution(n, k):
answer=[]
num=list(range(1,n+1))
while num:
cp=1
for i in range(2,n):
cp*=i
ck= k//cp if k%cp>0 else k//cp-1
answer.append(num[ck])
num=num[:ck]+num[ck+1:]
k-=cp*ck
n-=1
return answer
일단 n개의 수를 일렬로 세웠을 때, 가능한 경우의 수는 n! 이다.
가장 첫번째 오는 수를 기준으로 (n-1)! 씩 n개의 경우의 수 인 것이다.
따라서 k 번째 방법을 n-1로 나눠주면 첫번째 오는 값을 알 수 있다.
이 과정을 반복하면 k번째 수를 알 수 있다.
Discussion and feedback