문제
설명
후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.
입력
첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.
식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.
출력
연산한 결과를 출력합니다.
선생님 풀이
import java.util.Scanner;
import java.util.Stack;
public class Main5_4 {
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);
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) {
Main5_4 T = new Main5_4();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.Solution(str));
}
}
자바 char에서 int로 형변환 하는 법 !! 아스키코드상 숫자를 활용한다
숫자 0은 아스키코드 48의 값을 갖기 때문에 특성 숫자값이 '3'처럼 문자로 입력됐을 경우 x-48을 해주면 숫자 3의 값으로 다룰 수 있다 !!
추가로 대문자 A-Z는 아스키코드 65-90, 소문자 a-z는 아스키코드 97-122의 값을 갖는다는 것도 알아두자
결과
'Algorithm > Inflearn' 카테고리의 다른 글
[Inflearn] 자바 알고리즘 문제풀이 #05-06 6. 공주 구하기(queue) (0) | 2023.01.24 |
---|---|
[Inflearn] 자바 알고리즘 문제풀이 #05-05 5. 쇠막대기 (0) | 2023.01.22 |
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - Sorting in Java (1) | 2023.01.17 |
[Inflearn] 영리한 프로그래밍을 위한 알고리즘 - Comparison sort와 Non-comparison sort (1) | 2023.01.16 |
[Inflearn] 자바 알고리즘 문제풀이 #05-03 3. 크레인 인형뽑기(카카오) (0) | 2023.01.16 |