스택(Stack)을 활용해 현재 문자가 스택의 맨 위(top) 문자와 같으면 pop, 다르면 push를 반복
그 전 접근이 자꾸 틀린 이유는 자꾸 현재 문자를 stack에다 밀어 넣고 그 다음 문자와 비교하려고 했기 때문 (i-1 or i+1등 사용 → index 복잡해짐) ‘while문 안 써도 되지 않을까’ 까지는 왔었는데… stack에 넣기 전에 같고 다름을 판별해야 최대한 간결하게 생각하자…
빈 스택의 경우 분기 나누어서 접근
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
# ///////////////////////////////////////////////////////////////////////////////////
string = input()
stack = []
# 스택(Stack)을 활용해 현재 문자가 스택의 맨 위(top) 문자와 같으면 pop, 다르면 push를 반복하세요
# 틀린 이유는 자꾸 현재 문자를 stack에다 밀어넣고 그 다음 문자와 비교하려고 했기 때문 (i-1등 사용)
# 스택에 뭐 없으면 그냥 현재 문자 추가
for i in range (len(string)):
#print (stack)
if stack: # append 먼저 하고 pop 2번 하는 방법은 stack [-1] 값이 현재 값이 되므로 안 됨
if stack[-1] == string[i]:
stack.pop()
else:
stack.append(string[i])
else:
stack.append(string[i])
answer = len(stack)
print (f'#{test_case} {answer}')
t_case} {answer}')