You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
from collections import deque
def solution(s):
queue = deque()
for i in list(s):
queue.append(i)
right = 0
left = 0
# 개수가 홀수 || ) .. ( || ( .. ( || ) .. ) 이면 false
if len(queue) % 2 != 0 or queue[0] == ')' or queue[-1] == '(' or queue[0] == queue[-1]:
return False
else:
while queue:
l = queue.popleft()
if l == '(':
right += 1
else:
left += 1
if right < left:
return False
if right != left:
return False
else:
return True
문제 풀이
아 경우의 수를 생각하는 게 너무 어려웠다.
큐 카테고리에 있어서 큐를 써야 한다고 생각한 것이 아쉬움
개수가 홀수 || ) .. ( || ( .. ( || ) .. ) 이면 false
( ... ) 인 경우들 - queue가 빌 때까지 앞에서 하나씩 빼주면서 (,) 개수 카운팅
근데 카운팅 도중에 ')'의 개수가 더 많으면 바로 false 날려줌
여기서 '(' 개수가 더 많은 경우는 카운팅 안함 왜냐면, 어차피 얘가 더 많아도 후에 ')'가 있을 수 있으니까
ex. ())(()과 같은 경우
'(' 과 ')' 개수가 다르면 false
ex.((()
그 외는 true
더 나은 풀이?
def solution(s):
stack = []
for i in s:
if i == '(':
stack.append(i)
else:
if stack == []: # 오른쪽 괄호로 시작할경우
return False
else:
stack.pop()
if stack != []: # 다 끝났는데 왼쪽 괄호가 스택에 남아있을경우
return False
return True
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제 설명
( ~ )
이렇게 잘 닫혀진 놈들만 true 반환!문제 풀이
개수가 홀수
||) .. (
||( .. (
||) .. )
이면 false( ... )
인 경우들 - queue가 빌 때까지 앞에서 하나씩 빼주면서 (,) 개수 카운팅ex.
())(()
과 같은 경우ex.
((()
더 나은 풀이?
Beta Was this translation helpful? Give feedback.
All reactions