티스토리 뷰

알고리즘/코딩테스트 공부

6-4 후위식 연산(postfix)(스택)

YG - 96년생 , 강아지 있음, 개발자 희망 2021. 12. 10. 13:06

문제

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

풀이

function solution(s) {
  let answer;
  let stack = [];
  for (let x of s) {
    if (!isNaN(x)) stack.push(+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);
    }

    // console.log(stack);
  }
  //console.log(stack);
  answer = stack[0];
  return answer;
}

let str = "352+*9-";
console.log(solution(str));

isNaN 으로 넘버인지 확인한 후 pop 과 push로 문제를 풀었습니다.

 

후위식 연산에 대해 공부하게 되었습니다.

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함