프로그래밍/코딩테스트
[프로그래머스] 올바른 괄호 / Swift
turu
2021. 5. 25. 16:33
[문제 보기]
더보기
- 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
- 제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예"()()" true "(())()" true ")()(" false "(()(" false
https://programmers.co.kr/learn/courses/30/lessons/12909
코딩테스트 연습 - 올바른 괄호
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은
programmers.co.kr
정확성 뿐만 아니라 효율성도 체크하는 문제여서 신기했다.
스택을 사용할 때 실제 값을 계속 넣고 빼는 방식이 아닌 몇개 있는지만 저장하는 방식으로,
그리고 반복문에서 올바른 괄호가 아닌게 확실할 때는 끝까지 계속 판별하지 않도록 했다.
import Foundation
func solution(_ s:String) -> Bool
{
let arr = Array(s)
var ans = true
var stack = 0
for element in arr {
if element == "(" {
stack += 1
} else {
if stack == 0 {
ans = false
break
} else {
stack -= 1
}
}
}
if stack > 0 {
ans = false
}
return ans
}
반응형