๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 10799 - ์‡  ๋ง‰๋Œ€๊ธฐ

by YWTechIT 2021. 7. 5.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 10799 - ์‡  ๋ง‰๋Œ€๊ธฐ

๋ฌธ์ œ: ๋ฐฑ์ค€ 10799 - ์‡  ๋ง‰๋Œ€๊ธฐ


๐Ÿ’ก ๋‚˜์˜ ํ’€์ด

stack์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‚˜, ๋ ˆ์ด์ €์™€ ์‡  ๋ง‰๋Œ€๊ธฐ์˜ ๊ด€๊ณ„๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค.

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์˜ˆ์ œ๋Š” ์˜ฌ๋ฐ”๋ฅธ(์ง์ด ๋งž๋Š”) ๊ด„ํ˜ธ๋งŒ ์ฃผ์–ด์ง„๋‹ค๋Š” ์ ์„ ์•Œ๊ณ  ํ’€๋ฉด ์ ‘๊ทผํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค. ๋˜ ํ•˜๋‚˜์˜ ๊นจ์•Œ ํŒ์€ ์ž…๋ ฅ๋ฒ”์œ„๊ฐ€ 100,000์ด๋ผ์„œ import sys๋ฅผ ์จ์•ผ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.

 

  1. ์—ฌ๋Š” ๊ด„ํ˜ธ(()๋Š” stack์— ์ง‘์–ด๋„ฃ๋Š”๋‹ค
  2. ๋‹ซ๋Š” ๊ด„ํ˜ธ())๊ฐ€ ๋‚˜์˜ฌ ๋•Œ ์‡  ๋ง‰๋Œ€๊ธฐ์ธ์ง€ ๋ ˆ์ด์ €์ธ์ง€ ๊ตฌ๋ถ„ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์šฐ์„  ๋ ˆ์ด์ €๋Š” ์ธ์ ‘ํ•œ ์Œ(์ฆ‰, ํ˜„์žฌ index๊ฐ€ ) ์ด๋ฉด ๋ฌด์กฐ๊ฑด ์ด์ „ index๋Š” ()์ด๋‹ค. ๊ทธ๋Ÿผ ๋‚˜๋จธ์ง€์˜ ๊ฒฝ์šฐ๋Š” ๋ชจ๋‘ ์‡  ๋ง‰๋Œ€๊ธฐ๋กœ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ ˆ์ด์ €์˜ ๊ฒฝ์šฐ๋Š” ํ˜„์žฌ๊นŒ์ง€ ๋“ค์–ด์žˆ๋Š” len(stack)์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.(์ฐธ๊ณ ๋กœ stack์— ์—ฌ๋Š” ๊ด„ํ˜ธ๋งŒ ๋“ค์–ด์žˆ๋‹ค.)
  4. ๋ ˆ์ด์ €๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ(์‡  ๋ง‰๋Œ€๊ธฐ์ธ ๊ฒฝ์šฐ)๋Š” ๋ˆ„์  cnt ๊ฐ’์— +1์„ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.
728x90

์ด ๋ฌธ์ œ์˜ ๊ด€๊ฑด์€ pop()์˜ ์‹œ์ ์ธ๋ฐ, ๋ ˆ์ด์ €์˜ ๊ฒฝ์šฐ stack[-1]๊ฐ’์„ pop ํ•ด์ฃผ๊ณ  len(stack)์„ ํ•ด์ฃผ๊ณ , ์‡  ๋ง‰๋Œ€๊ธฐ์˜ ๊ฒฝ์šฐ cnt += 1 ์ดํ›„ pop์„ ํ•ด์ฃผ๋Š”๊ฒƒ์ด ์ „์ฒด ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ์— ์ ์ ˆํ•˜๋‹ค. (๋ฌผ๋ก  18, 19๋ฒˆ์งธ ์ฝ”๋“œ๋ฅผ ๋’ค๋ฐ”๊ฟ” ์ œ์ถœํ•ด๋„ ์ •๋‹ต์ด๋‹ค.)

 

import sys
input = sys.stdin.readline

s = input().rstrip()
stack = []
cnt = 0

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

    else:    # ')'
        if s[i-1] == '(':    # Razor
            stack.pop()
            cnt = cnt + len(stack)

        else:    # ')', ironBar
            cnt += 1
            stack.pop()
print(cnt)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€