문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 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
- else 절의 break 문이 루프를 너무 일찍 종료시킵니다. 이 break 문은 if cntL<cntR: 조건 내부에만 있어야 하며, else 절에는 있으면 안 됩니다. 그렇지 않으면 루프가 첫 번째 반복 후에 항상 종료됩니다.
- 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 |