Evaluate Reverse Polish Notation

허크·2023년 8월 30일
0

https://leetcode.com/problems/evaluate-reverse-polish-notation/?envType=study-plan-v2&envId=top-interview-150

150. Evaluate Reverse Polish Notation

⭐ 문제

역폴란드 표기법 으로 표현된 산술식을 나타내는 배열이 주어집니다. 이 식을 계산하고 값을 반환하세요.

  • 연산자는 '+', '-', '*', '/'
  • 각 피연산자는 정수 또는 다른 표현식이 될 수 있음
  • 두 정수 사이의 나눗셈은 버림처리(Trunc)
  • 0으로 나누는 경우는 없음
  • input은 역폴란드 표기법으로 표현된 산술식
  • 답과 중간 계산은 32비트 정수로 나타낼 수 있어야함

🤔 고려해야할 사항

역폴란드 표기법이 뭔지 당황했는데 생각해보니 이번주 인턴쉽 강의 시간에 들었던 방법이었다.

✍️ 의사 코드

  1. 배열을 순회하며 피연산자는 스택에 push
  2. 연산자의 경우는 스택에서 요소를 pop해서 계산

✅ 나의 풀이

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for (String t : tokens) {
            if (!"+-*/".contains(t)) {
                stack.push(Integer.parseInt(t));
            } else {
                int num1 = stack.pop();
                int num2 = stack.pop();
                int temp;
                if (t.equals("+")) {
                    temp = num2 + num1;
                } else if (t.equals("-")) {
                    temp = num2 - num1;
                } else if (t.equals("/")) {
                    temp = num2 / num1;
                } else {
                    temp = num2 * num1;
                }
                stack.push(temp);
            }
        }
        return stack.pop();
    }
}

🖥️ 결과

Runtime 0ms

profile
codestates seb 44th // 다크모드로 보는걸 추천드립니다

0개의 댓글