https://www.acmicpc.net/problem/9012
์คํ์์ ์์ด๋์ด๋ฅผ ๋ฝ์๋ธ ๋ฌธ์ ์ด๋ค.
'๊ดํธ'๋ ์คํ์ ๋จ๊ณจ ์ฃผ์ ์ธ๋ฐ, ์ด ๋ฌธ์ ๋ "(", ")" ๋ ์ข ๋ฅ๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋๋ ์ด์ฌ์์ฉ ๋ฌธ์ ์ด๋ค.
'๊ดํธ๊ฐ ๋ซํ๋ ค๋ฉด ์ด๋ฆฐ ์ ์ด ์์ด์ผ ํ๋ค'๋ฅผ ๋ช ์ฌํ๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
stack์ด๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํด์ฃผ๊ณ ์คํ์ฒ๋ผ ์ผ๋ค.
๋ฌธ์์ด์ ์ํํ๋ฉฐ "("์ด ๋ํ๋๋ฉด stack์ ๋ฃ์ด์ค๋ค.
")"์ด ๋ํ๋๋ฉด stack์ ์ดํด๋ณธ๋ค.
"("๊ฐ ํ๋๋ผ๋ ์กด์ฌํ๋ค๋ฉด ์ด๋ฆฐ ์ ์ด ์๋ ๊ดํธ๋๊น popํด์ฃผ๊ณ ๋์ด๊ฐ๋ค. ์ด๋ฆฐ ๊ดํธ๋ฅผ ๋ซ์๋ค๋ ์ ๋์ ์๋ฏธ์ด๋ค.
๋ง์ฝ stack์ด ๋น์ด์๋ค๋ฉด ์ด๋ฆฌ์ง ์์ ๊ดํธ๋ฅผ ๋ซ์๋ฒ๋ฆฐ ๊ฑฐ๋๊น ๋ฐ๋ก ํ๋ ธ๋ค๊ณ ์ง์ ํด์ค๋ค.
์ํ๋ฅผ ๋ง์น ๋ค stack์ "("๊ฐ ๋ค์ด์์ผ๋ฉด ์ง์ด ์๋ง๋๋ค๋ ์๋ฆฌ๋ค.
"("๊ฐ ")"๋ณด๋ค ๋ง์๋ค๋ ์๋ฏธ๋๊น ์ญ์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋๋ค.
for _ in range(int(input())):
data = input()
stack = [] # "("๋ฅผ ๋ณด๊ดํ ์คํ
answer = "YES"
for d in data:
if d == "(":
stack.append("(")
else:
if stack: # ๊ดํธ๊ฐ ์ด๋ฆฐ ์ ์ด ์์ผ๋ OK
stack.pop()
else: # ์๋ชป๋ ๊ดํธ NO!
answer = "NO"
break
if stack: # ์ฌ๋ ๊ดํธ๊ฐ ๋ซ๋ ๊ดํธ๋ณด๋ค ๋ง๋ค๋ ๋ป NO!
answer = "NO"
print(answer)
๋์น ๋น ๋ฅธ ์ฌ๋์ ์ด๋ฏธ ์์๊ฒ ์ง๋ง ์คํ์ด ๊ตณ์ด ์ง์ง ์คํ์ด์ง ์์๋ ๋๋ค.
์ด์ฐจํผ "("๋ง ์ง์ด๋ฃ๊ณ ์์ผ๋ ๊ตฌ๋ถํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค.
stack์ ๋ฆฌ์คํธ๊ฐ ์๋๋ผ ์ ์๋ก ์ ์ธํ๊ณ , ๋ค์ด ์๋ "("์ ๊ฐ์๋ง ์ธ์ด์ฃผ๋ ๊ฒ์ด ๋ ํฉ๋ฆฌ์ ์ธ ํ์ด์ด๋ค.
from sys import stdin
for _ in range(int(input())):
data = stdin.readline().rstrip()
stack = 0
for d in data:
if d == "(":
stack += 1
else:
if stack:
stack -= 1
else:
stack += 1
break
if stack:
print("NO")
else:
print("YES")
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 1943 ๋์ ๋ถ๋ฐฐ - ํ์ด์ฌ (0) | 2022.11.23 |
---|---|
๋ฐฑ์ค 1107 ๋ฆฌ๋ชจ์ปจ - ํ์ด์ฌ (0) | 2022.11.20 |
๋ฐฑ์ค 11286 ์ ๋๊ฐ ํ - ํ์ด์ฌ (0) | 2022.11.19 |
๋ฐฑ์ค 24337 ๊ฐํฌ์ ํ - ํ์ด์ฌ (5) | 2022.11.19 |
๋ฐฑ์ค 17478 ์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์? - ํ์ด์ฌ (1) | 2022.11.19 |