[2408] 괄호의 값

toru·2022년 10월 2일
0
 1. 괄호를 열 때 해당 수를 곱한다.
 2. 쌍을 이루지 않으면 탈출 
 3. 직전에 쌍을 이루는 괄호에서 누적 값을 더해간다.
let str = readLine()!.map{$0}
var stack = [Character]()
var temp = 1
var result = 0

for i in 0..<str.count {    
    switch str[i] {
    case "(":
        stack.append("(")
        temp *= 2
    case "[":
        stack.append("[")
        temp *= 3
    case ")":
        if !stack.isEmpty, stack.last! == "[" {
            result = 0
            break
        }
        if str[i-1] == "(" {
            result += temp
        }
        stack.removeLast()
        temp /= 2
    default :
        if !stack.isEmpty, stack.last! == "(" {
            result = 0
            break
        }
        if str[i-1] == "[" {
            result += temp
        }
        stack.removeLast()
        temp /= 3
    }
}
print(result)
profile
iOS

0개의 댓글