문제
풀이
s의 길이가 최대 1백만이기에 탐색을 위해 반복문을 2번 이상 반복하게 되면 시간초과가 된다.
1번의 탐색으로 result의 결과를 확인할 수 있어야 한다.
연속으로 같은 문자가 2개 붙어 있을 때 제거를 해주는 방법으로 s를 순차적으로 반복문을 진행하면서 stack 자료구조에 넣는다.
stack에 쌓기 전에 조건문으로, stack가 비었는지 아니면 비어있지 않다면 stack의 마지막 문자와 s 반복문의 문자가 같을 때 stack의 마지막 문자를 제거한다. stack의 마지막 문자와 s 반복문의 문자가 같지 않다면 다음 반복문으로 그냥 stack에 쌓아서 다음 반복문에서 삭제할 수 있다면 삭제되도록 stack에 쌓아준다.
s 반복문을 다 진행한 후, stack가 비었다면 모두 제거한 것이므로 1을 아니라면 0을 반환하도록 한다.
코드
def solution(s):
stack = []
for i in s: # 1번의 반복문
if not stack: # 조건문 1
stack.append(i)
print(stack)
elif stack[-1] == i: # 조건문 2
stack.pop()
else: # 조건문 3
stack.append(i)
# 결과
if not stack:
return 1
else:
return 0