짝지어 제거하기
종류 : 스택/큐
난이도 : 하
코드
def solution(s):
answer = []
lst = list(s)
for i in range(0,len(lst)):
answer.append(lst[i])
while(len(answer) >= 2):
if(answer[-1] == answer[-2]):
answer.pop()
answer.pop(-1)
break
if answer:
return 0
else:
return 1
return answer
풀이
- 주어진 문자열(s)를 list함수를 이용해 배열로 만든다.
- 배열의 길이만큼 answer에 문자를 하나씩 push(append)한다.
- 만약 answer의 길이가 2 이상이고, 문자열 두개를 비교했을 때 같다면, 순서대로 pop한다.
- 단 무한반복되지않도록 break를 걸어준다.
- loop를 빠져나왔을 때 answer내 문자가 남아있다면 0 아니라면 1을 리턴해준다.
생각해 볼 점
- 위 풀이의 시간복잡도는 O(n)
- while문이 꼭 들어가지 않아도 될 것 같다.