-
[c++] 백준 3986번: 좋은 단어알고리즘 2022. 5. 21. 02:16
문제 설명
1. 입력 단어의 문자들을 하나씩 탐색한다. 만약 스택이 비어있거나 스택의 top값이 현재 탐색한 문자와 일치하지 않다면 현재 문자의 값을 스택에 push한다. 다만 스택의 top 값이 현재 탐색한 문자의 값과 일치하다면 스택에 있어 pop 하여 지운다.
2. 모든 연산이 끝났다면, 스택이 비어있는지 확인한다. 만일 비어있다면, 좋은 단어가 된다.
코드
#include <iostream> #include <stack> using namespace std; int main() { int n; string word; int count = 0; cin >> n; for (int i = 0; i < n; i++) { stack<char> s; cin >> word; for (int j = 0; j < word.length(); j++) { if (s.empty() || s.top() != word[j]) { s.push(word[j]); } else if (s.top() == word[j]) { s.pop(); } } if (s.empty()) count++; } cout << count; return 0; }
'알고리즘' 카테고리의 다른 글
[c++] 백준 2559번: 수열 (0) 2022.06.12 [c++][그리디] 백준 2828번: 사과 담기 게임 (0) 2022.05.29 [c++] 백준 9996번: 한국이 그리울 땐 서버에 접속하지 (0) 2022.05.20 [c++] 백준 1620번: 나는야 포켓몬 마스터 이다솜 (0) 2022.05.15 [c++] 백준 1940번: 주몽 (0) 2022.05.15