알고리즘/코딩테스트 공부
6-4 후위식 연산(postfix)(스택)
YG - 96년생 , 강아지 있음, 개발자 희망
2021. 12. 10. 13:06
문제
후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.
풀이
function solution(s) {
let answer;
let stack = [];
for (let x of s) {
if (!isNaN(x)) stack.push(+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);
}
// console.log(stack);
}
//console.log(stack);
answer = stack[0];
return answer;
}
let str = "352+*9-";
console.log(solution(str));
isNaN 으로 넘버인지 확인한 후 pop 과 push로 문제를 풀었습니다.
후위식 연산에 대해 공부하게 되었습니다.