올바른 괄호열의 가장 큰 특징으로 "닫는 괄호는 반드시 여는 괄호보다 나중에 나와서 쌍을 이뤄야 한다."가 있다. 이는 닫는 괄호가 먼저 나온다면 앞에 여는 괄호를 무조건 붙여야 한다는 의미이다. 나머지는 괄호가 쌍을 이룰 때마다 처리해주면 된다. 마지막에 스택에 남아있는 여는 괄호들의 뒤에 닫는 괄호를 모두 붙여야 한다는 것을 유의하자.
string str;
stack<char> s;
int ans;
int main(void) {
fastio;
cin >> str;
for (int i = 0; i < str.size(); i++) {
if (str[i] == '(') s.push(str[i]);
else {
if (s.empty())
ans++;
else s.pop();
}
}
ans += s.size();
cout << ans << "\n";
return 0;
}
'알고리즘' 카테고리의 다른 글
[BOJ 27966] △ (0) | 2024.03.25 |
---|---|
[BOJ 26008] 해시 해킹 (1) | 2024.03.24 |
[BOJ 2036] 수열의 점수 (0) | 2024.03.19 |
[BOJ 7795] 먹을 것인가 먹힐 것인가 (0) | 2024.03.19 |
[BOJ 10451] 순열 사이클 (2) | 2024.03.16 |