Swift랑 친해지기/programmers 풀기

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

데브킹덕 2022. 9. 19. 18:17

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

 

프로그래머스

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

programmers.co.kr

 

 

풀이방법

1. sArray 상수 생성 .map메서드를 이용해 s매개변수를 매핑 하여 문자열 배열을 만든 뒤 각 인덱스에 접근 할 수 있도록하였다. 

let sArray = s.map({String($0)})

 

2. sArray의 각 인덱스에 접근하여 "(" 이거나 ")" 일 경우 갯수를 카운팅할 수 있도록 변수를 선언해줌

	var leftBracket = 0
	var rightBracket = 0

3. 첫글자가")" 이거나 마지막 글자가 "(" 면 false를 반환해야한다.

EX) ")()()("

if sArray[0] == ")" || sArray[sArray.count-1] == "("{
        return ans
    }

 

4. ")"의 갯수가 "("의 갯수가보다 많아지는 순간 그것은 false로 반환해야한다 

Ex) " ())(()"

 for i in 0..<sArray.count{
        if sArray[i] == "("{
            leftBracket += 1
        }else{
            rightBracket += 1
        }
        if leftBracket < rightBracket{
            return false
        }
    }

5.  "("의 갯수와 ")"의 갯수가 총 같아야함

EX) "()())"

 

if leftBracket == rightBracket{
        return true
    }

내 풀이 코드

import Foundation

func solution(_ s:String) -> Bool
{
    let ans:Bool = false
    
    let sArray = s.map({String($0)})
    
    var leftBracket = 0
    var rightBracket = 0
    
    if sArray[0] == ")" || sArray[sArray.count-1] == "("{
        return ans
    }
    
    for i in 0..<sArray.count{
        if sArray[i] == "("{
            leftBracket += 1
        }else{
            rightBracket += 1
        }
        if leftBracket < rightBracket{
            return false
        }
    }
    if leftBracket == rightBracket{
        return true
    }
    return ans
}