title: "[프로그래머스] 줄 서는 방법 Python 파이썬 해설 (Level 2) - 이도훈"
cleanUrl: "programmers/12936"
description: "프로그래머스 Level 2 문제 [줄 서는 방법]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

import math

def solution(n, k):
    arr = list(range(1, n+1))
    arr.sort()
    
    answer = []
    for i in range(1, n+1):
        # (n-i)! 개로 묶인 그룹이 n개 있을때, k번째는 몇 번째 그룹?
        # (k-1) // (n-i)! 번째
        x = arr[(k-1) // math.factorial(n-i)]
        answer.append(x)
        arr.remove(x)
        
        # k는 그룹 안에서 몇 번째?
        # (k-1) % (n-i)! + 1
        k = (k-1) % math.factorial(n-i) + 1
    
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges