๋ฐฑ์ค€

๋ฐฑ์ค€ 9012 ๊ด„ํ˜ธ - ํŒŒ์ด์ฌ

stoneeee 2022. 11. 20. 11:47

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

 

9012๋ฒˆ: ๊ด„ํ˜ธ

๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Parenthesis String, PS)์€ ๋‘ ๊ฐœ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ์ธ ‘(’ ์™€ ‘)’ ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ๊ทธ ์ค‘์—์„œ ๊ด„ํ˜ธ์˜ ๋ชจ์–‘์ด ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Valid PS, VPS)์ด๋ผ๊ณ 

www.acmicpc.net

 

์Šคํƒ์—์„œ ์•„์ด๋””์–ด๋ฅผ ๋ฝ‘์•„๋‚ธ ๋ฌธ์ œ์ด๋‹ค.

'๊ด„ํ˜ธ'๋Š” ์Šคํƒ์˜ ๋‹จ๊ณจ ์ฃผ์ œ์ธ๋ฐ, ์ด ๋ฌธ์ œ๋Š” "(", ")" ๋‘ ์ข…๋ฅ˜๋งŒ ์‹ ๊ฒฝ์“ฐ๋ฉด ๋˜๋Š” ์ดˆ์‹ฌ์ž์šฉ ๋ฌธ์ œ์ด๋‹ค.

'๊ด„ํ˜ธ๊ฐ€ ๋‹ซํžˆ๋ ค๋ฉด ์—ด๋ฆฐ ์ ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค'๋ฅผ ๋ช…์‹ฌํ•˜๋ฉด ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

 

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")