풀이
let fs = require("fs");
let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");
input.shift();
let stack = [];
const result = [];
input.forEach((line) => {
// 입력
//line의 길이가 1이 아니라면( 즉 입력값이 여러개라면 ) 띄어쓰기를 기준으로 나누어준다.
//Number로 맵핑하고 stack에 추가한다.
if(line.length !== 1) {
const target = line.split(" ")[1]
const targetNum = Number(target)
stack.push(targetNum)
//입력값이 한개라면
} else {
const num = Number(line)
//입력값이 2라면 stack의 길이가 있을때에(stack에 정수가 존재할때에)
if(num === 2) {
if(stack.length) {
//stack에서의 뒷쪽에있는값을 결과값에 추가한다.
result.push(stack.pop())
//아니라면 result에 -1을 추가한다.
} else {
result.push(-1)
}
//3이라면 stack의 길이를 result에 추가한다.
} else if(num === 3) {
result.push(stack.length)
//4라면 stack에 정수가 존재할때에 0을 추가한다.
} else if(num === 4) {
if(stack.length) {
result.push(0)
//아니라면 1을 추가한다.
} else {
result.push(1)
}
//5라면 정수가 존재할때에 stack에서 맨마지막 요소를 result에 추가한다.
} else if(num === 5) {
if(stack.length) {
result.push(stack.at(-1))
//아닐시에는 -1 을 추가한다.
} else {
result.push(-1)
}
}
}
})
console.log(result.join("\n"))
사실 문제조차 이해하질 못해 풀이를 보며 주석을 달며 이해하려고 노력했다. 처음엔 문제에 1 2 3 4 5 번을 순서대로 하라는 건 줄 알았는데 1번이나오면 1번명령 , 3번이나오면 3번명령 이런식이였다... 문해력 goat ... 그리고 2번 명령에서 출력을 하라고되어있는데 저것도 이해가 잘 안되었다 알고보니 그냥 낚시성 문장이였던것같다. 문제를 잘 읽으려 노력해야겠다고 생각한 문제였다.
'알고리즘' 카테고리의 다른 글
[BOJ]4949 - 균형잡힌 세상(JS) (0) | 2024.08.13 |
---|---|
[BOJ]28279 - 덱2(JS) (0) | 2024.08.13 |
[BOJ]4948 - 베르트랑 공준(JS) (0) | 2024.07.25 |
[BOJ]4134 - 다음소수 (JS) (1) | 2024.07.23 |
[BOJ]1934 - 최소공배수(JS) (0) | 2024.07.19 |