본문 바로가기

코딩/알고리즘

백준) 11866 - 요세푸스 문제 0 JS

📌 문제 링크

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


📌 문제 탐색하기

  • N과 K가 주어지면 (N, K) 요세푸스 순열을 구하는 프로그램을 작성하시오.

시간복잡도

  • O(KN²)

알고리즘 선택

  • Queue

📌 코드 설계하기

  1. 문제의 `input`을 숫자로 변환하여 `N`과 `K`를 구조분해할당해줍니다.
  2. `1`부터 `N`까지로 `queue`를 초기화 해줍니다.
  3. `K-1`번 앞에서 빼서 뒤로 넣어줍니다.
  4. `K`번째 사람 제거하고 정답 배열에 추가합니다.
  5. 정답 형식에 맞춰 출력합니다.

📌 정답 코드

//https://www.acmicpc.net/problem/11866
export {};

const fs = require('fs');
const filePath =
  process.platform === 'linux' ? '/dev/stdin' : __dirname + '/input1.txt';
const [N, K] = fs
  .readFileSync(filePath)
  .toString()
  .trim()
  .split(' ')
  .map(Number);

const queue: number[] = Array.from({ length: N }, (_, i) => i + 1);
const answer: number[] = [];

while (queue.length > 0) {
  for (let i = 0; i < K - 1; i++) {
    queue.push(queue.shift()!);
  }
  answer.push(queue.shift()!);
}
console.log(`<${answer.join(', ')}>`);

'코딩 > 알고리즘' 카테고리의 다른 글

백준) 15552 - 빠른 A+B JS  (0) 2024.11.05
백준) 11382 - 꼬마 정민 JS  (0) 2024.11.04
백준) 2193 - 이친수 JS  (1) 2024.10.26
백준) 2303 - 숫자게임 JS  (0) 2024.10.25
백준) 5567 - 결혼식 JS  (0) 2024.10.24