문제
후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.
▣ 입력설명
첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.
식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.
▣ 출력설명
연산한 결과를 출력합니다.
▣ 입력예제 1
352+*9-
▣ 출력예제 1
12
풀이
후위식 연산은 일반 연산과 달리 연산자가 숫자 뒤에 붙는 식이다.
예를 들어 2+3 이 23+ 로 표현된다.
스택 pop을 할때 뒤에있는 숫자가 먼저 나오기 때문에 절댓값 처리를 해줘야 한다~
코드
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next(); //후위연산식
Stack<Integer> num = new Stack<>();
for(char c : s.toCharArray()) {
if(Character.isDigit(c)) {
num.push(Character.getNumericValue(c));
}
else {
switch(c) {
case '+': num.push(num.pop() + num.pop()); break;
case '-': num.push(Math.abs(num.pop() - num.pop())); break;
case '*': num.push(num.pop() * num.pop()); break;
case '/': num.push(num.pop() / num.pop()); break;
}
}
}
System.out.print(num.pop());
}
}
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - Stack & Queue 6. 공주 구하기 (0) | 2022.11.09 |
---|---|
[PS] 인프런 강의 - Stack & Queue 5. 쇠막대기 (0) | 2022.11.08 |
[PS] 인프런 강의 - Stack & Queue 3. 크레인 인형뽑기(카카오) (0) | 2022.11.08 |
[PS] 인프런 강의 - Stack & Queue 2. 괄호문자제거 (0) | 2022.11.06 |
[PS] 인프런 강의 - Stack & Queue 1. 올바른 괄호 (0) | 2022.11.05 |