-
[프로그래머스] 올바른 괄호 / Swift프로그래밍/코딩테스트 2021. 5. 25. 16:33
[문제 보기]
더보기- 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
- 제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예"()()" true "(())()" true ")()(" false "(()(" false
https://programmers.co.kr/learn/courses/30/lessons/12909
정확성 뿐만 아니라 효율성도 체크하는 문제여서 신기했다.
스택을 사용할 때 실제 값을 계속 넣고 빼는 방식이 아닌 몇개 있는지만 저장하는 방식으로,
그리고 반복문에서 올바른 괄호가 아닌게 확실할 때는 끝까지 계속 판별하지 않도록 했다.
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 }
반응형'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[2020 카카오 인턴십] 수식 최대화 / Swift (0) 2021.05.29 [프로그래머스] H-Index / Swift (0) 2021.05.25 [프로그래머스] 큰 수 만들기 / Swift (0) 2021.05.25 [프로그래머스] 위장 / Swift (0) 2021.05.22 [프로그래머스] 카펫 / Swift (0) 2021.05.22 - 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어