Algorithm & Data Structures/Programers
Lv 2. 줄 서는 방법
Geisha
2024. 9. 2. 21:01
package Programmers;
import java.util.*;
class p줄서는방법 {
public int[] solution(int n, long k) {
int[] answer = new int[n];
List<Integer> strarr = new ArrayList<>();
//팩토리얼 값
long f = 1;
for(int i = 1 ; i <= n ; i++){
strarr.add(i);
f *= i; //전체 경우의 수 팩토리얼 계산
}
//각 answer의 들어가야할 idx 번호
int idx = 0;
//answer arr는 0 부터 시작하여 1번째가 된다.
k--;
while(idx < n){
f = f / (n - idx); // f에서 몇번째 위치에 무슨 숫자가 들어가야하는지 검사
answer[idx++] = strarr.remove((int) (k / f));
k %= f; // 숫자가 들어갔으니 k 최신화
}
return answer;
}
}