[LeetCode/Swift] 20번-Valid Parentheses

kimdocs...📄·2022년 8월 7일

Algorithm

목록 보기
5/6

문제 : https://leetcode.com/problems/valid-parentheses/

0) 해결 결과

Submission link : https://leetcode.com/submissions/detail/766534814/

1) 문제 접근 과정 및 구현 방법

  • 스택을 사용하여 푼다.
    • 열린 괄호이면 스택에 넣고,
    • 닫힌 괄호이면 스택에서 하나를 뽑아 미리 선언해둔 dict의 키로 접근하여 일치할 경우 스택에서 제한다.
    • 일치하지 않을 경우 스택에 push
  • O(n)
  • stack 에 아무것도 남지 않아야 괄호의 짝이 남는것으로 판단하며 stack.isEmpty 를 반환한다.

2) 코드 첨부

class Solution {
    func isValid(_ s: String) -> Bool {
        if s.count % 2 != 0 {
            return false
        }
        
        let arr = s.map { String($0) }
        dump(arr)
        var stack: [String] = []
        
        let dict = [
            "(":")",
            "{":"}",
            "[":"]"
        ]
        
        for a in arr {
            if a == "(" || a == "{" || a == "[" {
                stack.append(a)
                continue
            }
            

            if let last = stack.last,
                dict[last] == a {
                stack.removeLast()
            } else {
                stack.append(a)
            }
            
        }
        return stack.isEmpty
    }
}

3) 어려웠거나 해결하지 못한 부분이 있을때 그에 대한 질문 제시

  • {다른 멤버들과 어려웠던 부분에 대한 힌트, 맞췄지만 다른 해결방방법등에 대하여 질문 할 수 있습니다}
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글