정다윤 풀이
const filePath = process.platform === "linux" ? "/dev/stdin" : "input.txt"; const input = require("fs") .readFileSync(filePath) .toString() .trim() .split("\n"); const N = Number(input[0]); const answer = []; for (let i = 1; i < 2 * N; i += 2) { let [documents, targetIndex] = input[i].split(" ").map(Number); const queue = input[i + 1].split(" ").map(Number); let max = Math.max(...queue); let count = 0; while (queue.length) { let front = queue.shift(); if (front < max) { queue.push(front); targetIndex--; } else { count++; if (targetIndex === 0) { answer.push(count); break; } targetIndex--; max = Math.max(...queue); } if (targetIndex < 0) targetIndex = queue.length - 1; } } console.log(answer.join("\n"));
김민수 풀이
let [n, ...input] = require('fs').readFileSync("/dev/stdin").toString().trim().split("\n"); for(let i = 0; i < n; i++){ let importance = parseInt(input[i*2].split(' ')[1]); let fifoList = input[(i*2)+1].split(' ').map(e => parseInt(e)); let fifoNumList = [...Array(fifoList.length)].map((e,i) => parseInt(i)); let cnt = 1; while(true){ let listShiftNum = fifoList.shift(); let listNumShiftNum = fifoNumList.shift(); let fVal = fifoList.find(e => e > listShiftNum); if(fVal == undefined && listNumShiftNum == importance){ console.log(cnt); break; }else if(fVal == undefined && listNumShiftNum != importance){ cnt += 1; }else if(fVal != undefined && listNumShiftNum == importance){ fifoList.push(listShiftNum); fifoNumList.push(listNumShiftNum); }else if(fVal != undefined && listNumShiftNum != importance){ fifoList.push(listShiftNum); fifoNumList.push(listNumShiftNum); } } }
하송희 풀이
const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let [t, ...cases] = fs.readFileSync(filePath).toString().trim().split("\n"); for (i = 0; i < 2 * t; i += 2) { let [n, m] = cases[i].split(" "); let docs = cases[i + 1].split(" "); let count = 0; while (true) { let maxNum = Math.max(...docs); let accNum = docs.shift(); if (maxNum == accNum) { count++; if (+m == 0) { console.log(count); break; } } else docs.push(accNum); +m--; if (+m < 0) m += docs.length; } }
안재현 풀이
이승민 풀이
let fs = require('fs'); //const inputs = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); const inputs = fs.readFileSync(__dirname+'/ex2.txt').toString().split('\n'); const k = Number(inputs[0]); for (let i=1; i < k*2; i+=2){ let [n, m] = inputs[i].split(' ').map(Number); let arr = inputs[i+1].split(' ').map(Number); if (n === 1 && m === 0) { console.log(1); } else { let cnt = 0; //몇번째인지 count while (true) { let first = Math.max(...arr); let now = arr.shift(); m--; if (now === first) { //최대와 현재 맨처음애가 같으면 cnt+=1; if (m < 0) { break; } } else { // 아니면 배열 다시 넣기 arr.push(now) if (m<0){ m+=arr.length; } } } console.log(cnt); } }