📌 문제 링크
https://www.acmicpc.net/problem/10828
📌 문제 탐색하기
- 정수를 저장하는 스택을 구현하고 주어진 명령의 순서에 따라 알맞은 출력값을 처리
- 명령
- push X: 정수 X를 스택에 넣는 연산
- pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력
- size: 스택에 들어있는 정수의 개수를 출력
- empty: 스택이 비어있으면 1, 아니면 0을 출력
- top: 스택의 가장 위에 있는 정수를 출력. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력
시간복잡도
- O(n)
알고리즘 선택
- 스택
📌 코드 설계하기
- 정수를 저장할 `stack` 배열과 최종 결과를 반환할 `answer` 배열을 선언합니다.
- 입력된 명령들을 순서대로 처리하기 위해 for문을 사용합니다.
- 주어진 명령어에 맞는 코드를 작성합니다.
- `push`로 시작된다면 숫자를 가져와 `stack`에 넣어줍니다.
- `top`이면 `stack`의 마지막 요소를 가져오거나 없으면 `-1을 `answer`배열에 넣어줍니다.
- `pop`이면 `stack`의 마지막 요소를 반환하거나 `-1`을 출력합니다.
- `size`면 `answer`에 `stack`의 길이를 넣어줍니다.
- `empty`면 `stack`의 길이를 확인하고 `answer`에 `0` 또는 `-1`을 넣어줍니다.
- 마지막에 `answer`값을 출력합니다.
📌 정답 코드
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input1.txt";
const [_, ...input] = fs.readFileSync(filePath).toString().trim().split("\n");
const stack = [];
const answer = [];
for (const x of input) {
if (x.startsWith("push")) {
stack.push(x.split(" ")[1]);
}
if (x === "top") answer.push(stack.at(-1) || -1);
if (x === "pop") answer.push(stack.pop() || -1);
if (x === "size") answer.push(stack.length);
if (x === "empty") {
answer.push(stack.length === 0 ? 1 : 0);
}
}
console.log(answer.join("\n"));
6달 전엔 switch로 풀었구나.....
//https://www.acmicpc.net/problem/10828
export {};
const fs = require("fs");
const filePath =
process.platform === "linux" ? "/dev/stdin" : __dirname + "/input.txt";
const input = fs.readFileSync(filePath).toString().trim().split("\n");
function solution(input: string[]) {
const stack: number[] = [];
const answer: number[] = [];
for (const x of input) {
switch (x) {
case "pop":
answer.push(stack.pop() || -1);
break;
case "size":
answer.push(stack.length);
break;
case "empty":
answer.push(stack.length === 0 ? 1 : 0);
break;
case "top":
answer.push(stack.at(-1) || -1);
break;
default:
if (!Number(x)) {
stack.push(Number(x.split(" ")[1]));
}
break;
}
}
console.log(answer.join("\n"));
}
solution(input);
'코딩 > 알고리즘' 카테고리의 다른 글
백준) 28279 - 덱 2 JS (1) | 2024.11.18 |
---|---|
백준) 18258 - 큐2 JS (0) | 2024.11.17 |
백준) 2231 - 분해합 JS (0) | 2024.11.15 |
백준) 2798 - 블랙잭 JS (0) | 2024.11.14 |
백준) 2587 - 대표값2 (1) | 2024.11.13 |