1067922073249051
Jinil Choi
  • 2016.3.24 20:21
  • 조회수 87
  • 답변수 2
1067922073249051
Jinil Choi
  • 2016.3.24 20:21
  • 조회수 87
  • 답변수 2

너무 어려워요...

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

is_pair.py
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 답변

  • Dbucdlkpqyn7yg1hgsny
    이확영
    • 2016.3.24 21:16

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

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

  • 1067922073249051
    Jinil Choi
    • 2016.3.25 08:18

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

답변 쓰기

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