📌 문제 링크
https://www.acmicpc.net/problem/11866
📌 문제 탐색하기
- N과 K가 주어지면 (N, K) 요세푸스 순열을 구하는 프로그램을 작성하시오.
시간복잡도
- O(KN²)
알고리즘 선택
- Queue
📌 코드 설계하기
- 문제의 `input`을 숫자로 변환하여 `N`과 `K`를 구조분해할당해줍니다.
- `1`부터 `N`까지로 `queue`를 초기화 해줍니다.
- `K-1`번 앞에서 빼서 뒤로 넣어줍니다.
- `K`번째 사람 제거하고 정답 배열에 추가합니다.
- 정답 형식에 맞춰 출력합니다.
📌 정답 코드
//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 |