본문 바로가기

코딩테스트

올바른 괄호

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항
  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

 

def solution(s):

    answer = True

    if s[0]==")" or s[-1]=="(":

        answer=False

    else:

        cntL=0

        cntR=0

        

        for i in range(len(s)):

            if s[i]=="(":

                cntL=cntL+1

            else:

                cntR=cntR+1

                    

            if cntL<cntR:

                answer=False

                break

            else:

                answer=True

                break

              

 

    return answer

 

 

  1. else 절의 break 문이 루프를 너무 일찍 종료시킵니다. 이 break 문은 if cntL<cntR: 조건 내부에만 있어야 하며, else 절에는 있으면 안 됩니다. 그렇지 않으면 루프가 첫 번째 반복 후에 항상 종료됩니다.
  2. cntL과 cntR의 최종 비교가 루프 외부에 있어야 합니다. 이는 모든 문자를 확인한 후에 왼쪽 괄호와 오른쪽 괄호의 수가 같은지 확인하기 위함입니다.

 

 

def solution(s):
    answer = True
    if s[0]==")" or s[-1]=="(":
        answer=False
        
    else:
        cntL=0
        cntR=0
        
        for i in range(len(s)):
            if s[i]=="(":
                cntL=cntL+1
            else:
                cntR=cntR+1
                    
            if cntL<cntR:
                answer=False
                break
        if cntL!=cntR:
            answer=False
              

    return answer

'코딩테스트' 카테고리의 다른 글

프로그래머스 같은 숫자는 싫어  (0) 2024.03.18
파이썬 오류 정리  (0) 2024.03.18