문제 : 스택을 이용하여 괄호의 짝이 맞는지 검사하는 알고리즘을 구현하세요.
예를 들어, "(()())"는 올바른 괄호이지만, "())("는 올바르지 않습니다. 입력은 문자열로 받으며, 출력은 Bool 타입으로 반환하세요.
func checkParentheses(_ input: String) -> Bool {
var stack: [Character] = []
for char in input {
if char == "(" || char == "{" || char == "["{
stack.append(char)
} else if char == ")" || char == "}" || char == "]"{
if stack.isEmpty {
return false
}
let top = stack.popLast()
if (char == ")" && top != "(") || (char == "}" && top != "{") || (char == "]" && top != "[") {
return false
}
}
}
return stack.isEmpty
}
print( checkParentheses("()()") )
print( checkParentheses("({[}])") )
print( checkParentheses("())(") )
print( checkParentheses("({}[()]())") )
'Algorithm > basic' 카테고리의 다른 글
Swift - 타입별칭 (0) | 2023.12.05 |
---|---|
Swift - 재귀함수 (0) | 2023.11.05 |
Swift - Array (1) | 2023.11.02 |
Swift - class (0) | 2023.11.02 |
Swift - 함수 (0) | 2023.11.01 |