-
백준 1935 후위 표기식2 (Java)알고리즘 타파/Baekjoon Online Judge 2020. 5. 27. 22:38반응형
URL
https://www.acmicpc.net/problem/1935
문제
후위 표기식과 각 피연산자에 대응하는 값들이 주어져 있을 때, 그 식을 계산하는 프로그램을 작성하시오.
입력
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이는 100을 넘지 않는다) 그리고 셋째 줄부터 N+2번째 줄까지는 각 피연산자에 대응하는 값이 주어진다. (3번째 줄에는 A에 해당하는 값, 4번째 줄에는 B에 해당하는값 , 5번째 줄에는 C ...이 주어진다, 그리고 피연산자에 대응 하는 값은 정수이다)
출력
계산 결과를 소숫점 둘째 자리까지 출력한다.
성공 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); Stack<Double> stack = new Stack<>(); int operandCount = Integer.parseInt(br.readLine()); double[] number = new double[27]; String line = br.readLine(); for (int i=0; i<operandCount; i++) { int input = Integer.parseInt(br.readLine()); number[i] = (float)input; } for (int i=0; i<line.length(); i++) { int code = (int)line.charAt(i); if(code >= 65 && code <= 90) { stack.push(number[code-65]); } else { double num1 = stack.pop(); double num2 = stack.pop(); double result = 0; switch (code) { case 42: result = num2*num1; break; case 43: result = num2+num1; break; case 47: result = num2/num1; break; case 45: result = num2-num1; break; } stack.push(result); } } System.out.printf("%.2f", stack.pop()); } }
반응형'알고리즘 타파 > Baekjoon Online Judge' 카테고리의 다른 글
백준 10808 알파벳 개수 (Java) (0) 2020.05.27 백준 1918 후위 표기식 (Java) (0) 2020.05.27 백준 17299 오등큰수 (Java) (0) 2020.05.24 백준 17298 오큰수 (Java) (0) 2020.05.24 백준 10799 쇠막대기 (Java) (0) 2020.05.24