Where who wants to meet someone

올바른 괄호 본문

프로그래머스 알고리즘 문제 기록

올바른 괄호

Lust3r 2024. 5. 1. 14:21
728x90

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=swift

 

프로그래머스

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

programmers.co.kr

 

내 답안 / 다른 사람들의 답안

import Foundation

func solution(_ s:String) -> Bool
{
    var count: Int = 0

    for cha in s {
        if cha == "(" && count >= 0 {
            count += 1
        } else if cha == ")" && count >= 0 {
            count -= 1
        } else {
            return false
        }
    }

    return count == 0 ? true : false
}

- 입력된 각 글자를 비교하는데, count가 0 이상일 때 '('라면 count에 1을 더하고, ')'이면 -1을 빼주는 식으로 체크를 했다. 그렇게 하면 위 조건이 아닐 때('('가 나왔는데 count가 음수인 경우, ')'인데 count가 음수인 경우)를 걸러낼 수 있다.

- 위의 else에 해당하는 조건들은 전부 짝이 맞지 않는 경우이기에 바로 false를 반환한다

- if, else if 조건에 모두 해당하여 for문이 끝났을 때, count 값이 0이라면 짝이 맞으므로 true를, 아니라면 짝이 맞지 않으므로 false를 반환한다.

 

import Foundation

func solution(_ s:String) -> Bool
{
    var ans:Bool = false

    var openCnt: Int = 0, closeCnt: Int = 0

    for ch in s {
        switch ch {
        case "(":
            openCnt += 1
        case ")":
            closeCnt += 1
        default:
            break
        }

        guard openCnt >= closeCnt else {
            break
        }
    }

    ans = openCnt == closeCnt

    return ans
}

 

점수: +3