'(' ์ธ ๊ฒฝ์ฐ: ์คํ์ ๋ฃ๋๋ค. (push)
')' ์ธ ๊ฒฝ์ฐ: ์คํ์์ ํ๋์ '('๋ฅผ ๊บผ๋ธ๋ค. ๋ง์ฝ ๋น์ด์๋ ๊ฒฝ์ฐ, ๊ดํธ๊ฐ ๋ง์ง ์๊ธฐ ๋๋ฌธ์ false๋ฅผ ๋ฐํํ๋ค. ๋น์ด์์ง ์๋ ๊ฒฝ์ฐ, ํ๋์ VPS๊ฐ ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
ํ ์คํธ๋ง์ ๋ํด ๊ฐ ๋ฌธ์๋ง๋ค '('์ ')' ์ผ์ด์ค์ ๋ํด push ๋๋ pop์ ๋ฐ๋ณตํ ํ, ๋ง์ฝ ์คํ์ด ๋น์ด์์ผ๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด VPS๋ฅผ ๋ง์กฑํ ๊ฒ์ด๋ฏ๋ก YES๋ฅผ ์ถ๋ ฅํ๊ณ , ์คํ์ด ๋น์ด์์ง ์์ ๊ฒฝ์ฐ์๋ VPS๋ฅผ ๋ง์กฑํ์ง ์์ ๊ฒ์ด๋ฏ๋ก NO๋ฅผ ์ถ๋ ฅํ๋ค.
stack์ empty()๋ก true ๋๋ false ๋ฐํํ์ฌ VPS ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๋ค.
#include <bits/stdc++.h>
using namespace std;
bool VPS(string str){
stack<char> s;
for(char c: str){
switch(c){
case '(':
s.push(c);
break;
case ')':
{
if(!s.empty()) s.pop();
else return false;
}
break;
}
}
return s.empty();
}
int main(){
int T;
scanf("%d", &T);
for(int i=0; i<T; i++){
string str;
cin >> str;
cout << (VPS(str) ? "YES\n" : "NO\n");
}
}
[๋ฐฑ์ค(BOJ)] 10809๋ฒ: ์ํ๋ฒณ ์ฐพ๊ธฐ (C++) (0) | 2021.08.07 |
---|---|
[๋ฐฑ์ค(BOJ)] 10808๋ฒ: ์ํ๋ฒณ ๊ฐ์ (C++) (0) | 2021.08.07 |
[๋ฐฑ์ค(BOJ)] 10866๋ฒ: ๋ฑ (๋ฑ(deque), C++) (0) | 2021.08.07 |
[๋ฐฑ์ค(BOJ)] 10828๋ฒ: ํ (ํ, C++) (0) | 2021.08.07 |
[๋ฐฑ์ค(BOJ)] 10828๋ฒ: ์คํ (์คํ, C++) (0) | 2021.08.07 |