Jinil Choi

너무 어려워요...

죄송한데요..너무 어려워요..
정답 알려주시면 안될까요?..
부탁드려요.

작성중인 코드
def is_pair(s):
    brace_list=[]
    ret_str = True
    left=0
    right=0

    for i in range(len(s)):
        if s[i] == "(" or s[i] == ")":
            brace_list.append(s[i])  

    #print(brace_list)     


    for i in range(len(brace_list)):
        #print(brace_list[i])

        if i == 0 :
            if brace_list[i] == "(" :
                left = left + 1
            elif brace_list[i] == ")" and brace_list[i+1] == "(" :
                return False

        if i > 0 : 
            if brace_list[i-1] == "(" and brace_list[i] == "(" :
                left = left + 1
            elif brace_list[i-1] == ")" and brace_list[i] == "(" :
                if left == right :
                    ret_str = True
                    left = left + 1
                else :
                    return False
            else : 
                right = right + 1       


    print("left is {}, right is {}".format(left, right))
    return ret_str

print(is_pair("(((()))))("))
2 개의 답변
이확영

제가 해결한 방법을 간단히 말씀드리면...

n이라는 변수를 0으로 초기화한 후 문자를 하나씩 체크하면서 좌괄호가 나오면 +1, 우괄호가 나오면 -1을 해서 최종 결과가 0이면 is_pair가 True이고, 0이 아니면 False를 리턴하도록 했어요. 여기서 주의할 점은 )(와 같이 개수는 동일하지만 순서가 반대일 수도 있으니 중간에 음수가 되면 False를 리턴해야합니다.
혹시 코드가 궁금하시면 댓글 남겨주세요 ^

Jinil Choi

ㅋㅋ. 감사합니다. 일단 함 해보죠..

답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.