- toc {:toc}
λ¬Έμ
μ¬λ¬ κ°μ μ λ§λκΈ°λ₯Ό λ μ΄μ λ‘ μ λ¨νλ €κ³ νλ€. ν¨μ¨μ μΈ μμ μ μν΄μ μ λ§λκΈ°λ₯Ό μλμμ μλ‘ κ²Ήμ³ λκ³ , λ μ΄μ λ₯Ό μμμ μμ§μΌλ‘ λ°μ¬νμ¬ μ λ§λκΈ°λ€μ μλ₯Έλ€. μ λ§λκΈ°μ λ μ΄μ μ λ°°μΉλ λ€μ 쑰건μ λ§μ‘±νλ€.
- μ λ§λκΈ°λ μμ λ³΄λ€ κΈ΄ μ λ§λκΈ° μμλ§ λμΌ μ μλ€. - μ λ§λκΈ°λ₯Ό λ€λ₯Έ μ λ§λκΈ° μμ λλ κ²½μ° μμ ν ν¬ν¨λλλ‘ λλ, λμ μ κ²ΉμΉμ§ μλλ‘ λλλ€.
- κ° μ λ§λκΈ°λ₯Ό μλ₯΄λ λ μ΄μ λ μ μ΄λ νλ μ‘΄μ¬νλ€.
- λ μ΄μ λ μ΄λ€ μ λ§λκΈ°μ μ λμ κ³Όλ κ²ΉμΉμ§ μλλ€.
μλ κ·Έλ¦Όμ μ 쑰건μ λ§μ‘±νλ μλ₯Ό 보μ¬μ€λ€. μνμΌλ‘ κ·Έλ €μ§ κ΅΅μ μ€μ μ μ λ§λκΈ°μ΄κ³ , μ μ λ μ΄μ μ μμΉ, μμ§μΌλ‘ κ·Έλ €μ§ μ μ νμ΄νλ λ μ΄μ μ λ°μ¬ λ°©ν₯μ΄λ€.

μ΄λ¬ν λ μ΄μ μ μ λ§λκΈ°μ λ°°μΉλ λ€μκ³Ό κ°μ΄ κ΄νΈλ₯Ό μ΄μ©νμ¬ μΌμͺ½λΆν° μμλλ‘ ννν μ μλ€.
- λ μ΄μ λ μ¬λ κ΄νΈμ λ«λ κ΄νΈμ μΈμ ν μ β( ) β μΌλ‘ ννλλ€. λν, λͺ¨λ β( ) βλ λ°λμ λ μ΄μ λ₯Ό νννλ€.
- μ λ§λκΈ°μ μΌμͺ½ λμ μ¬λ κ΄νΈ β ( β λ‘, μ€λ₯Έμͺ½ λμ λ«ν κ΄νΈ β) β λ‘ ννλλ€.
μ μμ κ΄νΈ ννμ κ·Έλ¦Ό μμ μ£Όμ΄μ Έ μλ€.
μ λ§λκΈ°λ λ μ΄μ μ μν΄ λͺ κ°μ μ‘°κ°μΌλ‘ μλ €μ§λλ°, μ μμμ κ°μ₯ μμ μλ λ κ°μ μ λ§λκΈ°λ κ°κ° 3κ°μ 2κ°μ μ‘°κ°μΌλ‘ μλ €μ§κ³ , μ΄μ κ°μ λ°©μμΌλ‘ μ£Όμ΄μ§ μ λ§λκΈ°λ€μ μ΄ 17κ°μ μ‘°κ°μΌλ‘ μλ €μ§λ€.
μ λ§λκΈ°μ λ μ΄μ μ λ°°μΉλ₯Ό λνλ΄λ κ΄νΈ ννμ΄ μ£Όμ΄μ‘μ λ, μλ €μ§ μ λ§λκΈ° μ‘°κ°μ μ΄ κ°μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
ν μ€μ μ λ§λκΈ°μ λ μ΄μ μ λ°°μΉλ₯Ό λνλ΄λ κ΄νΈ ννμ΄ κ³΅λ°±μμ΄ μ£Όμ΄μ§λ€. κ΄νΈ λ¬Έμμ κ°μλ μ΅λ 100,000μ΄λ€.
μΆλ ₯
μλ €μ§ μ‘°κ°μ μ΄ κ°μλ₯Ό λνλ΄λ μ μλ₯Ό ν μ€μ μΆλ ₯νλ€.
μΆμ²: https://www.acmicpc.net/problem/10799
νμ΄
κ·μΉμ μ°ΎμΌλ €κ³ λ Έλ ₯νμ. (κ° μΆκ° λ λ λ§λ€ μ€νμ μΆκ°λκ³ )κ° μΆκ°λ¨μ λ°λΌ μ κΈμκ° ( λ λλ ) λμ λ°λΌ λ³νλ₯Ό μ€μΌ ν¨μ κΉ¨λ¬μ. λ€λ§ κ°μ μ²λ¦¬λ₯Ό νλ λΆλΆμ μμ΄μ κ³μν΄μ κ°μλ₯Ό μ€λ³΅ν΄μ μΉ΄μ΄νΈνλ λΆλΆμ΄ λ¬Έμ μλ κ² κ°μ.
*λ μ΄μ λ‘ μ λ¨νμ¬ 2κ°λ‘, μμͺ½μΌλ‘ λλλ κ²½μ°μλ λ μ΄μ λ‘ λλ μ§ λΆλΆμ νμͺ½μΌλ‘λ§ μκ°ν΄μ μΉ΄μ΄νΈ ν΄λ³΄μ. (λμ€μ μ μ΄ν΄λͺ»ν κ² κ°μλ°β¦)
κ²½μ°λ₯Ό μ λλ 보μ
#include <bits/stdc++.h>
using namespace std;
int res = 0;
stack<int> s;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
string str;
cin >> str;
for(int i=0; i<str.size(); i++){
cout << res << endl;
if(str[i] == '('){
s.push(str[i]);
}
else{ // str[i] == ')' μΌ λ
if(str[i-1] == '('){ // λ μ΄μ ΈμΌ λ
s.pop();
res += s.size();
}
else{ // λ§λκΈ°μ λμΌ λ
s.pop();
res += 1;
}
}
}
cout << res << endl;
return 0;
}