https://programmers.co.kr/learn/courses/30/lessons/12909
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
'(' 또는 ')' 로만 이루어진 문자열 s
가 주어졌을 때, 문자열 s
가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
입출력 예
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
올바른 괄호의 조건을 생각해봤습니다.
'('
의 개수와 ')'
의 개수가 같아야 합니다.'('
의 개수가 ')'
보다 항상 같거나 많아야 합니다.제가 떠올린 올바른 괄호의 조건은 위와 같았습니다.
우선 문자열을 앞부터 검사하여'('
의 경우 left_count
를 ')'
의 경우 right_count
를 증가시킵니다.
right_count
가 left_count
보다 커지는 순간 올바른 괄호가 아니므로 False를 반환합니다.
위 조건을 만족하는 경우 left_count
와 right_count
가 같다면 올바른 괄호 아니라면 올바른 괄호가 아닙니다.
def solution(s):
left_count = 0
right_count = 0
for c in s:
if c == "(":
left_count += 1
else:
right_count += 1
if right_count > left_count:
return False
return True if left_count == right_count else False