올바른 괄호

hwakyungChoi·2020년 11월 30일
0

문제 설명

  • 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 ()() 또는 (())() 는 올바른 괄호입니다.
    )()( 또는 (()( 는 올바르지 않은 괄호입니다.
    '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
def solution(s):
    answer = True
    #괄호 두 개의 수를 비교
    count = {"0":0,"1":0}
    #현재 괄호가 어떤 괄호인지
    check = 0
    # 맨 처음 나온 괄호가 닫는 괄호이면 false 리턴
    if s[0] == ")":
        return False
    arr = list(s)
    for i in range(len(arr)):
    	# 닫는 괄호이면 check는 1이며 count["1"]추가
        if arr[i] == ")":
            check  = 1
            count["1"] += 1
            # 만약 닫는 괄호의 수가 여는 괄호의 수보다 크면 False
            if count["0"] - count["1"] < 0:
                return False
        else :
       	   #여는 괄호가 나올 때 check는 0으로 count["0"] 증가
            check = 0
            count["0"] += 1
    # 만약 여는 괄호로 문자가 끝나거나 괄호의 수가 짝지어지지 않을 때 False 리턴
    if check == 0 or count["0"] != count["1"] :
        return False
    return True

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12909#

0개의 댓글