def isParentheses(a): # 괄호는 무조건 (로 시작한다. if a[0] != "(": return False
# ( 개수 leftCnt = 0 # ) 개수 rightCnt = 0
# (과 )의 개수를 세면서, )의 개수가 더 커지는 순간 괄호의 요건에서 어긋나므로 False 반환하고 종료한다. # 무사히 끝까지 통과하면 올바른 괄호이다. for i in a: if i == "(": leftCnt += 1 else: rightCnt += 1 if rightCnt > leftCnt: return False return True
if isParentheses(n) == True: print("YES") else: print("NO") |
이 문제는 Python 100제에 나온 것인데,
해답에는 "(" 괄호를 새로운 리스트에 추가하며,
")" 괄호가 나올 때 마다 크기를 비교하고,
그 때 리스트의 크기가 0이면(즉 좌괄호 가 없는데 우괄호가 나온것이면),
잘못된 괄호 문자열로 판단한다.
그것을 크기 비교 형태로 새로운 리스트 없이 구현한 것이다.