2017 Java Chapter 20 (Week 16)

From: 2017-09-01 00:00:00 To: 2017-12-31 23:59:59 Now: 2024-11-23 18:32:35 Status: Public

D - 후위 표기법

Time Limit: 1s Memory Limit: 128MB

Submissions: 53 Solved: 15
Description

후위 표기법은 괄호를 사용하지 않는 수식 표현 방법이다.  1+2를 하고 그 결과에 *3을 하고자 한다면 괄호를 사용해 (1 + 2) * 3 와 같이 수식으로 표현하는데, 후위 표기법에서는 스택을 이용해 괄호 없이도 1+2 계산이 *3보다 먼저 이루어 지게 할 수 있다. 후위 표기법에서 수식을 계산하는 방법은 수식에서 왼쪽에서 오른쪽으로 순차적으로 읽으면서 다음을 반복한다.

  • 숫자일 경우 스택에 집어 넣는다
  • 연산자일 경우 스택에서 2개의 숫자를 빼 연산을 수행한후, 그 결과를 다시 스택에 집어 넣는다. 

(1+2)*3을 후위 표기법으로 변경하면 1 2 + 3 * 로 하면된다. 여러분은 후위 표기법으로 표현된 수식을 읽어 들여 그 계산결과를 출력하는 프로그램을 작성해야 한다.

 

(Postfix notation) Postfix notation is a way of writing expressions without using parentheses. For example, the expression (1 + 2) * 3 would be written as 1 2 + 3 *. A postfix expression is evaluated using a stack. Scan a postfix expression from left to right. A variable or constant is pushed into the stack. When an operator is encountered, apply the operator with the top two operands in the stack and replace the two operands with the result. The following diagram shows how to evaluate 1 2 + 3 *.

Write a program to evaluate postfix expressions. 

Input

* Line 1 : 수식의 개수 N (1~1,000 범위의 정수) 

* Line 2~N+1 : 공백으로 구분된 수식 (상수는 -1000~1000범위의 정수, 계산 도중 int의 범위를 넘지 않음)

 

Output

* Line 1~N : 계산된 값. 만약 값을 계산 할 수 없다면 Wrong expression을 출력

 

Sample Input
3
1 2 +
1 2 + 3 *
1 2 1 /
Sample Output
3
9
Wrong expression
Source

JAVA2015 PE20.14