Data Structure & Algorithm

[알고리즘-JS] 스택(stack) - 후위식 연산

fnow 2022. 5. 4. 16:49
반응형

문제

후위 연산식이 주어지면 계산한 값을 출력하시오.

식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어집니다.

98+2*1-6+은 (8+9)*2-1+6와 같다.

 

입력 예제

98+2*1-6+

 

출력 예제

39

 

 

풀이

function solution(s) {
  let answer = 0;
  let stack = [];
  
  for (let x of s) {
    // 숫자일 경우
    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;
}

 

반응형