[BOJ] 3986 "좋은 단어" 문제 풀이 & 소스 코드 With C/C++

반응형
반응형

#INFO

난이도 : SILVER4

알고리즘 유형 : STACK

출처 : 3986번: 좋은 단어 (acmicpc.net)

 

3986번: 좋은 단어

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

www.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;
}


반응형

댓글

Designed by JB FACTORY