[Swift] 백준 1935 - 후위표기식2

sun02·2021년 11월 11일
0

알고리즘

목록 보기
14/52

문제 링크

후위표기식이란?
: 연산자를 피연산자 뒤에 놓는 표기 방식

예를 들어, 우리는 일반적으로 연산자를 피연산자 사이에 두어 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)
  • 이때 순서를 고려해야하는 -, / 연산에만 stack.removeLast() 값을 상수로 받아 처리해주었다.

0개의 댓글