프로그래머스 LEVEL 2(줄 서는 방법)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2022-09-24

  • 해결 방법 :
    • (k - 1) / 현재 자리 수 제외한 수로 만들 수 있는 경우의 수 = 현재 자리에 들어갈 수
    • 현재 만들 수 있는 경우의 수를 current_case에 저장
    • arr에서 splice로 현재 값 제거
  • 회고 :
    • 처음에 Math.floor() 대신 parseInt()를 사용했는데 k가 0인 경우 음수가 되는 문제 발생
  • 코드

    function solution(n, k) {
        const answer = [];
        const arr = Array.from({ length: n }, (_, i) => i + 1);
        let current_case = arr.reduce((acc, cur) => {
            return acc * cur
        }, 1);
        while (arr.length) {
            current_case /= arr.length;
            answer.push(...arr.splice(Math.floor((k - 1) / current_case), 1));
            k %= current_case;
        }
        return answer;
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges