๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€

[BAEKJOON] 9012 | ๊ด„ํ˜ธ

by flowing1ife 2024. 11. 5.

๐Ÿ”Ž 9012 | ๊ด„ํ˜ธ

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


๐Ÿ’ก Solution

Callout Box
โœ๐Ÿป
Logic
1. ์Šคํƒ์— ๊ด„ํ˜ธ๋ฅผ ๋„ฃ๋Š”๋‹ค. ์ด ๋•Œ, ๋“ค์–ด์˜ค๋Š” ๊ด„ํ˜ธ๋Š” '('์™€ ')'๋กœ ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์ด๋‹ค.
2. '('์˜ ๊ฒฝ์šฐ, ๊ทธ๋ƒฅ ์Šคํƒ์— ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.
3. ')'์˜ ๊ฒฝ์šฐ, VPS์ธ์ง€ ํ™•์ธํ•˜๋Š” ์ค‘์š”ํ•œ ์ฒ™๋„๊ฐ€ ๋˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.
โˆ™ ๋จผ์ € ์Šคํƒ์ด ๋น„์—ˆ๋Š”์ง€ ํ™•์ธ - ์Šคํƒ์ด ๋น„์—ˆ๋Š”๋ฐ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด VPS ๊ฐ€ ์•„๋‹˜
โˆ™ ์Šคํƒ์ด ๋น„์ง€ ์•Š์•˜๋‹ค๋ฉด ์Šคํƒ์˜ top ์›์†Œ๊ฐ€ '('์ธ์ง€ ํ™•์ธ - ๋งž๋‹ค๋ฉด VPS์ด๋ฏ€๋กœ pop
โˆ™ ์œ„์˜ ๊ฒฝ์šฐ๊ฐ€ ๋ชจ๋‘ ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ๋ƒฅ ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.
4. ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ชจ๋“  ๊ด„ํ˜ธ ์—ฐ์‚ฐ์ด ๋๋‚œ ํ›„, ์Šคํƒ์ด ๋น„์—ˆ๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค. ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด VPS๊ฐ€ ์•„๋‹ˆ๋‹ค.
n = int(input())

def isVPS(ps) :
    stack = list()
    for i in range(len(ps)) :
        if ps[i] == '(' :
            stack.append(ps[i])
        elif ps[i] == ')' :
            if len(stack) == 0 :
                print('NO')
                return
            elif stack[-1] == '(' :
                stack.pop()
            else :
                stack.append(ps[i])
                
    
    if len(stack) == 0 :
        print('YES')
        return
    else :
        print('NO')
        return
        

while n : 
    ps = input().rstrip()
    isVPS(ps)
    n -= 1

Toggle Example
โ–ถ ๐Ÿ“Œ Note
โˆ™ ์Šคํƒ popํ•˜๊ธฐ ์ „์— ๋น„์–ด์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š” !