문제링크: https://www.acmicpc.net/problem/10799
알고리즘
스택 사용 .
1. 문자열에서 문자가 '(' 일 대 다음 문자가 ')' 이면 현재 스택의 사이즈만큼 갯수 증가 (레이져)
2. 문자열에서 문자가 ')' 일 때 이전 문자가 '(' 이면 continue ; (레이져)
3. 문자열에서 문자가 ')'이고 이전 문자가 '(' 가아니면 스택을 pop 하고 갯수 한개 증가
4. 갯수 출력
코드
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
|
#include<iostream>
#include<stack>
using namespace std;
int main() {
string str;
cin >> str;
stack<char> s;
int cnt = 0;
if (str[i] == '(') {
if (str[i + 1] == ')') {
for (int i = 0; i < s.size(); i++) {
cnt++;
}
}
else s.push(str[i]);
}
if (str[i] == ')') {
if (str[i - 1] == '(') continue;
else {
s.pop();
cnt++;
}
}
}
cout << cnt;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
'c++ > 백준' 카테고리의 다른 글
백준 14500번 : 테트로미노 (0) | 2020.03.25 |
---|---|
백준 2841번 외계인의 기타연주 (0) | 2019.11.21 |
백준 5397 키로거 (0) | 2019.11.21 |
백준 2493번 : 탑 (0) | 2019.11.20 |
백준 1918번 후위표기식 (0) | 2019.11.19 |