https://www.acmicpc.net/problem/1158
1158번: 요세푸스 문제
첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)
www.acmicpc.net
- 사용언어 : node.js
- 알고리즘 : 자료구조, 큐
- Solved.ac Tier : Silver IV
node.js 코드
1. 문제 정리
선입 선출 방식의 큐를 사용하면 쉽게 해결 할 수 있는 문제이다. 반복문을 사용하여 계속 돌면서 shift로 맨 앞의 값을 뺀 뒤, 반복 횟수가 K의 배수인 경우엔 값을 다시 넣지 않고 아닌 경우엔 그냥 값을 넣는 방식으로 큐를 사용하여 문제를 해결 하였다.
2. 완성 코드
const filePath = process.platform === "linux" ? "/dev/stdin" : "ans.txt";
let [N, K] = require("fs").readFileSync(filePath).toString().trim().split(" ");
let arr = [...new Array(parseInt(N))].map((_, i) => i + 1);
const ans = [];
let cnt = 1;
while (arr.length) {
let data = arr.shift();
if (cnt % K == 0) {
ans.push(data);
} else {
arr.push(data);
}
cnt++;
}
console.log(`<${ans.join(", ")}>`);
'백준 알고리즘 > Lang-node.js' 카테고리의 다른 글
[백준/node.js] 4949 균형잡힌 세상 (0) | 2023.01.09 |
---|---|
[백준/node.js] 2164 카드2 (0) | 2023.01.08 |
[백준/node.js] 10845 큐 (0) | 2023.01.08 |
[백준/node.js] 10828 스택 (0) | 2023.01.08 |
[백준/node.js] 11656 접미사 배열 (0) | 2023.01.04 |