문제

문제 링크

문제 접근

  • 이 문제도 문자열 폭발 문제와 유사하게 스택을 사용하면 용이하다.
  • 문자열의 문자를 처음부터 끝까지 하나씩 보면서 현재 stack에 top과 비교한다.
  • 같다면 stack의 top을 하나 줄여주고
  • 다르다면 stack에 해당 문자를 넣어준다.
  • 문자열을 다 돈 후의 top가 0이면 좋은 문자열로 판정한다!

코드

#include <cstdio>

char stack[100002];
int n, top, ans;

int main(){
    scanf("%d", &n);
    while(n--){
        top = 0;
        char s[100002];
        scanf("%s", s);
        stack[top++] = s[0];
        for(int i = 1; s[i] != '\0'; i++){
            if(stack[top-1] == s[i])top --;
            else stack[top++] = s[i];
        }
        printf("%d\n", top);
    }
}

느낀점

  • 바로 전에 문자열에 stack을 한번 사용해서 인지 수월하게 문제를 접근할 수 있었다.