728x90
반응형
목차
문제
https://www.acmicpc.net/problem/1541
문제 구현 방향
나는 처음에 문자열 앞에 +를 더해준뒤 연산자와 수를 배열로 만들고 시작하였다.
그렇게 하면 스택으로 접근하기 쉽다.
문제 풀이
스택이 비어있고 +가 나오면 바로 연산을 해준다.
스택이 안비어있고 +가 나오면 스택에 push 한다.
스택이 비어있고 -가 나오면 스택에 push 한다.
스택이 안비어있고 -가 나오면 스택에서 모든 값을 연산한 후 넣어준다.
--------------------------
마지막으로 스택에 남아있는 - 연산을 실행해 준다.
코드 구현
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
let ans = 0;
let str = "+";
str += input[0].trim();
let cnt = 0;
let operate = [];
let num = [];
let stack = [];
let sel = "";
for (let i = 0; i < str.length; i++) {
if (str[i] != "-" && str[i] != "+") sel += str[i];
else {
operate.push(str[i]);
if (sel !== "") {
num.push(Number(sel));
sel = "";
}
}
}
num.push(Number(sel));
for (let i = 0; i < num.length; i++) {
if (operate[i] == "+") {
if (stack.length === 0) ans += num[i];
else stack.push(num[i]);
} else if (operate[i] == "-") {
if (stack.length === 0) stack.push(num[i]);
else {
while (stack.length) {
ans -= stack.pop();
}
stack.push(num[i]);
}
}
}
while (stack.length) {
ans -= stack.pop();
}
console.log(ans);
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][다익스트라] 1238 파티 NodeJs 구현 (0) | 2025.01.21 |
---|---|
[백준][bfs] 2146 다리 만들기 NodeJs 구현 (0) | 2025.01.19 |
[백준][dp] 1890 점프 NodeJs 구현 (0) | 2025.01.13 |
[백준][dp] 1937 욕심쟁이 판다 NodeJs 구현 (0) | 2025.01.09 |
[백준][스택] 1406 에디터 NodeJs 구현 (0) | 2025.01.04 |