알고리즘/자료구조

BOJ)10799 쇠막대기

광그로 2017. 6. 19. 19:46

https://www.acmicpc.net/problem/10799


stack의 size를 통하여 계산을 통하게 되면 시간초과가 발생하여 수정하였습니다.


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
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
 
stack <char> st;
 
int main()
{
    char s[100001];
    cin >> s;
    int result = 0;
    int cnt = 0;
 
    for (int i = 0; i < strlen(s); i++) {
        if (s[i] == '(' && s[i + 1== ')') {
            result += cnt;
            //cnt += st.size();
            i++;
        }
        else {
            if (s[i] == '(') {
                //st.push(s[i]);
                cnt++;
            }
            else {
                //st.pop();
                //cnt++;
                cnt--;
                result++;
            }
        }
    }
    cout << result <<'\n';
    return 0;
}
cs