[백준/BOJ] 백준 3986번 : 좋은 단어
2020. 9. 15. 21:56ㆍ알고리즘 문제풀이
단어의 문자를 스택에 넣으면서 스택의 top부분과 스택에 넣으려고 하는 문자가 같을 때 다른 선과 교차하지 않으면서 문자를 짝지을 수 있는 것이므로 짝지어진 문자는 스택에서 빼낸다. 해당 단어의 검사가 끝난 뒤 스택이 비어있다면 그 단어는 좋은 단어이다.
코드
#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int n;
int result = 0;
cin >> n;
for (int i = 0; i < n; i++)
{
string word;
stack<char> s;
cin >> word;
for (int i = 0; i < word.size(); i++)
{
//스택이 비어 있을때
if (s.empty())
s.push(word[i]);
else
{
char s_top = s.top();
//스택의 top 부분과 word[i]가 같을때
if (s_top == word[i])
s.pop();
else
s.push(word[i]);
}
}
//word의 검사가 끝난뒤 스택이 비어 있다면 모든 A와B의 쌍이 정해진것이므로 좋은단어이다
if (s.empty())
result++;
}
cout << result;
return 0;
}
'알고리즘 문제풀이' 카테고리의 다른 글
[백준/BOJ] 백준 2751번 : 수 정렬하기 2 (0) | 2020.09.16 |
---|---|
[백준/BOJ] 백준 10817번 : 세 수 (0) | 2020.09.16 |
[백준/BOJ] 백준 2908번 : 상수 (0) | 2020.09.15 |
[백준/BOJ] 백준 2675번 : 문자열 반복 (0) | 2020.09.15 |
[백준/BOJ] 백준 10809번 : 알파벳 찾기 (0) | 2020.09.15 |