Algorithm/basic

Swift - stack

Teol 2023. 11. 3. 00:18

문제 : 스택을 이용하여 괄호의 짝이 맞는지 검사하는 알고리즘을 구현하세요.
예를 들어, "(()())"는 올바른 괄호이지만, "())("는 올바르지 않습니다. 입력은 문자열로 받으며, 출력은 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