올바른 괄호

문제 설명

올바른 괄호란 두 개의 괄호 ‘(‘ 와 ‘)’ 만으로 구성되어 있고, 괄호가 올바르게 짝지어진 문자열입니다. 괄호가 올바르게 짝지어졌다는 것은 ‘(‘ 문자로 열렸으면 반드시 짝지어서 ‘)’ 문자로 닫혀야 합니다.
예를들어

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

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

제한사항

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

입출력 예

s answer
“()()” true
“(())()” true
“)()(“ false
“(()(“ false

입출력 예 설명

입출력 예 #1,2,3,4

문제의 예시와 같습니다.

나의 첫번째 풀이

1
2
3
4
5
6
def solution(s):
for _ in range(50000):
s = s.replace("()","")
if not s:
return True
return False

효율성 테스트 실패

나의 두번째 풀이

1
2
3
4
5
6
7
8
9
10
def solution(s):
if len(s) % 2:
return False
while True:
s_rep = s.replace("()","")
if s_rep == s:
return False
elif not s_rep:
return True
s = s_rep

효율성 테스트 실패

나의 세번째 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(s):
num = 0
for char in s:
if num < 0:
return False
if char == "(":
num += 1
elif char == ")":
num -= 1
if not num:
return True
else:
return False

통과

Share