[스택] 후위식 연산 (postfix)

HYl·2022년 4월 21일

문제 설명

후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3(5+2)-9 을 후위연산식으로 표현하면 352+9- 로 표현되며 그 결과는 12입니다.

입력 설명

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

  • 352+*9-

출력 설명

연산한 결과를 출력합니다.

  • 12

풀이 과정

  1. 숫자를 만나면 stack에 push
  2. 연산자를 만나면 stack의 숫자 중 2개를 pop 한다. (첫 번째 pop: 연산자의 오른쪽 , 두 번째 pop: 연산자의 왼쪽)
  3. 첫 번째 pop, 연산자, 두 번째 pop 을 계산한다.
  4. 3번의 연산 결과를 stack에 push

나의 풀이 코드

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

  for(let x of s) {
    if (Number(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)
      }
    }
  }

  return stack.join('');
}

console.log(solution('352+*9-'));
profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글