https://programmers.co.kr/learn/courses/30/lessons/76502?language=swift
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s
가 매개변수로 주어집니다. 이 s
를 왼쪽으로 x (0 ≤ x < (s
의 길이)) 칸만큼 회전시켰을 때 s
가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
let s = "[](){}"
3
func isCorrect(_ s: String) -> Bool {
var queue: [Character] = []
for c in s {
if queue.isEmpty {
queue.append(c)
} else {
guard let last = queue.last else { continue }
switch last {
case "[": if c == "]" { queue.removeLast() } else { queue.append(c) }
case "(": if c == ")" { queue.removeLast() } else { queue.append(c) }
case "{": if c == "}" { queue.removeLast() } else { queue.append(c) }
default: queue.append(c)
}
}
}
return queue.isEmpty
}
func solution(_ s: String) -> Int {
var count = 0
for offset in 0..<s.count {
let startIndex = s.index(s.startIndex, offsetBy: offset)
let str = s[startIndex..<s.endIndex] + s[s.startIndex..<startIndex]
if isCorrect(String(str)) { count += 1 }
}
return count
}