[๋ฐฑ์ค] 11899 ๊ดํธ ๋ผ์๋ฃ๊ธฐ with Python
๐ BOJ 11899 ๊ดํธ ๋ผ์๋ฃ๊ธฐ
๐ก ์กฐ๊ฑด
์ฌ๋ฐ๋ฅด์ง ์์ ๊ดํธ์ด์ด ์ฃผ์ด์ง ๋, ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ์๊ณผ ๋ค์ ๋ถ์ฌ์ผ ํ ๊ดํธ์ ์ต์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ .
S์ ๊ธธ์ด๋ 1 ์ด์ 50 ์ดํ์ด๋ฉฐ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง์ง ์๋๋ค.
๊ดํธ์ด์ด๋ ์ฌ๋ ๊ดํธ โ(โ์ ๋ซ๋ ๊ดํธ โ)โ๋ก๋ง ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ๋งํฉ๋๋ค.
์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ ์๋์ ๊ฐ์ด ์ ์ํ ์ ์๋ค.
- "()"๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ ๋๋ค.
- A๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ผ๋ฉด "(A)" ์ญ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ ๋๋ค.
- A์ B๊ฐ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ด๋ผ๋ฉด "AB" ์ญ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด์ ๋๋ค.
๋ฌธ์์ด, ์คํ, ์๋ฃ๊ตฌ์กฐ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
g = stdin.readline().rstrip()
cnt = 0
def solve(s):
global cnt
temp = 0
for i in range(len(s) - 1, -1, -1):
if s[i] == ')':
temp += 1
else:
if temp - 1 < 0:
cnt += 1
else:
temp -= 1
if temp != 0:
cnt += temp
solve(g)
print(cnt)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
))()((
์คํ๊ฒฐ๊ณผ
4
โจ๏ธ ๋ฌธ์ ํ์ด
๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ solve() ํจ์๋ฅผ ๊ฑฐ์ณ cnt์ ์ ์ฅ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.
solve() ๋ ๋ฌธ์์ด์ ์ญ์ํํ๋ฉฐ ๋ซ๋ ๊ดํธ์ ์๋ฅผ ์ธ๋ฉฐ temp ์ ์ ์ฅํ๋ค.
๋ง์ฝ ์ํํ๋ ์ค, ๋ซ๋ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ํ temp๊ฐ 0์ผ ๊ฒฝ์ฐ, cnt + 1
๋ง์ฝ ์ํํ๋ ์ค, ๋ซ๋ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ํ temp๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ, temp - 1
์ํ๊ฐ ๋๋ ํ์ temp ๊ฐ 0์ด ์๋๋ผ๋ฉด cnt ์ temp๋ฅผ ๋ํด์ค๋ค.
cnt ์ถ๋ ฅ
๐พ ๋๋์
- ํ๋ก๊ทธ๋๋จธ์ค์์ ๊ดํธ ๋ณํ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ณ ์์ ํด์ ๊ทธ๋ฐ์ง, ๊ฐ๊ฐ์ ํ์ค์ด ๊นจ์ด ์๋ ๋ฏํ๋ค.