코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션6-자료구조(스택) / 4. 후위식 연산(postfix)

sangchu 2023. 2. 10. 10:04

문제

후위연산식이 주어지면 연산한 결과를 출력. 만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12

첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다. 식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.

 

풀이

function solution(s) {
  let answer;
  let lt, rt;
  const stack = [];

  for (x of s) {
    if (!isNaN(x)) stack.push(Number(x));
    else {
      rt = stack.pop();
      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하는데 첫번째 나오는걸 rt, 두번째 나오는걸 lt로 지정한다.

연산을 진행하고, 결과값을 stack에 push한다.

이 과정을 반복하면 마지막에는 결과값만 남게된다.