[프로그래머스] 줄 서는 방법 (JS)

hhkim·2023년 10월 29일
0

Algorithm - JavaScript

목록 보기
169/188
post-thumbnail

풀이 과정

  1. 경우의 수 구하기: 팩토리얼 함수
  2. 각 구간을 n으로 나눠서 k가 몇 번째 구간에 들어가는지 찾기

코드

function solution(n, k) {
  const arr = Array(n)
    .fill(0)
    .map((_, i) => i + 1);
  let result = [];
  while (result.length !== n) {
    const part = factorial(arr.length) / arr.length;
    const i = Math.ceil(k / part) - 1;
    result.push(arr[i]);
    arr.splice(i, 1);
    k -= part * i;
  }
  return result;
}

function factorial(n) {
  if (n < 2) return 1;
  return n * factorial(n - 1);
}

🦾

처음에 재귀로 풀었더니 효율성 테스트에서 탈락해서 힌트를 보고 구간을 나누어 풀었다.

0개의 댓글