반응형
#INFO
난이도 : SILVER4
알고리즘 유형 : STACK
출처 : 3986번: 좋은 단어 (acmicpc.net)
#SOLVE
스택 자료구조를 이용하면 간단하게 풀이 가능한 문제이다. 스택에 문자를 순차적으로 PUSH 하면서 겹치는 알파벳이 있으면 스택에서 POP 하면 된다.
ABBA 같은 '좋은 단어'는 스택이 모두 비어질 것이고, ABAB 같은 '나쁜 단어'는 스택에 문자가 남아 있을 것이다.
#CODE
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main(){
int n;
cin >> n;
int cnt = 0;
for (int i = 0 ; i < n ; i++) {
stack<char> stk;
string str;
cin >> str;
for (int j = 0 ; j < str.length() ; j++) {
if (!stk.empty() && stk.top() == str[j]) {
stk.pop();
}
else {
stk.push(str[j]);
}
}
if (stk.empty())
cnt++;
}
cout << cnt << endl;
return 0;
}
반응형
'Archive2 > ProblemSolving' 카테고리의 다른 글
[BOJ] 12852 "1로 만들기2" 문제 풀이 & 소스 코드 With C/C++ (0) | 2022.02.22 |
---|---|
[BOJ] 2170 "선 긋기" 문제 풀이 & 소스 코드 With C/C++ (0) | 2022.02.15 |
[BOJ] 1018 "체스판 다시 칠하기" 문제 풀이 & 소스 코드 With C/C++ (0) | 2022.02.08 |
[BOJ] 1904 "01타일" 문제 풀이 & 소스 코드 With C/C++ (0) | 2022.02.05 |
[BOJ] 9461 "파도반 수열" 문제 풀이 & 소스 코드 With C/C++ (0) | 2022.02.05 |