본문 바로가기
알고리즘/백준

[백준] 11866번: 요세푸스 문제 0 (JavaScript, node.js)

by gardenii 2023. 6. 5.

[백준] 11866번: 요세푸스 문제 0 (JavaScript, node.js)

https://www.acmicpc.net/problem/11866

 

11866번: 요세푸스 문제 0

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000)

www.acmicpc.net

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : __dirname + '/input.txt';
const input = fs.readFileSync(filePath).toString().trim().split(' ');
let num = []; //num 배열 생성
input.forEach((e)=>{ //입력값 각각 Number로 변환하여 배열 생성
    num.push(Number(e));
})

let arr = []; //arr배열 생성
for(let i = 1; i <= num[0]; i++){ //1~N값 넣어주기
    arr.push(i);
}
let result = "<";
for (let j = 0; j < num[0]; j++) {
    let i = num[1] - 1; 
    while (i-- > 0) { //K까지
        let tmp = arr.shift(); //저장했다가
        arr.push(tmp); //다시 넣어주기
    }
    result += arr.shift(); //i = 0일 때 - 즉 K번째 일때 삭제 후 result에 값 넣어주기
    if(arr.length == 0) //다 빼줬으면
        result += ">";
    else
        result += ", ";
}
console.log(result);

* 주석 없는 코드

더보기
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : __dirname + '/input.txt';
const input = fs.readFileSync(filePath).toString().trim().split(' ');
let num = []; 
input.forEach((e)=>{
    num.push(Number(e));
})

let arr = []; 
for(let i = 1; i <= num[0]; i++){
    arr.push(i);
}
let result = "<";
for (let j = 0; j < num[0]; j++) {
    let i = num[1] - 1; 
    while (i-- > 0) { 
        let tmp = arr.shift(); 
        arr.push(tmp); 
    }
    result += arr.shift(); 
    if(arr.length == 0)
        result += ">";
    else
        result += ", ";
}
console.log(result);