function solution(s) {
let stack = [];
for (let x of s) {
if (Number.isInteger(Number(x))) stack.push(x);
else {
let b = stack.pop();
let a = stack.pop();
let result = eval(a + x + b);
stack.push(result.toString());
}
}
const answer = Number(stack[0]);
return answer;
}
let str = '352+*9-';
console.log(solution(str));
eval
을 사용하여 문자열로 풀어보았다
function solution(s) {
let stack = [];
for (let x of s) {
if (Number.isInteger(Number(x))) stack.push(Number(x));
else {
let b = stack.pop();
let a = stack.pop();
let result;
switch (x) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
result = a / b;
break;
}
}
}
const answer = Number(stack[0]);
return answer;
}
let str = '352+*9-';
console.log(solution(str));
가급적 웹에서
eval
을 사용하지 말라고 하길래switch 문
으로 구현하였다.
function solution(s) {
let answer;
let stack = [];
for (let x of s) {
if (!isNaN(x)) stack.push(Number(x));
else {
let rt = stack.pop();
let lt = stack.pop();
if (x === '+') stack.push(lt + rt);
else if (x === '-') stack.push(lt - rt);
else if (x === '*') stack.push(lt * rt);
else if (x === '/') stack.push(lt / rt);
}
}
answer = stack[0];
return answer;
}
let str = '352+*9-';
console.log(solution(str));
그냥 무난하게
if 문
으로 푼 것 같다
- 숫자인지 판별할 때 2 가지 방법 사용이 가능
if(Number.isInteger(Number(x))
if(!isNaN(x))
-> 2번이 훨씬 간단해보인다..