후위표기식이란?
: 연산자를 피연산자 뒤에 놓는 표기 방식
예를 들어, 우리는 일반적으로 연산자를 피연산자 사이에 두어 1+2 = 3 과 같이 표기하지만 (중위표기식)
컴퓨터에게는 12+ 와 같은 후위표기식이 더 이해하기 편하다.
스택을 이용하여 간단하게 풀이할 수 있다.
import Foundation
let n = Int(readLine()!)!
let line = readLine()!
var stack = [Double]()
var numArray = [Double]()
for _ in 0..<n {
let num = Double(readLine()!)!
numArray.append(num)
}
for char in line {
if char == "+" {
stack.append(stack.removeLast()+stack.removeLast())
} else if char == "-" {
let f = stack.removeLast()
let s = stack.removeLast()
stack.append(s - f)
} else if char == "/" {
let first = stack.removeLast()
let second = stack.removeLast()
stack.append(second/first)
} else if char == "*" {
stack.append(stack.removeLast()*stack.removeLast())
} else {
let a = char.asciiValue! - 65
stack.append(numArray[Int(a)])
}
}
let ans = String(format: "%.2f", stack[0])
print(ans)