티스토리 뷰
title: "줄 서는 방법"
category: 프로그래머스[Level-3]
tags: [C++, JavaScript, 프로그래머스]
date: "2021-02-16"
문제 링크
C++
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, long long k) {
vector<int> answer;
// init
vector<int> remains;
long long fac=1;
for(int i=1; i<=n; i++) {
remains.push_back(i);
fac*=i;
}
k--; // for. indexing, k-1
for(int i=0; i<n; i++){
fac/=(n-i); // (n-1)!, (n-2)!, ..., 1!
answer.push_back(remains[k/fac]);
remains.erase(remains.begin()+(k/fac)); // 요소 하나씩 삭제
k%=fac;
}
return answer;
}
JavaScript
function solution(n, k) {
var answer = [];
// init
const remains = Array.from({ length: n }, (v, i) => i + 1); // [1, 2, ..., n]
let fac = remains.reduce((prev, curr) => prev * curr, 1); // n!
k--; // for. indexing
for (let i = 0; i < n; i++) {
fac /= n - i; // ex. (n-1)!, (n-2)!, ..., 1!
const index = parseInt(k / fac);
answer.push(remains[index]);
remains.splice(index, 1); // erase
k %= fac;
}
return answer;
}
728x90
반응형
'Programmers Solutions > Level-3' 카테고리의 다른 글
[프로그래머스] 방문 길이 (0) | 2021.02.20 |
---|---|
[프로그래머스] 야근 지수 (0) | 2021.02.20 |
[프로그래머스] 최고의 집합 (0) | 2021.02.16 |
[프로그래머스] 배달 (0) | 2021.02.15 |
[프로그래머스] 외벽 점검 (0) | 2021.02.14 |
댓글