개발공부/algorithm

[SWEA 문제해결 기본: Stack] [Python] 4873.반복문자지우기

so.py 2020. 9. 27. 01:35

문제

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

접근

오랜만에 쉬운 문제가 나왔다.. 스트링의 값들을 stack에 순서대로 append 해준 후 스택의 가장 상위 부분에 같은 스트링 값이 있는 경우는 pop 해준다! 

세가지 경우를 처리해주면 된다.

1. 스택이 비어있을 경우

2. 스택의 가장 탑 아이템이 입력 값과 같을 경우

3. 스택의 가장 탑 아이템이 입력 값과 같지 않을 경우

 

나의 코드

T = int(input())
for i in range(T):
    lst = input()
    stack = []
    for l in range(len(lst)):
        if len(stack) == 0:                       # stack이 비어있을 때는 입력 값을 append 해준다
            stack.append(lst[l])
        elif stack[-1] != lst[l]:                 # stack의 가장 위의 스트링 값이 입력 값과 같지 않을 때
            stack.append(lst[l])                  # 입력 값을 스택에 append 해준다
        elif stack[-1] == lst[l]:                 # stack의 가장 위의 스트링 값이 입력 값과 일치 할 때
            stack.pop()                           # 해당 값을 stack에서 제거해준다.
    print('#{} {}'.format(i+1, len(stack)))