
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const [n, k] = fs.readFileSync(path).toString().split(' ').map(Number);
const q = Array.from({ length: n }, (_, i) => i + 1);
const answer = [];
while (q.length) {
for (let i = 0; i < k; i++) {
q.push(q.shift());
}
answer.push(q.pop());
}
console.log('<' + answer.join(', ') + '>');
⏰ 소요한 시간 : 17분
1번부터 n번까지의 사람이 앉아있음을 나타내는 배열 q를 만들어 준다.
그 후 q가 빌때까지 즉 모든 사람이 없어질 때 까지 반복하면서 회전을 시켜주면된다.
가장 앞쪽에 있는 사람을 빼서 뒷쪽에 넣어주는 로직을 코드로 바꾸면 아래와 같다.
q.push(q.shift());
이러면 제거할 사람이 가장 마지막 요소로 가게 되는데 마지막 요소를 pop 해서 정답배열에 넣어주면 된다.