728x90

 

문제풀이

해당 문제는 문자열로 한줄을 받아서 for loop 을 돌아 하나씩 문자열을 확인 한다.

해당 문자열이 숫자면 스택에 push 하고 연산자를 만나면 스택에서 두개의 숫자를 pop 한다.

 

처음 꺼낸 숫자가 변수 lt 두번째 꺼낸숫자를 rt 라고 하겠다. 왼쪽과 오른쪽의 순서도 중요하다 나누기나 빼기에서 값이 달라질 수 있음

그런다음 switch case 문을 통하여 연산해주면된다.

 

function solution(problem) {
  const stack = [];
  for (x of problem) {
    if (Number.isInteger(+x)) stack.push(+x);
    else {
      const rt = stack.pop();
      const lt = stack.pop();
      switch (x) {
        case "+":
          stack.push(lt + rt);
          break;
        case "-":
          stack.push(lt - rt);
          break;
        case "*":
          stack.push(lt * rt);
          break;
        case "/":
          stack.push(lt / rt);
          break;
        default:
          break;
      }
    }
  }

  return stack[0];
}

const problem = "352+*9-";
console.log(solution(problem));

 

 

 

https://github.com/JongyunHa/algorithm-levelup/commit/9129e33c18992afc3d0ecf847217db9b74088d92#diff-eccce9059f08eda4f35a61b7a08f61f2311961976932052710bb4bccbbb6eec3

 

후위연산자 연산 스택 · JongyunHa/algorithm-levelup@9129e33

Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Browse files 후위연산자 연산 스택 Loading branch information Showing 2 changed files with 35 additions and 4 deletions. +31

github.com

 

728x90