코드가 한층 간결해졌다.
def solution(s):
answer = True
stack = []
if s[0] == ')' or s[-1] == '(' or len(s)%2 == 1:
return False
for i in range(len(s)):
if s[i] == ')':
stack.pop()
else:
stack.append(s[i])
if len(stack) != 0:
return False
return True
이번엔 모든 효율성 테스트를 통과하였다.
지난번 코드와 다른 점은 크게 2가지이다.
첫 번째는 remove() 함수 대신 pop() 함수를 사용했다는 점이다.
두 번째는 예외처리이다.
입력 s를 검사하기 전에, 괄호가 올바르지 않다는 것을 쉽게 알 수 있는 경우를 3가지로 생각하였다.
- ')' 로 시작하는 경우
- '('로 끝나는 경우
- 입력된 괄호의 개수가 홀수인 경우
하지만 테스트 케이스 2가지(5번, 11번)를 실패(런타임 에러)하였기 때문에
다시 도전하려고 한다.