코드
import java.util.*;
//후위연산
class 후위연산_ {
public static void main(String[] args){
String str = "573*+5-323*++";
int answer=0;
Stack<Integer> stack = new Stack<Integer>();
for(char cha : str.toCharArray()) {
int lt = 0;
int rt = 0;
if(!Character.isDigit(cha)) {
// if(cha =='+'||cha =='-'||cha =='/'||cha =='*') {
rt = stack.pop();
lt = stack.pop();
answer = cha=='+'? Integer.sum(lt, rt)
:cha=='-'? Math.subtractExact(lt, rt)
:cha=='/'? Math.floorDiv(lt, rt)
: Math.multiplyExact(lt, rt);
stack.push(answer);
}else {
System.out.println("char:"+cha + " char아스키:"+ Integer.valueOf(cha));
stack.push(cha-'0');
// char형 숫자에 '0'을 빼면 우리가 생각하는 숫자(int)가 된다.
// -48도 가능하다.
}
}
System.out.println("char: 0 char아스키:"+ Integer.valueOf('0'));
System.out.println(answer);
}
}
결과
char:5 char아스키:53
char:7 char아스키:55
char:3 char아스키:51
char:5 char아스키:53
char:3 char아스키:51
char:2 char아스키:50
char:3 char아스키:51
char: 0 char아스키:48
30
'자료구조&알고리즘 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비' 카테고리의 다른 글
삽입정렬 (0) | 2022.12.03 |
---|---|
선택정렬 (0) | 2022.12.02 |
모든 아나그램 찾기 (0) | 2022.11.30 |
K번째 큰 수 (0) | 2022.11.27 |
연속된 자연수의 합 (0) | 2022.11.25 |