import java.util.ArrayList;
// 줄 서는 방법 - 연습문제
public class LineMethod {
public int[] solution(int n, long k) {
int[] answer = new int[n];
ArrayList<Integer> list = new ArrayList<>();
long fac = 1; // overflow 처리
int index = 0;
for (int i = 1; i <= n; i++) {
fac *= i;
list.add(i);
}
k--;
while (n > 0) {
fac /= n--; // 1. fac / n => 2. n-- 순서로 계산 됨
answer[index] = list.get((int) (k / fac));
list.remove((int) (k / fac));
k %= fac;
index++;
}
return answer;
}
}