미누에요
[백준 2164번] 카드 2 - JavaScript 본문
728x90
반응형
SMALL
이 문제는 읽어보면 동작 방식이 큐(queue)를 사용해야한다는 생각이 들 것이다.
나는 아직 코딩 테스트 초보라 생각이 들지 않았기 때문에 무식하게 먼저 풀어보았다.
const input = require('fs')
.readFileSync('/dev/stdin')
.toString()
.trim()
.split('\n');
const num = +input;
const queue = Array.from({ length: num }, (_, i) => i + 1);
let front = 0;
for (let i = 1; i <= num; i++) {
cards.push(i);
}
while (cards.length > 1) {
cards.shift();
let n = cards.shift();
cards.push(n);
}
console.log(+cards);
언제나 그렇듯 무식하게 풀면 시간 초과 에러가 발생한다. GPT에게 물어보니 .shift()를 수행하는 시간 복잡도가 O(N)이라고 한다.
그래서 큐(queue)를 사용하는 방식으로 바꾸어 풀어보았다.
소스 코드
const input = require('fs')
.readFileSync('./info.txt')
.toString()
.trim()
.split('\n');
const num = +input;
const queue = Array.from({ length: num }, (_, i) => i + 1);
let front = 0;
while (queue.length - front > 1) {
front++;
queue.push(queue[front]);
front++;
}
console.log(queue[front]);
정답!
728x90
반응형
LIST
'알고리즘' 카테고리의 다른 글
[백준 9012번] 괄호 - JavaScript (0) | 2025.01.22 |
---|---|
[백준 4949번] 균형잡힌 세상 - JavaScript (0) | 2025.01.21 |
[백준 1920번] 수 찾기 - JavaScript (0) | 2025.01.19 |
[백준 11651번] 좌표 정렬하기 2 - JavaScript (1) | 2025.01.18 |
[백준 1676번] 팩토리얼 0의 개수 - JavaScript (0) | 2025.01.18 |