몫과 나머지를 가지고 접근하는 문제인듯 하다.
앞번호가 1인 것들의 몫은 0으로 하고,
-> 몫이 0이면 앞에는 1로 위치
-> 몫이 1이면 앞에는 2로 위치하는 방식으로 생각함.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(int n, long long k) {
vector<int> answer;
// 순열로 표현했을때
// 20! => 360만 * 10의 10승...
// k가 20!이면
// n자리 수에서 첫번째 자리변경하지 않은상태에의
// 끝까지 가는 숫자는 (n - 1)!
// 여기서는 (4 - 1)! : 3! => 3 * 2 * 1 이다.
// n : 4개 중에서 k : 1이라고 한다면
// (n-1)! 을 가지고 진행하는데,
// k / 3! , k % 3!
// 1 / 3! , 1 % 3!
//
// 몫 전부다 0?
// 1 2 3 4 - 1
// 1 2 4 3 - 2
// 1 3 2 4 - 3
// 1 3 4 2 - 4
// 1 4 2 3 - 5
// 1 4 3 2 - 6
// 나머지값들 어떻게 할까...
// 몫 : 전부 1
// k: 7
// 2 1 3 4 - 1
// 2 1 4 3 - 2
// 2 3 1 4 - 3
// 2 3 4 1 - 4
// 2 4 1 3 - 5
// 2 4 3 1 - 6
// k : 13 : 몫 : 2
// 3 1 2 4 - 1
// 3 1 4 2 - 2
// 3 2 1 4 - 3
// 3 2 4 1 - 4
// 3 4 1 2 - 5
// 3 4 2 1 - 6
// 다시 3!로 나눌까?
// 아니면 변경되었으니까. 2!로 나눠야 하나...
return answer;
}