# 문제 설명
- 숫자가 일의자리 숫자가 아닐 수 있음
s + "+"
를 순회함으로써 마지막 연산자까지 처리할 수 있음Character
타입의wholeNumberValue
로 숫자 얻어낼 수 있음- 10을 곱해줘서 자릿수 계산까지 할 수 있음.
class Solution {
func calculate(_ s: String) -> Int {
var rhs = 0
var op: Character = " "
var operandStack: [Int] = []
for char in s + "+" {
if char == " " { continue }
if char.isNumber {
rhs = 10 * rhs + char.wholeNumberValue!
} else {
switch op {
case "*":
let lhs = operandStack.removeLast()
operandStack.append(lhs * rhs)
case "/":
let lhs = operandStack.removeLast()
operandStack.append(lhs / rhs)
case "-":
operandStack.append(-rhs)
default:
operandStack.append(rhs)
}
rhs = 0
op = char
}
}
var sum = 0
while !operandStack.isEmpty {
sum += operandStack.last!
_ = operandStack.removeLast()
}
return sum
}
}