알고리즘/JAVA

4. 후위식 연산(postfix)

vivi 2021. 9. 23. 01:36
import java.util.*;

class Main {
	public int solution(String str) {
		int answer = 0;
		Stack<Integer> stack = new Stack<>();
		for (char c : str.toCharArray()) {
			int a = 0, b = 0;
			if (c >= '0' && c <= '9') {
				stack.push(Integer.valueOf(c - '0'));
			} else {
				switch (c) {
				case '+':
					stack.push(stack.pop() + stack.pop());
					break;
				case '-':
					a = stack.pop();
					b = stack.pop();
					stack.push(b - a);
					break;
				case '*':
					stack.push(stack.pop() * stack.pop());
					break;
				case '/':
					a = stack.pop();
					b = stack.pop();
					stack.push(b / a);
					break;
				}
			}
		}
		answer = stack.pop();
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.print(T.solution(str));
		kb.close();
	}
}

 

import java.util.*;

class Main {
	public int solution(String str) {
		int answer = 0;
		Stack<Integer> stack = new Stack<>();
		for (char c : str.toCharArray()) {
			if (Character.isDigit(c)) {
				stack.push(Integer.valueOf(c - '0'));
			} else {
				int rt = stack.pop();
				int lt = stack.pop();
				if (c == '+')
					stack.push(rt + lt);
				else if (c == '-')
					stack.push(lt - rt);
				else if (c == '*')
					stack.push(lt * rt);
				else if (c == '/')
					stack.push(lt / rt);
			}
		}
		answer = stack.get(0);
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = kb.next();
		System.out.print(T.solution(str));
		kb.close();
	}
}

 

 

Character.isDigit(c)