<p>The set <code>[1, 2, 3, ...,&nbsp;n]</code> contains a total of <code>n!</code> unique permutations.</p>

<p>By listing and labeling all of the permutations in order, we get the following sequence for <code>n = 3</code>:</p>

<ol>
	<li><code>&quot;123&quot;</code></li>
	<li><code>&quot;132&quot;</code></li>
	<li><code>&quot;213&quot;</code></li>
	<li><code>&quot;231&quot;</code></li>
	<li><code>&quot;312&quot;</code></li>
	<li><code>&quot;321&quot;</code></li>
</ol>

<p>Given <code>n</code> and <code>k</code>, return the <code>k<sup>th</sup></code> permutation sequence.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 3
<strong>Output:</strong> "213"
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> n = 4, k = 9
<strong>Output:</strong> "2314"
</pre><p><strong class="example">Example 3:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 1
<strong>Output:</strong> "123"
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= n &lt;= 9</code></li>
	<li><code>1 &lt;= k &lt;= n!</code></li>
</ul>

from typing import List
from math import factorial

class Solution:
    def getPermutation(self, n: int, k: int) -> str:
        # 초기화: 숫자 리스트와 k를 0 인덱스 기반으로 변환
        nums = list(range(1, n + 1))
        k = k - 1  # 1,2,3...에서 0,1,2,3... 로 변환

        # 결과 문자열 초기화
        result = []

        # 모든 자리수에 대해 계산
        for i in range(n):

            # 현재 자리에서 올 숫자의 인덱스 계산

            # 현재 자리에서 남은 숫자들의 순열 개수 계산
            fact = factorial(n - 1 - i)

            # 인덱스 계산
            index = k // fact
            k %= fact

            # 결과에 숫자를 추가하고 리스트에서 제거
            result.append(str(nums[index]))
            nums.pop(index)

        return ''.join(result)

16700