230513 줄 서는 방법

Jongleee·2023년 5월 13일
0

TIL

목록 보기
258/576
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

0개의 댓글