<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>

class Solution:
    import math
    def permute(self, nums):
        if not nums:
            return [[]]
        res = []
        for i in range(len(nums)):
            val = nums.pop(i)
            perms = self.permute(nums.copy())

            for perm in perms:
                perm.insert(0, val)

            res.extend(perms)
            nums.insert(i, val)
        
        return res

    def getPermutation(self, n: int, k: int) -> str:
        table = {i:[0,0] for i in range(n)}

        n_perm = math.factorial(n)
        divisor = n_perm // n

        for i in range(len(table)):
            table[i] = [divisor * i, (divisor * i) + (divisor - 1)] 

        for i in range(len(table)):
            if k - 1 >= table[i][0] and k - 1 <= table[i][1]:
                arr = []
                for j in range(1, n+1):
                    if j == i+1:
                        continue
                    else:
                        arr.append(j)

                out = self.permute(arr.copy())
                for p in out:
                    p.insert(0, i+1)


                res = ""             
                for char in out[abs(table[i][0] - (k - 1))]:
                    res += str(char)

                return res




27200