• toc {:toc}

๋ฌธ์ œ ํ™•์ธํ•˜๊ธฐ

ํ’€์ด

ํ•ด๋‹น ๋ฌธ์ œ๋Š” ICPC Asia Regional - Seoul 2022 ๋ฌธ์ œ์ด๋‹ค.

๋ฐฑ์ค€์—์„œ ์–ด๋А ์ •๋„ ์ ‘ํ•ด๋ณธ ๊ด„ํ˜ธ ๋ฌธ์ œ์ด๋‹ค. ๊ด„ํ˜ธ๊ฐ€ ์—ด๋ฆผ์— ๋”ฐ๋ผ depth๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ , ๊ด„ํ˜ธ๊ฐ€ ๋‹ซํžˆ๋ฉด depth, distance๋ฅผ ๊ฒฐ๊ณผ์— ๋”ํ•ด์ค€๋‹ค. ์ด ๋•Œ, ์œ ์˜ํ•  ์ ์€ ๊ฐ€์žฅ ๊นŠ์€ ๋ถ€๋ถ„์—์„œ ์ฒดํฌ๋ฅผ ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ฒฝ๋กœ์˜ ๋…ธ๋“œ ์ ์ˆ˜๋Š” ์ฒดํฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์ ์ด๋‹ค.

image

๊ทธ๋ฆผ์„ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด์ž.
์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์—์„œ 4๋ฅผ ์ ์ˆ˜๋กœ ์–ป์€ ๊ฒฝ์šฐ, ํ•ด๋‹น ๊ฒฝ๋กœ์˜ depth 3, 2, 1์€ ์ ์ˆ˜๋ฅผ ์ฒดํฌํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. ๋•Œ๋ฌธ์— ํ•ด๋‹น ์กฐ๊ฑด์„ ์ฐพ์•„์ค˜์•ผ ํ•œ๋‹ค.

์œ„์—์„œ ( ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ depth๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ) ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ ์ค‘, ์—ฐ์†์œผ๋กœ ) ๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น depth์—์„œ์˜ ๊ณ„์‚ฐ์„ ๋งˆ์น˜๊ณ  ๋‹ค๋ฅธ depth๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋•Œ๋ฌธ์— ํ•ด๋‹น ๋ถ€๋ถ„์€ ๊ฒฐ๊ด๊ฐ’์— ๋„ฃ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

ํ•ญ์ƒ ๋ฒ”์œ„ ์•ˆ์—์„œ ๊ณ„์‚ฐ๊ฐ’์ด ์„ฑ๋ฆฝํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ ์‰ฝ์ง€ ์•Š๋‹ค. ๋งŒ์•ฝ ( ๊ฐ€ ๊ฐœ ์กด์žฌํ•˜๊ณ  ()๊ฐ€ ๊ฐœ ์กด์žฌํ•˜๊ณ  ) ๊ฐ€ ๊ฐœ ์กด์žฌํ•œ๋‹ค๋ฉด? depth๊ฐ€ ๋งŒํผ ์ฆ๊ฐ€ํ•˜๊ณ  ํ•ด๋‹น distance ๊ฐ€ ๋ฒˆ ๋”ํ•ด์ ธ์•ผ ํ•œ๋‹ค. ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๊ฐ’์„ int๋กœ๋Š” ์ˆ˜์šฉํ•  ์ˆ˜ ์—†๋‹ค. long long int๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
 
int depth = 0;
long long res = 0;
 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
 
    string str;
    cin >> str;
 
    for(int i = 0; i < str.size(); i++){
        if(str[i] == '('){
            depth++;
        }
        else if(depth != 0 && str[i] == ')' && str[i-1] != ')'){
            depth--;
            res += depth;
        }
        else depth--;
    }
 
    cout << res << endl;
    
    return 0;
}