'(', ')' 를 이용하여 스택을 쌓는 문제이다. 정석은 스택을 이용하는 것이기에 스택을 이용하여 해주었다. 나는 스택 라이브러리를 사용하였는데 사람들이 해놓은 것을 보니 배열로 count 만 해주면 되기에 배열로 해줘도 되어보였다.
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
|
#include<iostream>
#include<string>
#include<stack>
using namespace std;
int main(void){
string s;
stack<char> st;
int flag, ans;
cin >> s;
flag = 0;ans = 0;
for(char c : s){
if(c == ')' && flag == 1){
st.pop(); ans += st.size(); flag = 0;
}else if(c == '('){
st.push(c); flag = 1;
}else if(c == ')' && flag == 0){
st.pop(); ans += 1;
}
}
cout << ans << '\n';
}
|
cs |
728x90
'개발 > 알고리즘' 카테고리의 다른 글
1373_이진수팔진수 (0) | 2020.11.21 |
---|---|
2745_진법변환 (0) | 2020.11.18 |
10866_덱 (0) | 2020.11.16 |
1158_요세푸스문제 (0) | 2020.11.15 |
11656_접미사배열 (0) | 2020.11.15 |