알고리즘 연습 [괄호 확인하기]

괄호 확인하기

문제

is_pair함수는 문자열 s를 매개변수로 입력받습니다.
s에 괄호가 알맞게 짝지어져 있으면 True를 아니면 False를 리턴하는 함수를 완성하세요.
예를들어 s가 (hello)()면 True이고, )(이면 False입니다.
s가 빈 문자열("")인 경우는 없습니다.

나의 풀이

def is_pair(s):
    return s.count('(') == s.count(')') and s.rfind('(') < s.rfind(')') and s.find('(') < s.find(')')

통과했는데 문제는 "() )( ()" 이런 경우도 True로 처리한다.

다른 풀이

def is_pair(s):
    result = 0
    for i in range(len(s)):
        if s[i] == '(':
            result += 1
        if s[i] == ')':
            result -= 1
        if result < 0 : return False
    return result == 0

이런 식으로 풀어야 "() )( ()" 경우도 False 처리