
https://www.acmicpc.net/problem/10828
자바스크립트 기본 내장 함수인 push, pop을 사용하지 않고 구현해야하는 문제이다.
어려워보이지만 차근차근 풀어나가면 꽤나 간단한 문제임 !!
테스트케이스를 모두 통과해서 제출한 코드가 제출한지 1초만에 시간초과로 오답처리 되었다 ..

혼자서 한참 고민해봤는데 어떤 부분을 최적화해야할지 감이 오지 않아 GPT에게 힌트를 요청했고, 이를 통해 수정한 내용은 아래와 같다.
pushX 함수에서 값을 추가할 때 스프레드 연산자를 사용하는 대신, 배열의 마지막 위치의 값만 새로 할당하도록 수정했다.
출력하는 부분 역시 각 함수에서 매번 출력하는 것이 아니라, 값을 저장했다가 입력값에 대해 모두 실행이 된 후에 저장한 값을 출력하도록 했다. 이 부분을 수정하면서 pushX함수의 매개변수에 값을 저장할 배열도 추가했다.
push X: 정수 X를 스택에 넣는 연산이다.
function pushX(arr, x) { arr[arr.length] = x; }
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
function pop() { if (stack.length === 0) { pushX(answer, -1); return; } pushX(answer, stack[stack.length - 1]); stack.splice(stack.length - 1, 1); }
size: 스택에 들어있는 정수의 개수를 출력한다.
function size() { pushX(answer, stack.length); }
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
function empty() { pushX(answer, stack.length === 0 ? 1 : 0); }
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
function top() { pushX(answer, stack[stack.length - 1] || -1); }
let stack = [],
answer = [];
function pushX(arr, x) {
arr[arr.length] = x;
}
function pop() {
if (stack.length === 0) {
pushX(answer, -1);
return;
}
pushX(answer, stack[stack.length - 1]);
stack.splice(stack.length - 1, 1);
}
function size() {
pushX(answer, stack.length);
}
function empty() {
pushX(answer, stack.length === 0 ? 1 : 0);
}
function top() {
pushX(answer, stack[stack.length - 1] || -1);
}
function solution(array) {
for (let i in array) {
if (array[i].startsWith("push")) {
pushX(stack, array[i].split(" ")[1]);
} else if (array[i] === "pop") {
pop();
} else if (array[i] === "size") {
size();
} else if (array[i] === "empty") {
empty();
} else if (array[i] === "top") {
top();
}
}
}
// =====입출력=====
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on("line", (line) => {
input.push(line);
if (input.length === parseInt(input[0]) + 1) {
rl.close();
}
}).on("close", () => {
const count = parseInt(input[0]);
const array = input.slice(1, count + 1);
solution(array);
console.log(answer.join("\n"));
});

멋져요👍