숫자 만나면 push()하고 연산자 만나면 pop()
import java.util.*;
public class Main {
public int solution(String str) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (char x : str.toCharArray()) {
if(Character.isDigit(x)) stack.push(x-48); // '5'-48을 해야 진짜 숫자 5가 나옴 ,'0'아스키코드는 48
else{
int rt=stack.pop();
int lt=stack.pop();
if(x=='+') stack.push(lt + rt);
else if(x =='-') stack.push(lt - rt);
else if(x =='*') stack.push(lt * rt);
else if(x =='/') 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.println(T.solution(str));
}
}
'Algorithm > 문제' 카테고리의 다른 글
41. 공주 구하기 (2) | 2023.10.10 |
---|---|
40. 쇠막대기 (1) | 2023.10.10 |
38. 크레인 인형뽑기 (카카오) (0) | 2023.09.25 |
37. 괄호 문자 제거 (0) | 2023.09.20 |
36. 올바른 괄호 (Stack) (0) | 2023.09.11 |