[알고리즘]section 6-4_후위식(postfix) 연산

Yul·2022년 5월 11일
0

Algorithm

목록 보기
4/9

문제

후위식 연산(postfix)

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

  • 입력예제
    352+*9-

  • 출력예제
    12

문제풀이


1. if문 조건문에서 !isNaN(x)로 숫자면 참이되도록 한다.
2. 조건문이 참이면 스택에 push()해주는데 현재 요소가 string값이므로 Number()를 이용해 숫자로 변환해서 넣어준다.
3. 연산자일 경우(else) rt와 lt 변수를 지정해서 pop()으로 값을 꺼내준다.
4. if조건문으로 연산자 각각의 조건문을 걸어서 연산해준 후 스택에 push().
5. 스택에 남는 값이 최종 값이다.

코드

function solution(a) {
  let answer;
  let stack = [];

  for(let x of a){
    if(!isNaN(x)) stack.push(Number(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);
    }
  }
  answer = stack[0]
  return answer;
}
let a="352+*9-";
console.log(solution(a));

노트

lt와 rt값의 순서를 헷갈리지 않도록 한다.

출처: https://inf.run/CPjy

profile
자바스크립트 도장깨기👊

0개의 댓글