[๋ฐฑ์ค€/python] 9012๋ฒˆ : ๊ด„ํ˜ธ

2021. 3. 30. 12:32

๋ฌธ์ œ

๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Parenthesis String, PS)์€ ๋‘ ๊ฐœ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ์ธ ‘(’ ์™€ ‘)’ ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ๊ทธ ์ค‘์—์„œ ๊ด„ํ˜ธ์˜ ๋ชจ์–‘์ด ๋ฐ”๋ฅด๊ฒŒ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(Valid PS, VPS)์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ํ•œ ์Œ์˜ ๊ด„ํ˜ธ ๊ธฐํ˜ธ๋กœ ๋œ “( )” ๋ฌธ์ž์—ด์€ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ๋งŒ์ผ x ๊ฐ€ VPS ๋ผ๋ฉด ์ด๊ฒƒ์„ ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ์— ๋„ฃ์€ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด “(x)”๋„ VPS ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ VPS x ์™€ y๋ฅผ ์ ‘ํ•ฉ(concatenation)์‹œํ‚จ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด xy๋„ VPS ๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด “(())()”์™€ “((()))” ๋Š” VPS ์ด์ง€๋งŒ “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ  “(()” ๋Š” ๋ชจ๋‘ VPS ๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์ด๋‹ค.

์—ฌ๋Ÿฌ๋ถ„์€ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด VPS ์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ด์„œ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ YES ์™€ NO ๋กœ ๋‚˜ํƒ€๋‚ด์–ด์•ผ ํ•œ๋‹ค. 

 

์ž…๋ ฅ

์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋Š” ํ‘œ์ค€ ์ž…๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ์ž…๋ ฅ์€ T๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ์ฒซ์งธ ์ค„์—๋Š” ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ํ•œ ์ค„์— ์ฃผ์–ด์ง„๋‹ค. ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 50 ์ดํ•˜์ด๋‹ค. 

 

์ถœ๋ ฅ

์ถœ๋ ฅ์€ ํ‘œ์ค€ ์ถœ๋ ฅ์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋งŒ์ผ ์ž…๋ ฅ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ด ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด(VPS)์ด๋ฉด “YES”, ์•„๋‹ˆ๋ฉด “NO”๋ฅผ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. 

 

์ •๋‹ต

import sys
T = int(sys.stdin.readline())

answer = []
for i in range(T):
    vps = list(input())
    stack = []
    a = "YES"
    for n in vps:
        if n == ")":
        	# stack์— "("๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
            if not stack:
                a = "NO"
                break
            ps = stack.pop()
		# n == "("
        else:
            stack.append(n)
    # ์ง์ง€์–ด์งˆ "("๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
    if stack:
        a = "NO"
    answer.append(a)


for i in answer:
    print(i)

์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด stack์— ๋„ฃ์–ด์ฃผ๊ณ  ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”์„ ๋•Œ stack์—์„œ pop()ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

์ด ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•  ๋•Œ NO๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ๋ฅผ ๊ฑธ๋Ÿฌ a์— "NO"๋ฅผ ์ €์žฅํ•œ๋‹ค.

 

"NO"๊ฐ€ ๋‚˜์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

  1. "("๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „์— ")"๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ : ")"๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ stack์ด ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ
  2. ")"์™€ ์ง์ง€์„ "("๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ : ")"๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ stack์ด ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ
  3. "("์™€ ์ง์ง€์„ ")"๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ : ๋ฌธ์žฅ์˜ ๋ชจ๋“  ๊ด„ํ˜ธ๋ฅผ ํ™•์ธํ•œ ํ›„์—๋„ stack์— "("๊ฐ€ ๋‚จ์•„์žˆ์„ ๊ฒฝ์šฐ

์•„๋ž˜ ํฌ์ŠคํŒ…์€ ์ด ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ์˜ˆ์ œ์ด๋‹ค.

2021.03.12 - [๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€] - [๋ฐฑ์ค€/python] 4949๋ฒˆ : ๊ท ํ˜•์žกํžŒ ์„ธ์ƒ

 

[๋ฐฑ์ค€/python] 4949๋ฒˆ : ๊ท ํ˜•์žกํžŒ ์„ธ์ƒ

๋ฌธ์ œ ์„ธ๊ณ„๋Š” ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์–‘๊ณผ ์Œ, ๋น›๊ณผ ์–ด๋‘  ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค. ์ •๋ฏผ์ด์˜ ์ž„๋ฌด๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ด„ํ˜ธ๋“ค์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž์ถฐ์ ธ ์žˆ๋Š”์ง€ ํŒ๋‹จ

ye333.tistory.com

 

BELATED ARTICLES

more