コードテスト問題1
質問する
N名の学生の発表順であれば、順番に並べて、Kの発表順が何人目の学生の発表順であるかを回答してください.
例
番号付けタイプのArray(0<=index)
ex)nが3の場合、kは[2,3,1]である.
すべての場合、2 D配列に1つの数字が含まれている場合、その数字は[1,2,3]、[1,3,2]、[2,3,1]、[3,1,2]、[3,2,1]となり、返される値は3になります.
N名の学生の発表順であれば、順番に並べて、Kの発表順が何人目の学生の発表順であるかを回答してください.
例
番号付けタイプのArray(0<=index)
ex)nが3の場合、kは[2,3,1]である.
すべての場合、2 D配列に1つの数字が含まれている場合、その数字は[1,2,3]、[1,3,2]、[2,3,1]、[3,1,2]、[3,2,1]となり、返される値は3になります.
let output = orderOfPresentation(3, [2, 3, 1]);
console.log(output); // 3
output = orderOfPresentation(5, [1, 3, 2, 4, 5])
console.log(output); // 6
私が書いたコードfunction orderOfPresentation (N, K) {
let arr = [];
let order = 0;
for(let i=0; i<N; i++){ //N은 총 조의 수 = K의 길이
arr.push(K[i]) // (3, [2, 3, 1]) 이렇게 인자가 주어졌으면, arr = [2,3,1]
for (let j=1; j<= K[i]-1; j++){
//배열안에 인자가 1부터 시작하니깐 j=1부터, ex) i=0일때는 j=1까지 / i=1 일때는, j=2까지./ i=2일때는 j는 실행되지 않는다.
let sum = 1;
if(!arr.includes(j)) { // i=0,j=1일때 if문을 확인한다. i=0일때, arr=[2]// i=1일때, arr=[2,3]// i=2일때 arr=[2,3,1] 인 상태이다. j값이 포함되어 있지 않으므로 if문이 실행된다.
for(let n=1; n <= N - i -1; n++){ //i=0 일때는 n=2까지// i=1일때 n=1 까지는 // i=2일때 n은 실행되지 않는다.
sum = n *sum
}
order = sum + order
}
}
}
return order;
// TODO: 여기에 코드를 작성합니다.
}
// N은 이중배열안에 길이가 N이다.
// K는 이중배열 인덱스 중 하나이다.
// N개일때 나오는 경우의 수는 3! 이다 3 *2 *1
その他のコードfunction orderOfPresentation(N, K) {
let arr = [];
let result = 0;
function factorial(n) {
if (n <= 1) {return 1}
return n * factorial(n - 1);
}
for (let i = 0; i < N; i++) {
arr.push(K[i]);
const repeatNum = K.filter((v) => K[i] > v && !arr.includes(v)).length;
result += repeatNum * factorial(N - i - 1);
}
return result;
}
Reference
この問題について(コードテスト問題1), 我々は、より多くの情報をここで見つけました https://velog.io/@jelkov/코딩테스트-문제テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol