백준 c++ 3986 좋은 단어
3986 좋은 단어
문제 풀이
#include <iostream>
#include <stack>
using namespace std;
void fast_io(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
}
int main()
{
fast_io();
int n, res = 0;
cin >> n;
while (n--)//입력받은만큼 돈다
{
string str;
stack<char> s;
cin >> str;//문자열 입력받음
s.push(str[0]); //하나를 넣은상태로 시작
for (int i = 1; i < str.size(); i++)
{
if (!s.empty() && str[i] == s.top())
{//비어있지 않고, 현재 char 가 스택의 top과 같을때
s.pop();
}
else
{//같지않다면 스택에 추가
s.push(str[i]);
}
}
if (s.empty())//비어있다면 다 짝맞춰 나간거니까 세어주기++
res++;
}
cout << res;
}
어떤 방법이 좋을까 고민하다가 우선 스택에 0번을 넣고 시작하기로 했다.
그 후 들어오는 char가 앞선아이와 같다면 pop() 다르다면 push를 하며
짝맞는애만 탈출하게 해주었다. 결과적으로 다 나갔다면 스택은 비어있기 때문에 비어있는 경우만 결과값에 더해주었다.
Author And Source
이 문제에 관하여(백준 c++ 3986 좋은 단어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaranda/백준-c-3986-좋은-단어저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)