본문 바로가기
백준 문제풀이

[백준][스택] 3986 좋은 단어 c++구현

by 꽁이꽁설꽁돌 2024. 3. 30.
728x90
반응형

목차

    https://www.acmicpc.net/problem/3986

     

    3986번: 좋은 단어

    이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에

    www.acmicpc.net

    문제

     

    문제 풀이

    • 스택이 비어있다 -> 문자를 넣어준다.
    • 스택이 비어있지 않다 -> 1.스택의 top값과 들어갈 값이 같으면 스택에서 pop해준다.
    •                                         2.스택의 top값과 들어갈 값이 다르면 그냥 넣어준다.

     

    문자열을 다 순회한후 스택이 비어있다면 1, 비어있지 않다면 0을 리턴해 준다.

     

     

     

    코드 구현

    #include <iostream>
    #include<stack>
    #include<algorithm>
    
    using namespace std;
    
    int check(string str) {
    	stack<char> s;
    	int acnt = 0, bcnt=0; 
    	for (int i = 0; i < str.size(); i++) {
    		if (s.empty()) {
    			s.push(str[i]);
    		}
    		else {
    			if (str[i] == s.top()) {
    				s.pop();
    			}
    			else {
    				s.push(str[i]);
    			}
    		}
    	}
    	if (s.empty())
    		return 1;
    	else
    		return 0;
    }
    int main() {
    	ios_base::sync_with_stdio(false);
    	cin.tie(0);
    	cout.tie(0);
    	int n, sum=0;
    	string str;
    	cin >> n;
    	for (int i = 0; i < n; i++){
    		cin >> str;
    		sum +=check(str);
    	}
    	cout << sum;
    }
    반응형