첫 번째 풀이
def solution(s):
while '()' in s:
s=s.replace('()','')
if s == '':
return True
else:
return False
두 번쨰 풀이
def solution(s):
stack = []
for i in s:
if i == "(":
stack.append(i)
else:
if stack:
stack.pop()
else:
return False
if stack:
return False
else:
return True
고수의 풀이
def is_pair(s):
st = list()
for c in s:
if c == '(':
st.append(c)
if c == ')':
try:
st.pop()
except IndexError:
return False
return len(st) == 0
CODE REVIEW
-
첫 번째 풀이에서는 while문을 이용해서
()
가 있으면 계속 지워나가는 식으로 해결했다. 정답에는 이상이 없었지만, 효율성 측면에서는 떨어졌다. - 효율성을 늘리기 위해서 다른 방법을 시도해보았다. 두 번째 풀이에서는
stack
을 이용했는데,(
을 stack에 쌓아가면서 조건에 따라 지워가면서 true/false을 결정했다. -
고수의 풀이는 앞의 풀이와 거의 동일하지만
return len(st) == 0
부분이 마음에 들어서 가져왔다. - 매우 비슷한 문제로 백준 9012번 - 괄호가 있다.