후위식 연산(postfix)

heejung·2022년 1월 11일
0

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

▣ 입력설명

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

▣ 출력설명

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

▣ 입력예제 1

352+*9-

▣ 출력예제 1

12

문제 풀이

  1. 숫자면 stack에 넣는다.
  2. 연산자를 만나면 연산자 앞 두개의 숫자와 연산해야함
    2-1. right = 첫번째로 pop한 숫자
    2-2. left = 두번째로 pop한 숫자
  3. 연산자별로 계산식 분기
  4. stack에 남은 숫자 반환

처음에는 숫자인지 판별하는 걸 x>0 && x<10 이렇게 썼는데 isNaN을 이용하면 된다는 걸 알았다..

function solution(str) {
    let stack = [];
    for (let x of str) {
        if (!isNaN(x)) {
            stack.push(+x); //숫자로 넣어줌
        } else {
            let right = stack.pop();
            let left = stack.pop();
            if (x === '+') stack.push(left + right);
            if (x === '-') stack.push(left - right);
            if (x === '*') stack.push(left * right);
            if (x === '/') stack.push(left / right);
        }
    }
    return stack[0];
}
solution('352+*9-');

profile
프론트엔드 공부 기록

0개의 댓글