문제 해설
- 그림때문에 복잡하다고 느껴졌는데 생각보다 단순하게 해결이 가능하다. () 레이저를 다른 문자로 대체해주고 ‘(‘ 값과 ‘)’ 값만 비교해주면 된다.
- ’-‘ 레이저를 만나면 stack에 들어있는 파이프 갯수만큼 + 시켜주고 ‘)’ 파이프가 끝나면 막대기 갯수를 +1 해주면서 stack에서 하나 빼주면된다.
func solution(_ arrangement:String) -> Int {
let str = arrangement.replacingOccurrences(of: "()", with: "-")
let arr = Array(str)
var stack: [Int] = []
var sum = 0
for i in 0..<arr.count {
if arr[i] == "-" {
sum += stack.count
} else if arr[i] == "(" { //(
stack.append(0)
} else { //)
sum += 1
stack.removeFirst()
}
}
return sum
}