본문 바로가기
알고리즘 문제풀이/인프런

[알고리즘] 5-4 후위식 연산(postfix) - Stack (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 6. 2.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의 수강 후 복습 풀이 코드를 정리하고 있습니다.

예습 풀이

  • Stack 자료구조를 사용
  • 숫자면 스택에 넣고, 연산자면 스택에서 두 개를 꺼내서 연산하고 연산 결과를 스택에 넣는다
package inflearn.stack_queue;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

//후위식 연산(postfix)
public class Main5_4 {

    public static int solutino(String s) {
        Stack<Integer> stack = new Stack<>();
        int answer = 0;

        for (char c : s.toCharArray()) {

            if (Character.isDigit(c)) {
                stack.push(Character.getNumericValue(c));
            } else {
                int num1 = stack.pop();
                int num2 = stack.pop();

                if (c == '+')
                    stack.push(num2 + num1);
                else if (c == '-')
                    stack.push(num2 - num1);
                else if (c == '*')
                    stack.push(num2 * num1);
                else
                    stack.push(num2 / num1);
            }
        }

        return stack.pop();
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println(solutino(br.readLine()));
    }
}

복습 풀이

  • 예습 풀이와 강의에서의 풀이 방식이 동일하여 복습 풀이 생략

댓글