문제 풀이 (JAVA)

import java.util.*;
public class part5_4 {

	public static void main(String[] args) {
		// 후위식 연산(postfix)
		Scanner input = new Scanner(System.in);
		
		String a = input.nextLine();
		int answer = solution(a);
		System.out.print(answer);
	}
	private static int solution(String a) {
		int result=0;
		Stack<Integer> stack = new Stack<>();
		int sum=0;
		int num1=0 , num2=0;
		for(Character ch : a.toCharArray()) {
			if(Character.isDigit(ch) == true) {
				stack.push(Character.getNumericValue(ch));
			}else {
				if(ch == '+') {
					num1= stack.pop(); 
					num2= stack.pop();
					sum =(num2 + num1);
					stack.push(sum);
				}else if(ch == '-') {
					num1= stack.pop();
					num2= stack.pop();
					sum =(num2 - num1);
					stack.push(sum);
				}else if(ch == '*') {
					num1= stack.pop();
					num2= stack.pop();
					sum =(num2 * num1);
					stack.push(sum);
				}else if(ch == '/') {
					num1= stack.pop();
					num2= stack.pop();
					sum =(num2 / num1);
					stack.push(sum);
				}
			}
		}
		result = stack.pop();		
		return result;
	}
}

주요 핵심 포인트

1. 숫자를 만날 시 스택에 추가한다.

2. 연산식을 만날 시 스택에서 두 개의 값을 추출하여 해당 연산자로 연산 후 다시 스택에 넣는다.

3. 1-2번을 반복한다.

 

개선해야할 사항

1. 후위식을 스택으로 풀 수 있을 줄은 몰랐다. 후위식이 어떻게 이루어져 있는지 다시 한번 개념을 찾아 보고 나서 풀 수 있었던 문제이다. 다음부터는 후위식의 풀이식을 자연스럽게 생각하도록 해보자.

+ Recent posts