문제 링크 : https://www.acmicpc.net/problem/1918

문제 해설
중위 표기식을 후위 표기식으로 변경하는 문제입니다.
중위 표기식을 후위 표기식으로 변경하는 절차를 조건문으로 작성하는 것이 정답입니다.
- 피연산자는 바로 출력합니다.(코드에서는 String var에 추가하였습니다.)
- 연산자는 스택에 push합니다.("+", "-", "*", "/" 등)
- 여는 괄호는 무조건 push합니다. "("
- 닫는 괄호가 나오면 여는 괄호를 만날 때까지 스택에서 pop합니다.(주의: "(" 여는 괄호도 제거해야 합니다.)
- 수식이 끝나면 스택에 남은 연산자를 pop합니다.
코드
더보기
import Foundation
let input = readLine()!.map{ String($0) }
var result = ""
var stack = [String]()
for i in input {
if i == "+" || i == "-" || i == "*" || i == "/" || i == "(" || i == ")" {
if stack.isEmpty {
stack.append(i)
} else {
if i == "(" {
stack.append(i)
} else if i == ")" {
while stack.last != "(" {
result += stack.removeLast()
}
stack.removeLast()
} else if i == "*" || i == "/" {
while stack.last == "*" || stack.last == "/" {
result += stack.removeLast()
}
stack.append(i)
} else {
while stack.last == "+" || stack.last == "-" || stack.last == "*" || stack.last == "/" {
result += stack.removeLast()
}
stack.append(i)
}
}
} else {
result += i
}
}
while !stack.isEmpty {
result += stack.removeLast()
}
print(result)