프로그래머스 - 올바른 괄호
올바른 괄호 문제 바로가기 첫 번째 풀이 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번 - 괄호가 있다.