Leetcode Java Evaluate Reverse Polish Notation

업데이트:

문제

Link

코드

class Solution {

  public int evalRPN(String[] tokens) {
    Stack<Integer> stack = new Stack<>();
    for (String token : tokens) {
      switch (token) {
        case "+":
          stack.push(stack.pop() + stack.pop());
          break;
        case "-":
          stack.push((-1) * stack.pop() + stack.pop());
          break;
        case "*":
          stack.push(stack.pop() * stack.pop());
          break;
        case "/":
          int n1 = stack.pop(), n2 = stack.pop();
          stack.push(n2 / n1);
          break;
        default:
          stack.push(Integer.parseInt(token));
      }
    }
    return stack.pop();
  }

}

결과

Link

설명

  1. 주어진 문자열 배열 tokens를 이용하여 주어진 숫자와 연산 기호를 이용하여 최종 연산된 값을 구하는 문제이다.
    • 값의 패턴은 숫자1, 숫자2, 연산자1 순으로 들어가서 숫자1 연산자1 숫자2 형식으로 구하면 된다.
    • Ex) [“1”, “2”, “+”] -> $1 + 2 = 3$, [“1”, “2”, “3”, “-“, “+”] -> $1 + (2 - 3) = 0$
  2. 문자열을 순차적으로 넣고 FILO로 추출하기 위해 변수 stack을 정의한다.

  3. 주어진 문자열의 배열 tokens를 반복하여 숫자들의 연산을 수행한다.
    • ”+”, “-“, “*”, “/” 연산자가 나올 경우, stack에 넣은 최근 두 값을 가져와 해당 연산을 수행하여 stack에 다시 넣어준다.
    • 그 외의 문자열은 Integer 형태로 형 변환을 수행하여 stack에 넣어준다.
  4. 반복이 완료되면 stack에 저장된 최종 연산된 값을 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기