코드
func solution(_ s:String) -> Int {
var str = Array(s)
var answer = 0
func check(_ array:Array<Character>) -> Bool {
var checkArray = [Character]()
let braces: [Character:Character] = ["{":"}", "[":"]", "(":")"]
for i in array {
if !checkArray.isEmpty && braces[checkArray.last!] == i {
checkArray.removeLast()
} else {
checkArray.append(i)
}
}
return checkArray.isEmpty
}
for _ in str {
str.append(str.removeFirst())
if check(str) {
answer += 1
}
}
return answer
}
회고
- check 함수를 만들어서 검사할 생각을 못해 구글링을 하여 참고하였다
- array에 array.append(array.removeFirst())를 하면 젤 앞의 원소가 빠지면서 뒤로 추가되는 것을 알게 되었다