def solution(s):
s = list(s)
i = 0
while i < len(s) - 1:
if s[i] == s[i+1]:
s.pop(i)
s.pop(i)
if len(s) == 0:
return 1
else:
return 0
i += 1
이렇게 하면 테스트케이스 1번에서 오류가 난다. 질문하기 탭에서 자바로 풀이하신 분이 스택으로 풀이했다고 하셔서 나도 스택을 사용해보기로 했다.
def solution(s):
stack = [s[0]]
for i in s[1:]:
if stack and i == stack[-1]:
stack.pop()
else:
stack.append(i)
return 0 if len(stack) else 1
스택에 제일 첫번째 문자를 담아주고, 그 이후부터 나머지 문자들과 비교를 진행한다. 만약의 스택의 최상단 원소가 i
와 동일하다면 스택에서 pop
해주고, 아니라면 해당 문자를 스택에 append
해준다.
if stack and i == stack[-1]
에서 stack
이 비지 않았을 경우도 추가해줘야 List out of Range
오류가 뜨지 않는다ㅎㅎ 빈 스택에서 pop
을 하지 않도록 조건을 잘 걸어주자.
다른사람 풀이도 나와 비슷해서 오늘은 다른사람 풀이 생략
뭔가 이제 이런 문제를 보면 스택/큐가 떠오르는 것이 문제를 좀 풀어본 결실이 드디어 나타나는 것 같다.. 예전에는 문제를 보면 도대체 이게 왜 스택이랑 큐를 이용하는거지? 싶다는 생각이 많이 들었는데 ㅎㅎㅎ 조금이나마 더 발전한 것 같아서 뿌듯하다😊