https://www.acmicpc.net/problem/2164
function run(input) {
const result = Array.from({ length: Number(input) }, (_, i) => i + 1);
let isDiscard = false;
while (result.length > 1) {
const pick = result.shift();
if (!pick) break;
if (isDiscard) {
result.push(pick);
isDiscard = false;
} else isDiscard = true;
}
return result[0];
}
while
문 안에서 shift()
로 인해 매번 배열의 요소들이 이동 → O(n)^2function run(input: number) {
const result = Array.from({ length: Number(input) }, (_, i) => i + 1);
let front = 0;
while (result.length - front > 1) {
front++;
result.push(result[front]);
front++;
}
return result[front];
}