import Foundation
func solution(_ s:String) -> Int{
let sArr: [String] = s.map { String($0) }
var queue = Queue(sArr)
var remains: [String] = []
while true {
if let popStr = queue.pop() {
if let last = remains.last, popStr == last {
remains.removeLast()
} else {
remains.append(popStr)
}
} else {
break
}
}
return remains.isEmpty ? 1 : 0
}
// pop만되는 큐
struct Queue {
private var index = 0
private let strings: [String]
init(_ strings: [String]) {
self.strings = strings
}
mutating func pop() -> String? {
defer {
index += 1
}
if strings.count > index {
return strings[index]
} else {
return nil
}
}
}
처음에는 큐를 사용하지 않고 풀었는데 복잡도에서 실패가 후두두둑...
removeFirst 함수를 쓰지않고 pop만 되는 기본적인 큐를 구현한 후 어렵지 않게 풀었다.