https://www.acmicpc.net/problem/9012
๋ฌธ์
๊ดํธ ๋ฌธ์์ด(Parenthesis String, PS)์ ๋ ๊ฐ์ ๊ดํธ ๊ธฐํธ์ธ ‘(’ ์ ‘)’ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์์ด์ด๋ค. ๊ทธ ์ค์์ ๊ดํธ์ ๋ชจ์์ด ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(Valid PS, VPS)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ ์์ ๊ดํธ ๊ธฐํธ๋ก ๋ “( )” ๋ฌธ์์ด์ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ง์ผ x ๊ฐ VPS ๋ผ๋ฉด ์ด๊ฒ์ ํ๋์ ๊ดํธ์ ๋ฃ์ ์๋ก์ด ๋ฌธ์์ด “(x)”๋ VPS ๊ฐ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ VPS x ์ y๋ฅผ ์ ํฉ(concatenation)์ํจ ์๋ก์ด ๋ฌธ์์ด xy๋ VPS ๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด “(())()”์ “((()))” ๋ VPS ์ด์ง๋ง “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ “(()” ๋ ๋ชจ๋ VPS ๊ฐ ์๋ ๋ฌธ์์ด์ด๋ค.
์ฌ๋ฌ๋ถ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ดํธ ๋ฌธ์์ด์ด VPS ์ธ์ง ์๋์ง๋ฅผ ํ๋จํด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ YES ์ NO ๋ก ๋ํ๋ด์ด์ผ ํ๋ค.
์ ๋ ฅ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค ์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ T๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ฃผ์ด์ง๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์ฒซ์งธ ์ค์๋ ๊ดํธ ๋ฌธ์์ด์ด ํ ์ค์ ์ฃผ์ด์ง๋ค. ํ๋์ ๊ดํธ ๋ฌธ์์ด์ ๊ธธ์ด๋ 2 ์ด์ 50 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. ๋ง์ผ ์ ๋ ฅ ๊ดํธ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(VPS)์ด๋ฉด “YES”, ์๋๋ฉด “NO”๋ฅผ ํ ์ค์ ํ๋์ฉ ์ฐจ๋ก๋๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
์ค๋ฒ4 easy~
stack, ํน์ vector๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ ๋ฌธ์ ์ด๋ค.
์ฐธ๊ณ ๋ก C++์์ ๋์ ์ฐจ์ด๋
๊ฐ๋ ์ฑ์ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. (๋ณ ์ฐจ์ด ์๋ค๋ ์๊ธฐ)
๋์ ํ์ด
#include <iostream>
#include <string>
#include <queue>
#include <vector>
using namespace std;
int main(){
int t;
string s = "";
cin >> t;
for (int i = 0; i < t; ++i){
vector<char> v;
string answer = "YES";
cin >> s;
for (int j = 0; j < s.length();++j){
if(s[j]=='(') {
v.push_back('(');
}
else {
if(!v.empty()) {
v.pop_back();
}
else {
answer = "NO";
break;
}
}
}
if(!v.empty()) answer = "NO";
cout << answer << "\n";
}
}
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++/BOJ] 1012 : ์ ๊ธฐ๋ ๋ฐฐ์ถ (BFS/DFS) (0) | 2023.05.12 |
---|---|
[C++/BOJ] 1417 : ๊ตญํ์์ ์ ๊ฑฐ (์๋ฃ๊ตฌ์กฐ) (1) | 2023.05.06 |
[C++/BOJ] 11286 : ์ ๋๊ฐ ํ (์๋ฃ๊ตฌ์กฐ) (0) | 2023.05.02 |
[C++/BOJ] 5430 : AC (์๋ฃ๊ตฌ์กฐ) (0) | 2023.05.02 |
[C++/BOJ] 7576 : ํ ๋งํ (bfs/dfs) (0) | 2023.04.14 |