백준 24511번을 풀다가 덱을 활용해야 하는 경우가 나왔습니다. 좋은 활용이라고 생각해서 기록을 남겨둡니다.
const [n, t, s, m, c] = require("fs")
.readFileSync("dev/stdin")
.toString()
.trim()
.split("\n");
const N = +n;
const M = +m;
const type = t.split(" ").map(Number);
const start = s.split(" ").map(Number);
const C = c.split(" ").map(Number);
// Deque 활용 부분
const deque = start.filter((_, i) => type[i] === 0);
// 한 칸 비워두기 기법
const capacity = deque.length + 1;
let head = 0;
// 기존 Deque class를 만들 때에는 -1로 초기화했지만,
// 현재는 deque에 데이터가 들어있기 때문에 deque.length로 초기화
let tail = deque.length;
const ret = C.map((el) => {
let x = el;
head = (head - 1 + capacity) % capacity;
deque[head] = x;
tail = (tail - 1 + capacity) % capacity;
return deque[tail];
});
console.log(ret.join(" "));
자료구조를 활용하려면 class 키워드를 사용해서 객체를 만들어서 활용해야 한다고 생각했습니다. 그래서 매번 코테 직전에 다시 한번 필요한 자료구조를 살펴보며 빠르게 완성하는데 집중했습니다만, 이번 코테 문제를 풀면서 전부를 구현하지 않고 다른 활용 방법이 있다는 걸 알게 되었습니다.
'알고리즘&코테' 카테고리의 다른 글
| [코테] 비트마스킹 기본 (0) | 2025.06.19 |
|---|---|
| [코테 꿀팁] JS 입력값 받아올 때 주의할 점 require('fs') (0) | 2025.06.13 |
| [자료구조] Deque with JS 리팩토링2 (0) | 2025.05.20 |
| [자료구조] Deque with JS 메모리 누수 방지 (0) | 2025.05.16 |
| [자료구조] Deque with JS 리팩토링 (0) | 2025.05.15 |