๐Ÿงท ๋ฌธ์ œ

https://www.acmicpc.net/problem/10799

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ์˜ ์Œ์„ ๋ถ„์„ํ•˜์—ฌ ์‡ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋ ˆ์ด์ €์— ์˜ํ•ด ๋ช‡ ๊ฐœ์˜ ์กฐ๊ฐ์œผ๋กœ ์ž˜๋ ค์ง€๋Š”์ง€ ์•Œ์•„๋ณด๋Š” ๋ฌธ์ œ์ด๋‹ค.

๐Ÿ›  ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์Šคํƒ์„ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

Step 1.
์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์‡ ๋ง‰๋Œ€๊ธฐ์™€ ๋ ˆ์ด์ €์˜ ๋ฐฐ์น˜๋ฅผ pipes๋กœ ๋ฐ›๊ณ  for๋ฌธ์„ ์ด์šฉํ•ด ์•ž์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
(๋ฅผ ๋งŒ๋‚˜๋ฉด stack์— pushํ•ด์ค€๋‹ค.

Step 2.
)๋ฅผ ๋งŒ๋‚˜๋ฉด pipes์˜ ๋ฐ”๋กœ ์ „ ์ธ๋ฑ์Šค๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋งŒ์•ฝ pipes[i-1]์ด (๋ผ๋ฉด ๋ ˆ์ด์ €์ด๊ธฐ ๋•Œ๋ฌธ์— stack์—์„œ popํ•ด์ฃผ๊ณ  res์— stack์˜ ๊ธธ์ด๋งŒํผ ๋”ํ•ด์ค€๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š๊ณ  pipes[i-1]์ด )๋ผ๋ฉด ํ•ด๋‹น ๋ผ์ธ์˜ ๋ง‰๋Œ€๊ธฐ๊ฐ€ ๋๋‚˜๋Š” ์ง€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— res์— 1์„ ๋”ํ•ด์ค€๋‹ค.

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋งˆ์ฃผํ–ˆ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ• ์ง€ ์ „ํ˜€ ๊ฐ์„ ๋ชป์žก์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.
์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ด๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•œ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ฌ๊ฒŒ ๋‹น์—ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์ดํ•ด๋Šฅ๋ ฅ์„ ๋†’์—ฌ์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ–Š ๋‚˜์˜ ์ฝ”๋“œ

import sys

input = sys.stdin.readline

if __name__ == "__main__":
    pipes = input().rstrip()
    stack = []
    res = 0

    for i in range(len(pipes)):
        if pipes[i] == '(':
            stack.append(pipes[i])

        else:
            stack.pop()
            if pipes[i-1] == '(':
                res += len(stack)
            else:
                res += 1

    print(res)