def isValid(s):
stack = []
for p in s:
if p == "(":
stack.append(")")
elif p == "{":
stack.append("}")
elif p == "[":
stack.append("]")
elif not stack or stack.pop() != p:
return False
return not stack
이 문제는 문자의 괄호의 상태가 올바른지에 대한 함수 입니다.
stack을 사용하여 LIFO문제를 풀었습니다.
올바른 괄호가 되기 위해서는 ( { [ 여는 괄호가 들어왔을때 stack의 가장 윗부분이 마지막에 들어온 괄호와 맞아야 합니다.
혹은 닫는괄호 ) } ]가 먼저 들어온 경우에도 맞지 않기 때문에 False를 return 합니다.
for문을 다 돌았을때 stack에 아무 문자도 남아있지 않다면 올바른 괄호배열이기때문에 True를 return하게 됩니다
'알고리즘 > test' 카테고리의 다른 글
Maximum Depth of Binary Tree (0) | 2023.03.07 |
---|---|
LIFO - example 2 (0) | 2023.03.06 |
Linked List - leetcode 예시로 이해 (0) | 2023.03.03 |
Python) 프로그래머스 - 자연수 뒤집어 배열로 만들기 (0) | 2023.03.03 |
Python) 프로그래머스 - 약수의 합 (0) | 2023.03.03 |