후위식 연산(postfix) - Node.js

프동프동·2022년 8월 2일
0

알고리즘 - Node.js

목록 보기
72/116
post-thumbnail

후위식 연산(postfix)


문제

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

입력

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

출력

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

입력 예시 1

352+*9-

출력 예시 1

12


해결방법

  1. 후위식 연산
  2. 숫자는 stack에 push
  3. 문자일 경우 stack에 넣지말고 stack에서 뺀 첫번째 값은 RT, 두번째 값은 LT
  4. 결과는 다시 스택에 저장
function solution(sample_data) {
  let answer = 0;
  let stack = [];
  let rt = 0;
  let lt = 0;
  for (let x of sample_data) {
    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 {
        stack.push(lt / rt);
      }
    }
  }
  answer = stack.pop();
  return answer;
}

let sample_data = '352+*9-';
console.log(solution(sample_data));

profile
좋은 개발자가 되고싶은

0개의 댓글