728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
분석
사람의 수 n과, 자연수 k가 주어질 때, 사람을 나열 하는 방법을 사전 순으로 나열 했을 때, k번째 방법을 반환
[1722번] 순열의 순서 구하기(수학, 구현)
1722번: 순열의 순서 첫째 줄에 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄의 첫 번째 수는 소문제 번호이다. 1인 경우 k(1 ≤ k ≤ N!)를 입력받고, 2인 경우 임의의 순열을 나타내는 N개의 수를 입력받는다. N
karla.tistory.com
풀이
def solution(n, k):
answer = []
fList = [0] * 21
fList[0] = 1
for i in range(1, n+1):
fList[i] = fList[i-1] * i
visited = [False] * 21 # 숫자 사용여부 리스트
s = [0] * (n+1) # 출력 순열 리스트
for i in range(1, n+1):
cnt =1
for j in range(1, n+1):
if visited[j]:
continue
if k <= cnt * fList[n-i]:
k -= (cnt-1) * fList[n-i]
s[i] = j
visited[j] = True
break
cnt += 1
return s[1:]
728x90