๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€,c++] 10799๋ฒˆ - ์‡ ๋ง‰๋Œ€๊ธฐ

by ์•ˆ์ฃผํ˜• 2022. 3. 10.

๋ฌธ์ œ

 

10799๋ฒˆ: ์‡ ๋ง‰๋Œ€๊ธฐ

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ๋ ˆ์ด์ €๋กœ ์ ˆ๋‹จํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ํšจ์œจ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด์„œ ์‡ ๋ง‰๋Œ€๊ธฐ๋ฅผ ์•„๋ž˜์—์„œ ์œ„๋กœ ๊ฒน์ณ ๋†“๊ณ , ๋ ˆ์ด์ €๋ฅผ ์œ„์—์„œ ์ˆ˜์ง์œผ๋กœ ๋ฐœ์‚ฌํ•˜์—ฌ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์„ ์ž๋ฅธ๋‹ค. ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €

www.acmicpc.net

 

์ฝ”๋“œ

#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)์ด๋ฉฐ ๊ตฌํ˜„์€ ์–ด๋ ต์ง€ ์•Š์•˜์œผ๋‚˜, ํ•ด๊ฒฐ ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š”๋ฐ ๊ฝค ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€