회고
자료구조와 관련된 동영상을 볼 때 Stack을 활용한 문제풀이에서 한번 보았던 문제 였기 때문에 기억이 나서 쉽게 풀수 있었다.
만약 이전에 풀어본적이 없다면 생각할 수 없었던 방법이다.
아마 단순히 if문과 for문을 무작정 많이 돌면서 모든 케이스에 대한 분기 처리를 했을 것이다.
자료구조에 대해서 공부했다면 자료구조를 효율적으로 그리고 알맞게 사용할 수 있는 방법에 대한 사고의 폭을 넓힐 필요가 있다.
올바른 괄호
https://school.programmers.co.kr/learn/courses/30/lessons/12909
def solution(s):
try:
stack = []
for i in s:
if i == ")":
stack.pop()
else:
stack.append(i)
if len(stack) > 0:
return False
return True
except:
return False
s ="(()())"
result = solution(s)
print(result)
try-except 구문을 활용해서 error가 발생했을 때 return False해준다.
이 경우는 ")"
가 왔지만 stack에는 "("
가 없는 경우이다. 그렇다면 짝이 안 맞으므로 False가 된다.
len(stack) > 0 의 분기 처리는 모든 for문을 돌고 나서도 stack에 "("
이 남아 있다는 것은 ")"
이 없다는 경우로 짝이 맞지 않으므로 False가 된다.
for문 if문을 모두 통과했을 경우라면 모든 짝이 맞는 경우로 True를 return해준다.