(백준 알고리즘 문제풀이) 3986번 좋은 단어
by 줌코딩
문제
문제 접근
- 이 문제도 문자열 폭발 문제와 유사하게 스택을 사용하면 용이하다.
- 문자열의 문자를 처음부터 끝까지 하나씩 보면서 현재 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을 한번 사용해서 인지 수월하게 문제를 접근할 수 있었다.
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Subscribe via RSS