- 난이도: Lv2
프로그래머스 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12936
풀이 링크(GitHub): hayannn/CodingTest_Java/프로그래머스/2/줄 서는 방법
풀이 시간 : 12분
import java.util.*;
class Solution {
public int[] solution(int n, long k) {
List<Integer> nums = new ArrayList<>();
for (int i = 1; i <= n; i++) nums.add(i);
int[] result = new int[n];
long[] factorial = new long[n + 1];
factorial[0] = 1;
for (int i = 1; i <= n; i++) {
factorial[i] = factorial[i - 1] * i;
}
k--;
for (int i = 0; i < n; i++) {
long f = factorial[n - 1 - i];
int idx = (int) (k / f);
result[i] = nums.remove(idx);
k %= f;
}
return result;
}
}