const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs
.readFileSync(filePath)
.toString()
.trim()
.split("\n")
.map((item) => item.split(" ").map((item) => +item));
let num = input.shift();
let answer = [];
for (let i = 0; i < num; i++) {
const [N, M] = input.shift();
const docs = input.shift();
const id = [];
for (let i = 1; i <= N; i++) {
id.push(i);
}
const target = id[M];
let result = 1;
while (docs.length > 0) {
let curDoc = docs.shift();
let trueCheck = docs.filter((ele) => ele > curDoc);
if (trueCheck.length === 0) { // 맨앞에서 뽑은 값보다 큰값이 없으면
if (id[0] === target) { // 문서들의 고유 id 맨앞에 있는값이 target과 같으면
answer.push(result);
break;
}
id.shift();
result++;
} else {
docs.push(curDoc);
id.push(id.shift());
}
}
}
console.log(answer.join("\n").trim());
let trueCheck = docs.filter((ele) => ele > curDoc); 이부분을
let trueCheck = docs.some((ele) => ele > curDoc);로 했었는데 런타임에러가 계속 발생했다..
이유는 docs가 빈배열일경우 ele는 undefined고 1 과 undefined를 비교하니 무조건 false가 나와서 발생했던 문제였다
메소드 사용법 및 자바스크립트의 특징에대해 좀 더 공부를 해야겠다는 생각이 들었다.