백준 10828-stack
2024-04-09
문제
문제 링크
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
push X: 정수 X를 스택에 넣는 연산이다.
pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 스택에 들어있는 정수의 개수를 출력한다.
empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
풀이
const answers = [];
const [n, ...commands] = input;
function solution(n, commands) {
const stack = [];
const stackCommand = {
push: (value) => {
stack.push(value);
},
pop: () => {
return stack.length === 0 ? -1 : stack.pop();
},
size: () => {
return stack.length;
},
empty: () => {
return stack.length === 0 ? 1 : 0;
},
top: () => {
return stack.length === 0 ? -1 : stack.at(-1);
},
};
for (i = 0; i < n; i++) {
const [command, value] = commands[i].split(" ");
if (command === "push") {
stackCommand.push(parseInt(value));
} else {
answers.push(stackCommand[command]());
}
}
console.log(answers.join("\n"));
}
설명
Stack 구현은 javascript Array method 를 활용했습니다.
구현해야할 push, pop, size, empty, top 을 구현 후,
for 문을 통해 필요한 내용을 순회, split 을 통해 문자열 자르기를 통해 값과 stack command 를 분리했습니다.
push 를 제외한 나머지 method 는 값을 출력해야하므로 반환값을 별도로 저장하고,
마지막엔 예제 출력에 맞도록 join("\n")
을 통해 줄바꿈 후 출력하는 방식을 적용했습니다.