[프로그래머스] 올바른 괄호 / 파이썬
문제풀이
https://programmers.co.kr/learn/courses/30/lessons/12909
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s
가 주어졌을 때, 문자열 s
가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s | answer |
---|---|
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
문제정리
올바른 괄호의 조건을 생각해봤습니다.
'('
의 개수와')'
의 개수가 같아야 합니다.- 앞부터 검사하였을 때
'('
의 개수가')'
보다 항상 같거나 많아야 합니다.
제가 떠올린 올바른 괄호의 조건은 위와 같았습니다.
우선 문자열을 앞부터 검사하여'('
의 경우 left_count
를 ')'
의 경우 right_count
를 증가시킵니다.
right_count
가 left_count
보다 커지는 순간 올바른 괄호가 아니므로 False를 반환합니다.
위 조건을 만족하는 경우 left_count
와 right_count
가 같다면 올바른 괄호 아니라면 올바른 괄호가 아닙니다.
def solution(s):
left_count = 0
right_count = 0
for c in s:
if c == "(":
left_count += 1
else:
right_count += 1
if right_count > left_count:
return False
return True if left_count == right_count else False
Author And Source
이 문제에 관하여([프로그래머스] 올바른 괄호 / 파이썬), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dogcu/프로그래머스-올바른-괄호-파이썬저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)