True
를 반환해주고 닫는 괄호로 시작한다면 False
를 반환해주는 방식으로 생각했다. (닫는 괄호로 시작하는 것은 애초에 틀린 것 이니까)def solution(s):
if s[0] == '(' and s[-1] == ')':
return s.count('(') == s.count(')')
else:
return False
이러면 테스트 5
와 테스트 11
을 통과하지 못한다. 왜 통과를 못하는지 모르겠다.. 테스트 케이스좀 알려줬으면 ㅠ_ㅠ
스택/큐 카테고리에 있어서 스택을 이용해 주기로 했다.
stack == []
일때 닫는 괄호가 등장할 경우) 틀린 괄호이므로 False
를 반환pop
해준다.stack
이 비어있다면 모든 괄호가 짝을 이룬 경우이므로 True
가 반환되고, 아니라면 False
가 반환된다.def solution(s):
answer = True
stack = []
for i in s:
if i == '(':
stack.append(i)
else: # i == ')'인 경우
if stack == []:
return False
else:
stack.pop()
return stack == []
스택을 안써도 리스트로 충분히 해결 가능한?
굳이 스택을 이용한 이유를 짜내자면 스택은 LIFO니까 stack
의 맨마지막 원소인 '('
과 ')'
이 짝을 이룬다는 것을 pop
으로 추출해준다.. 정도 인듯
근데 난 아직도 내가 맨 처음에 제출한 코드가 뭐가 틀린건지 잘 모르겠다. 여닫는 괄호가 짝을 다 이루는 걸 개수로 표현해 준건데 어떤 테스트케이스가 있는지 궁금..
지나가다가 댓글남겨봅니다. 코드(오답)의 반례로 ( ) ) ( ( ) 가 될 수 있겠네요 !