๋ฌธ์
์ฝ๋
#include <iostream>
#include <stack>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
string s; cin>>s;
stack<char>st;
int ans = 0;
for(int i=0; i<s.length(); i++){
if(s[i]=='(') st.push(s[i]);
else if(s[i]==')'&&s[i-1]=='('){
st.pop();
ans += st.size();
}
else{
st.pop();
ans++;
}
}
cout<<ans;
}
ํ์ด
๊ฐ๋จํ ์์ ์ธ ( ( ( ) ) )๋ผ๋ ์ ๋ ฅ์ผ๋ก ํ๋ฒ ์๊ฐํด ๋ด ์๋ค.
์ ์ด๋ฏธ์ง๋ฅผ ์์ ๋ก ์ฝ๋๋ฅผ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
- ์ ๋ ฅ์ด '('์ผ ๋๋ ์คํ์ ๋ฃ์ต๋๋ค.
- ์
๋ ฅ์ด ')'์ผ ๋๋ ์ด์ ์
๋ ฅ๊ณผ ๋น๊ต(์คํ ๋ง๊ณ ๋ฌธ์์์ ๋น๊ต)ํ์ฌ ๋ ์ด์ ์ธ์ง ์๋์ง ์ฒดํฌํฉ๋๋ค.
- -> ๋ง์ฝ ๋ ์ด์ ์ผ ๊ฒฝ์ฐ ์คํ์ ์ฌ์ด์ฆ๋งํผ ๋ํด์ค๋๋ค. (์คํ์ ์ฌ์ด์ฆ๋ ์ ์ด๋ฏธ์ง 1๋ฒ๊ณผ 2๋ฒ ๋ง๋๊ธฐ)
- -> ๋ ์ด์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ทธ๋ฅ 1์ฉ ๋ํด์ฃผ๋ฉด 3๋ฒ๊ณผ 4๋ฒ์ ๊ฐ๊ฐ ๋ํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ์ผ๋ฏ๋ก 1์ฉ ๋ํด์ค๋๋ค.
๋ฌธ์์ด์ ๊ธธ์ด๋งํผ๋ง for๋ฌธ์ ๋๋ ค์ฃผ๋ฉด ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ด๋ฉฐ ๊ตฌํ์ ์ด๋ ต์ง ์์์ผ๋, ํด๊ฒฐ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๋๋ฐ ๊ฝค ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฐ ๋ฌธ์ ์์ต๋๋ค.
'Algorithm ๐ง๐ปโ๐ป > ๋ฐฑ์ค(BOJ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค,c++] 1021๋ฒ - ํ์ ํ๋ ํ (0) | 2022.03.11 |
---|---|
[๋ฐฑ์ค,c++] 2346๋ฒ - ํ์ ํฐ๋จ๋ฆฌ๊ธฐ (0) | 2022.03.11 |
[๋ฐฑ์ค,c++] 13305๋ฒ - ์ฃผ์ ์ (0) | 2022.03.11 |
[๋ฐฑ์ค,c++] 1935๋ฒ - ํ์ ํ๊ธฐ์2 (0) | 2022.03.10 |
[๋ฐฑ์ค,c++] 23977๋ฒ - To Find Password (0) | 2022.03.10 |
[๋ฐฑ์ค,c++] 1874๋ฒ - ์คํ ์์ด (0) | 2022.03.09 |
๋๊ธ