[백준11866_자바스크립트(javascript)] - 요세푸스 문제 0

경이·2024년 8월 3일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
104/325

🔴 문제

요세푸스 문제 0


🟡 Sol

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 해서 정답배열에 넣어주면 된다.


🔵 Ref

profile
록타르오가르

0개의 댓글