맨처음에는 단순하게 shift와 push를 통해서 큐를 구현했지만 시간초과가 걸렸습니다.
다른 분들 풀이는 대부분 링크드 리스트를 구현해서 푸시던데 단순하게 배열의 idx와 push를 통해서 구현했습니다.
const fs = require("fs");
const stdin = (
process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: fs.readFileSync("./input.txt").toString()
).split("\n");
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
const num = Number(input());
const nums = Array.from(Array(num), (_, i) => i + 1);
let count = 0; // 인덱스
let answer = 1; // num이 1일 경우 정답은 1
while (nums.length != 1) { // 1일 경우 실행시키지 않음
count++; // 일단 index 1증가 시키고
nums.push(nums[count]); // 맨 뒤로 보낼 카드를 배열에 push 시켜줌
const temp = nums[count]; // 맨뒤로 보낸 카드를 임시로 저장해놓고
count++; // index 증가
if (nums[count] == temp) { // 맨 밑 카드와 현재 인덱스의 카드가 같다면
answer = temp; // 정답에 넣고 break;
break;
}
}
console.log(answer);