(Swift) LeetCode 20. Valid Parentheses

SteadySlower·2024년 10월 15일
0

Coding Test

목록 보기
302/305

LeetCode - The World's Leading Online Programming Learning Platform

문제 풀이 아이디어

백준 포스팅프로그래머스 포스팅에서 모두 풀어봤던 문제이다. 다만 차이는 괄호의 종류가 3종류라는 것이다. 괄호의 종류만 매칭하는 부분은 Array의 firstIndex를 사용했다.

코드

class Solution {
    func isValid(_ s: String) -> Bool {
        // 열린 괄호와 닫힌 괄호 정의
        let open = ["(", "{", "["]
        let closed = [")", "}", "]"]
        
        // 반복문에 사용할 수 있게 [String]으로 바꾸기
        var strings = s.map { String($0) }
        
        // stack 구현
        var stack = [String]()
        
        for s in strings {
            // 열린 괄호의 경우 stack에 push
            if open.contains(s) {
                stack.append(s)
                continue
            }
            
            // 닫힌 괄호의 경우 stack에서 pop한 괄호와 짝이 맞는지 확인
            guard let pop = stack.popLast() else { return false }
            if open.firstIndex(of: pop)! != closed.firstIndex(of: s)! { return false }
        }
        
        // stack에 더 이상 열린 괄호가 없을 때 true 리턴
        return stack.isEmpty
    }
}
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글