ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

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

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

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์œ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์˜ˆ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. ์ˆ˜ํ‰์œผ๋กœ ๊ทธ๋ ค์ง„ ๊ตต์€ ์‹ค์„ ์€ ์‡ ๋ง‰๋Œ€๊ธฐ์ด๊ณ , ์ ์€ ๋ ˆ์ด์ €์˜ ์œ„์น˜, ์ˆ˜์ง์œผ๋กœ ๊ทธ๋ ค์ง„ ์ ์„  ํ™”์‚ดํ‘œ๋Š” ๋ ˆ์ด์ €์˜ ๋ฐœ์‚ฌ ๋ฐฉํ–ฅ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ด์ €์™€ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๋ฐฐ์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ๋ ˆ์ด์ €๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ์ธ์ ‘ํ•œ ์Œ ‘( ) ’ ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ‘( ) ’๋Š” ๋ฐ˜๋“œ์‹œ ๋ ˆ์ด์ €๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.
  2. ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ์™ผ์ชฝ ๋์€ ์—ฌ๋Š” ๊ด„ํ˜ธ ‘ ( ’ ๋กœ, ์˜ค๋ฅธ์ชฝ ๋์€ ๋‹ซํžŒ ๊ด„ํ˜ธ ‘) ’ ๋กœ ํ‘œํ˜„๋œ๋‹ค.

์œ„ ์˜ˆ์˜ ๊ด„ํ˜ธ ํ‘œํ˜„์€ ๊ทธ๋ฆผ ์œ„์— ์ฃผ์–ด์ ธ ์žˆ๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๋ ˆ์ด์ €์— ์˜ํ•ด ๋ช‡ ๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๋Š”๋ฐ, ์œ„ ์˜ˆ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์‡ ๋ง‰๋Œ€๊ธฐ๋Š” ๊ฐ๊ฐ 3๊ฐœ์™€ 2๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๊ณ , ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ฃผ์–ด์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ๋“ค์€ ์ด 17๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง„๋‹ค.

์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ž˜๋ ค์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ ์กฐ๊ฐ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

<๋ฌธ์ œ ๋งํฌ>

 

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

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

www.acmicpc.net


์ž…๋ ฅ

ํ•œ ์ค„์— ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ด„ํ˜ธ ํ‘œํ˜„์ด ๊ณต๋ฐฑ์—†์ด ์ฃผ์–ด์ง„๋‹ค. ๊ด„ํ˜ธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 100,000์ด๋‹ค.


์ถœ๋ ฅ

์ž˜๋ ค์ง„ ์กฐ๊ฐ์˜ ์ด ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜๋ฅผ ํ•œ ์ค„์— ์ถœ๋ ฅํ•œ๋‹ค.


๋ฌธ์ œ ํ’€์ด

ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์ƒํ™ฉ์œผ๋กœ ๋‚˜๋ˆ ์„œ ์ƒ๊ฐํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‹ซํžŒ ๊ด„ํ˜ธ' ) ' ๊ฐ€ ๋ ˆ์ด์ €๋ฅผ ๋œปํ•˜๋Š”์ง€, ์‡ ์˜ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ธ์ง€.

 

๋‹ซํžŒ ๊ด„ํ˜ธ ์•ž์— ์—ด๋ฆฐ ๊ด„ํ˜ธ' ( ' ๊ฐ€ ์žˆ์—ˆ๋‹ค๋ฉด ๋ ˆ์ด์ €๋ฅผ ๋œปํ•˜๋Š” ๊ฒƒ์ผ ๊ฑฐ๊ณ , ๊ทธ ์™ธ์— ์ƒํ™ฉ์€ ์‡ ์˜ ๋งˆ์ง€๋ง‰์„ ๋‚˜ํƒ€๋‚ผ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ž์—ด์„ ์ˆœํšŒ๋ฅผ ๋Œ๋ฉฐ ์Šคํƒ์— ์—ด๋ฆฐ ๊ด„ํ˜ธ' ( ' ๋ฅผ push ํ•ด์ฃผ๊ณ , ๋‹ซํžŒ ๊ด„ํ˜ธ' ) ' ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์ž˜๋ฆฐ ์‡ ์˜ ๊ฐœ์ˆ˜๋Š” ๋‹ซํžŒ ๊ด„ํ˜ธ' ) ' ๊ฐ€ ๋‚˜์™”์„ ๋•Œ, ๋ ˆ์ด์ €์ธ์ง€ ์‡ ์˜ ๋งˆ์ง€๋ง‰์ธ์ง€ ํŒ๋‹จ์„ ํ•ด์ฃผ๊ณ 

์Šคํƒ์— ๋‚จ์•„ ์žˆ๋Š” ์—ด๋ฆฐ ๊ด„ํ˜ธ ' ( ' ์˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜๋ฉด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์Šคํƒ์— ์—ด๋ฆฐ ๊ด„ํ˜ธ' ( '  3๊ฐœ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๊ณ  ๋ ˆ์ด์ €๊ฐ€ ๋‚˜์˜จ ์ƒํ™ฉ์ด๋ผ๋ฉด ์ž˜๋ ค ๋‚˜์˜จ ์‡ ์˜ ๊ฐœ์ˆ˜๋Š” 3๊ฐœ ์ผ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ ๋‹ซํžŒ ๊ด„ํ˜ธ' ) ' ๊ฐ€ ์‡ ์˜ ๋งˆ์ง€๋ง‰์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๋ฉด ํ•ด๋‹น ์‡ ์˜ ๋์˜ ๋‚จ๊ฒจ์ง„ ์‡ ์˜ ๊ฐœ์ˆ˜ 1๊ฐœ๋ฅผ 

๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

c++์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์—ด์˜ ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ๊ด„ํ˜ธ์˜ ์ด์ „ ๊ด„ํ˜ธ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ swift์˜ ๊ฒฝ์šฐ ๋ฌธ์ž์˜ ์„œ๋ธŒ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์„ ์ง€์›ํ•ด์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๊ด„ํ˜ธ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด 

๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์—ฌ ์ €์žฅํ•ด์ฃผ์–ด ํ™•์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํ’€์ด ์ˆœ์„œ

1. ์Šคํƒ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

2. ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ด„ํ˜ธ์— ๋”ฐ๋ผ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

- ์—ด๋ฆฐ ๊ด„ํ˜ธ' ( ' ๋ผ๋ฉด ์Šคํƒ์— ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

- ๋‹ซํžŒ ๊ด„ํ˜ธ ' ) ' ๋ผ๋ฉด ์ด์ „์˜ ๊ด„ํ˜ธ์— ๋”ฐ๋ผ ๋ถ„๊ธฐ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2-1.

๋‹ซ๋Š” ๊ด„ํ˜ธ ์•ž์— ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด, ์ด๋Š” ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๋์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „์˜ ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ์Šคํƒ์—์„œ popํ•˜๊ณ  ์ž˜๋ฆฐ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.

2-2.

๋‹ซ๋Š” ๊ด„ํ˜ธ ์•ž์— ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜จ๋‹ค๋ฉด, ์ด๋Š” ๋ ˆ์ด์ €๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด์ „์˜ ๋ ˆ์ด์ €๋ฅผ ํ‘œ์‹œํ•œ ์—ฌ๋Š” ๊ด„ํ˜ธ๋ฅผ ์Šคํƒ์—์„œ popํ•˜๊ณ  ์Šคํƒ์— ๋‚จ์•„ ์žˆ๋Š” ์—ด๋ฆฐ ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž˜๋ฆฐ ์‡ ๋ง‰๋Œ€๊ธฐ์˜ ๊ฐœ์ˆ˜์— ๋”ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด ์ฝ”๋“œ

< Swift>

// Swift
var str = readLine()!

var s = [Character]()
var t = 0
var prev: Character = " "

for c in str {
    if c == "(" {
        s.append(c)
        prev = c
    } else { // ")"
        if prev == "(" {
            s.removeLast()
            t += s.count
        } else { // prev == ")"
            s.removeLast()
            t += 1
        }
        prev = c
    }
}

print(t)

< C++>

// C++

#include <bits/stdc++.h>
using namespace std;

string s;
long long  ans = 0;
stack<char> st;
int main(void){
  ios::sync_with_stdio(0);
  cin.tie(0);
    
  cin >> s;
    
  int sz = s.length();  
  //Implicit conversion loses integer precision: 'size_type' (aka 'unsigned long') to 'int'
    
  for (int i = 0; i < sz; i++) {
    if (s[i]=='(')  // ๋ฌธ์ž์—ด์˜ ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ ํ™œ์šฉ
      st.push(s[i]);
    else {
      if (s[i-1] == '(') { // ๋ ˆ์ด์ €์ผ ๊ฒฝ์šฐ
        st.pop();
        ans+=st.size();
      }
      else { // s[i-1] == ')' // ์‡ ๊ฐ€ ๋Š๋Š” ๊ฒฝ์šฐ
        st.pop();
        ans++;
      }
    }
  }
  cout << ans << "\n";
  return 0;
}

<int, long ๋น„๊ต์— ๊ด€ํ•œ ์ฐธ๊ณ  ์ž๋ฃŒ>


๋งˆ๋ฌด๋ฆฌ

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ์กฐ๊ฑด์„ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ๋‹ต์„ ๋‚ด๋ ค๊ณ  ํ•˜๋ฉด ์–ด๋ ค์šด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ฌธ์ œ ์ƒํ™ฉ์„ ๊นŠ์ด ํŒŒ์•…ํ•˜๊ณ  ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์นด์šดํŠธ๋ฅผ ํ•  ์ง€ ๊ณ ๋ฏผํ•ด๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

์ถ”๊ฐ€๋กœ, xcode์—์„œ ์ž‘์„ฑํ•œ C++ ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•œ ๊ฒฝ๊ณ ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ๊ฐœ๋…์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ, int์™€ long ํƒ€์ž…์— ๋Œ€ํ•œ ํฅ๋ฏธ๋กœ์šด ์ด์•ผ๊ธฐ๋ฅผ ์ฐพ์•„๋ณด์•˜๋Š”๋ฐ, ์ด ๋‚ด์šฉ์€ ์ฐธ๊ณ  ์ž๋ฃŒ๋กœ ๋‚จ๊ฒจ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.