μκ³ λ¦¬μ¦/νκ·Έ λ³ νμ΄
νμμ μ°μ°(postfix)
choi95
2021. 7. 13. 15:27
λ¬Έμ
νμμ°μ°μμ΄ μ£Όμ΄μ§λ©΄ μ°μ°ν κ²°κ³Όλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νμΈμ.
λ§μ½ 3*(5+2)-9 μ νμμ°μ°μμΌλ‘ νννλ©΄ 352+*9- λ‘ ννλλ©° κ·Έ κ²°κ³Όλ 12μ
λλ€.
λ¬Έμ νμ΄
- μ°μ°μμμ μ«μκ° λμ¨λ€λ©΄ μ€νμ κ³μ μ μ₯
- μ΄ν μ°μ°μκ° λμ¨λ€λ©΄ κ°μ₯ μ΅κ·Όμ μ μ₯ν κ°κ³Ό κ·Έ μ΄μ μ μ μ₯ν κ°μ μΆμΆ
- μΆμΆν λ μ«μλ₯Ό ν΄λΉ μ°μ°μλ₯Ό ν΅ν΄ νλμ κ²°κ³Όκ°μΌλ‘ λμΆ
- λμΆλ κ²°κ³Όκ°μ μ€νμ μ μ₯_μ΄ν λ°λ³΅
μ½λ
function solution(p) {
let answer = 0;
let stack = [];
let regExp = /^[0-9]+$/;
for (let x of p) {
if (!regExp.test(x)) {
let rt = stack.pop();
let lt = stack.pop();
switch (x) {
case "+":
stack.push(lt + rt);
break;
case "-":
stack.push(lt - rt);
break;
case "*":
stack.push(lt * rt);
break;
case "/":
stack.push(lt / rt);
break;
default:
break;
}
} else {
stack.push(Number(x));
}
}
answer = stack.join("");
return answer;
}
let postfix = "352+*9-";
console.log(solution(postfix));
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));