반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 프로그래머스(Lv.2) - 올바른 괄호 문제를 풀었습니다.

 


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

    https://programmers.co.kr/learn/courses/30/lessons/12909

     

    코딩테스트 연습 - 올바른 괄호

    괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은

    programmers.co.kr

     


    풀이

    스택 문제의 정석입니다.

     

    "("이 들어오면 append() 해줍니다.

     

    ")"일 때는 두 가지로 나뉘는데요.

    stack의 top이 "("이면 pop을 해주고 ")"이면 잘못된 괄호로 판단합니다.

     

    "()"이 한 쌍이 되어 사라지기 때문에 ")"이 연속으로 들어왔다면 잘못된 괄호이기 때문이죠.

     


    전체 코드

    
          
    import Foundation
    func solution(_ s:String) -> Bool
    {
    var ans:Bool = false
    var stack: [Character] = []
    for letter in s {
    if letter == "(" {
    stack.append(letter)
    } else {
    if let top = stack.last, top == "(" {
    stack.popLast()
    } else {
    return false
    }
    }
    }
    ans = stack.isEmpty
    return ans
    }
    let s = "))(("
    print(solution(s))

    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

     

    반응형
    유정주