[백준 알고리즘]/[C++]

3986번 좋은 단어 / Baekjoon BOJ 백준 3986 C++ 코드, 해설, 풀이

말하는펭귄 2020. 12. 2. 15:33
728x90
반응형

이번 포스팅은 백준 3986번 좋은 단어입니다.

아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.

 

www.acmicpc.net/problem/3986

 

3986번: 좋은 단어

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

www.acmicpc.net

 

교차O = 좋은 단어X

 

 

교차X = 좋은 단어O

 

 

기본 알고리즘

스택을 사용하는 문제이다.

string으로 받은 문자열에서 문자를 1개 씩 비교하면서 스택에 push할지 pop할지 선택한다.

현재 문자 값이 스택의 top과 같으면 pop

현재 문자 값이 스택의 top과 다르면 push

모두 비교 후 스택이 empty이면 좋은 단어이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <stack>
using namespace std;
 
int main() {
    int N;
    cin >> N;
 
    int ans = 0;
    while (N--) {
        stack<char> stack;
        string word;
        cin >> word;
 
        for (int i = 0; i < word.length(); i++) {
            if (stack.empty()) {
                stack.push(word[i]);
            }
            else {
                if (stack.top() == word[i]) {
                    stack.pop();
                }
                else {
                    stack.push(word[i]);
                }
            }
        }
 
        if (stack.empty()) {
            ans++;
        }
    }
 
    cout << ans;
}
cs

 

 

 

 

 

728x90
반응형