본문 바로가기
Problem Solving

[Swift] 프로그래머스 올바른 괄호(lv. 2)

by DuncanKim 2023. 3. 1.
728x90

[Swift] 프로그래머스 올바른 괄호(lv. 2)

 

1. 문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2. 접근

lv. 2 초반이라 lv. 1보다 쉬운 레벨의 것이 나오기도 한다. 스택의 개념을 잘 생각하면 풀 수 있는 문제이다.

스택으로 해서 직접 괄호를 넣었다 뺐다가 할 수도 있지만, count 개념을 넣어서 할 수도 있다.

 

"(" 가 들어오면 +1을 하고, ")"가 들어오면 -1를 하는 것.

그런데 전체적으로 합쳐지면 ")("도 통과가 될 수도 있기 때문에 )) 와 같은 것을 방지하기 위해서 count가 음수가 되면 false를 리턴하게 하면 예외케이스를 처리할 수 있다. 그리고 count가 0이 아닌 경우, 즉 0 이상인 경우도 false로 처리해야 하기 때문에 마지막 리턴문에서 삼항 연산자로 값을 한 번 더 구분해 주었다.

 

 

3. 코드

import Foundation

func solution(_ s:String) -> Bool {
    var count = 0
    for i in s {
        if i == "(" {
            count += 1
        } else {
            count -= 1
            if count < 0 {
                return false
            }
        }
    }
    return count == 0 ? true : false
}
728x90

댓글