Q. 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 결과값은 12이다.
결과 값을 나오도록 해보자.
A. 숫자는 순차적으로 나열되며 만약 3+5라면 35+라고 표현이 된다.
스택이라고 지정해놓은 배열에 숫자들을 넣고 연산자를 만날때마다 연산을 한 결과값을 다시 스택에 넣어주기로 함.
**stack의 경우 위에 있는 값 부터 나오므로 순차적으로 rt,lt순으로 선언/할당해준다.
function solution(s) {
let answer = 0;
let stack = [];
for (let x of s) {
if (!isNaN(x)) { //숫자라면
stack.push(Number(x)); //스트링을 숫자로 바꿔서 스택에 push
} else {
let rt = stack.pop(); //오른쪽부터 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));
stack의 push순서와 pop을 잘 활용하자.