괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
s | answer |
---|---|
"()()" | True |
"(())()" | True |
")()(" | False |
"(()(" | False |
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
올바르지 못한 괄호는 열리고 닫히지 않은괄호와
열리지 않았는데 닫힌 괄호이다
그래서 나는 열리고 닫힌 괄호를 카운트해서 문제가 있을시 False를 문제가 없다면 True를 리턴하는 함수를 만들도록 접근했다
def solution(s):
if s[0] == '(' and s[-1] ==')' and len(s)%2 == 0:
cnt = 0
for i in range(len(s)) :
if s[i] == '(' :
cnt += 1
else :
cnt -= 1
if cnt < 0:
return False
return True
else :
return False
효율성 2번 실패
효율성을 잡기위해 for문을 돌때마다 매번 확인해 주었던 cnt의 음수 여부를 닫힌 괄호를 판별한 후에만 확인해 주도록 바꾸었다
def solution(s):
cnt = 0
if s[0] == '(' and s[-1] ==')':
for i in range(len(s)):
if s[i] == '(':
cnt += 1
else:
cnt -= 1
if cnt < 0:
return False
if cnt == 0:
return True
else:
return False
else:
return False