-
Notifications
You must be signed in to change notification settings - Fork 0
/
괄호회전하기.cpp
56 lines (49 loc) · 960 Bytes
/
괄호회전하기.cpp
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
45
46
47
48
49
50
51
52
53
54
55
56
#include <string>
#include <vector>
using namespace std;
bool is_open(char c)
{
if (c == '(' || c == '{' || c == '[')
return true;
return false;
}
bool is_pair(char a, char b)
{
if (a == '(' && b == ')')
return true;
if (a == '{' && b == '}')
return true;
if (a == '[' && b == ']')
return true;
return false;
}
bool is_right(string &s)
{
vector<char> v;
int i;
for (i = 0; i < s.size(); i++)
{
if (is_open(s[i]))
v.push_back(s[i]);
else if (!v.empty() && is_pair(v.back(), s[i]))
v.pop_back();
else
return false;
}
if (!v.empty())
return false;
return true;
}
int solution(string s)
{
int answer = 0;
int x;
string tmp;
for (x = 0; x < s.size(); x++)
{
tmp = s.substr(x) + s.substr(0, x);
if (is_right(tmp))
answer++;
}
return answer;
}