import java.util.Scanner;
import java.util.Stack;
public class Main {
public int solution(String str) {
int ans = 0;
Stack<Integer> stk = new Stack<>();
for(char x : str.toCharArray()) {
if(Character.isDigit(x)) stk.push(x-48);
else {
int rt = stk.pop();
int lt = stk.pop();
if(x == '+') stk.push((lt) + (rt));
else if(x == '-') stk.push((lt) - (rt));
else if(x == '*') stk.push((lt) * (rt));
else if(x == '/') stk.push((lt) / (rt));
}
}
ans = stk.get(0);
return ans;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
- 후위연산식 str의 앞부터 for-each 반복문
- Character x 가 숫자일 경우
- x-48 (Stack<Integer> stk 이므로) 하여 push
- Character x 가 숫자가 아닐 경우
- 두 개를 pop 해 순서대로 rt, lt에 할당
- 사칙연산 기호 x 에 맞게 연산
'[Solved] > 코딩테스트' 카테고리의 다른 글
섬나라 아일랜드 (BFS, DFS) (0) | 2023.03.30 |
---|---|
토마토(BFS 활용) (0) | 2023.03.29 |
임시반장 정하기 문제 (0) | 2023.03.17 |
Least Recently Used (0) | 2023.03.14 |
쇠막대기 절단 문제 (Stack) (0) | 2023.03.13 |