728x90
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for c in s:
if len(stack) == 0: # 최초에 stack이 비었더라도 loop진행중 stack이 비워지면 다시 채워넣기
stack.append(c)
elif stack[-1] == "{" and c == "}":
stack.pop()
elif stack[-1] == "[" and c == "]":
stack.pop()
elif stack[-1] == "(" and c == ")":
stack.pop()
else:
stack.append(c)
if len(stack) == 0:
return True
else:
return False
방법은 맞았는데 계속 index 에러가 난 이유를 못찾다가.
아래 문제 다시보니 stack이 빌 경우에도 채워줘야 하는 조건이 안들어가 있었기 때문에 에러가 발생.
어려운건 아니지만 놓치기 쉬운 조건이기 때문에 pair 문제에서는 이제 pop말고 stack이 빌 경우 채워주는 조건을 까먹기 말고 넣자.
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for i in range(len(s)):
if len(stack) == 0: # 최초에 stack이 비었더라도 loop진행중 stack이 비워지면 다시 채워넣기
stack.append(s[i])
elif stack[-1] == "{" and s[i] == "}":
stack.pop()
elif stack[-1] == "[" and s[i] == "]":
stack.pop()
elif stack[-1] == "(" and s[i] == ")":
stack.pop()
else:
stack.append(s[i])
print(stack)
if len(stack) == 0:
return True
else:
return False
그냥 range 써서 할 경우
728x90
'Leetcode' 카테고리의 다른 글
[LeetCode] Remove Element 파이썬 (list remove) (0) | 2021.03.29 |
---|---|
[LeetCode] Merge Two Sorted Lists 파이썬 (linked list) (0) | 2021.03.29 |
[LeetCode] Longest Common Prefix 파이썬 (zip, list comprehension, set) (0) | 2021.03.28 |
[LeetCode] Roman to Integer 파이썬 (dict, stack, deque) (0) | 2021.03.26 |
[LeetCode] Palindrom Number 파이썬 (reverse str) (0) | 2021.03.25 |
댓글