문제
'(' 로 열리고 ')' 로 닫히는 올바른 괄호인지 구하세요.
def solution(s):
stack = [];
for char in s:
stack.append(char);
if len(stack) > 1 :
if stack[-1] == ')' and stack[-2] == '(' :
stack.pop(-1);
stack.pop(-1);
if len(stack) > 0:
return False
else:
return True
문자열을 스택에 넣고, (이때 비어있다면 무조건 넣어준다.)
위에가 ) 이고 그 아래가 ( 이면 올바른 것 이므로
pop 해서 빼준다.
이렇게 맞는 패턴을 다 빼다보면 올바른 애들은 스택의 길이가 0 일것 이므로
아닐시 false 를 리턴해준다.
이전에 카카오 인턴십 문제 아이디어에서 참고했다.
이게 더 쉬운데 level2 고 그 인형뽑기 문제가 level1 인 아이러니 ..
* 파이썬 레퍼런스에서 len(stack) > 0 을 사용하기보다 if stack 을 사용하기를 권장했다. 담에는 길이를 리턴받지 말고 저렇게 사용하자 ~