public static int[] solution(int n, long k) {
List<Integer> numbers = new ArrayList<>();
int[] result = new int[n];
long factorialNumber = 1;
for (int i = 1; i <= n; i++) {
factorialNumber *= i;
numbers.add(i);
}
k--;
int index = 0;
while (n > 0) {
factorialNumber /= n;
result[index++] = numbers.remove((int) (k / factorialNumber));
k %= factorialNumber;
n--;
}
return result;
}
factorialNumber를 int로 선언하는 경우 효율성 1,2,4,5 에서 런타임 에러가 발생하므로 long으로 선언해줌
출처:https://school.programmers.co.kr/learn/courses/30/lessons/12936