https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
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
36
37
38
39
40
41
42
43
44
|
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
string s;
int a;
cin >> a;//a만큼 문자열 입력 받는다
while (a--)
{
stack<char> cstack;
stack<char> sstack;
cin >> s;
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '(')//입력받은 s 에서 (일 경우 cstack에 push
{
cstack.push('(');
}
if (s[i] == ')')//입력받은 s 에서 )일 경우
{
if (cstack.empty())//(를 넣는 cstack이 비었다면 sstack에 push
{
sstack.push(')');
}
else//cstack 안 비었다면 cstack pop
{
cstack.pop();
}
}
}
if (cstack.size() != 0||sstack.size()!=0)//만약 cstack, sstack 둘 다 남은 원소가 있다면 No
{
cout << "NO" << endl;
}
else
{
cout << "YES" << endl;
}
}
}
|
cs |
위 코드대로 라면 만약 첫번째 예제의 경우 sstack에 )가 하나 남았기 때문에 No가 출력된다
(가 입력됐을 때 cstack 에 push가 되고 )가 입력 됐을 때 cstack이 pop되는 박자가 맞을 때 정상적인 괄호고 YES가 출력된다.
'백준 c++ > (1-1)백준 c++ 알고리즘 기초' 카테고리의 다른 글
백준 1406 c++ 에디터 (0) | 2022.07.04 |
---|---|
백준 c++ 1874 스택 수열 (0) | 2022.07.04 |
백준 9093 c++ 단어 뒤집기 (0) | 2022.07.04 |
백준 10828 c++ 스택 (0) | 2022.07.04 |
백준 17299 오등큰수 c++ (0) | 2022.02.20 |