๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[python] ๋ฐฑ์ค€ 9012 - ๊ด„ํ˜ธ

by YWTechIT 2021. 4. 1.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 9012 - ๊ด„ํ˜ธ

๋ฌธ์ œ: ๋ฐฑ์ค€ 9012 - ๊ด„ํ˜ธ


๐Ÿ’ก ๋‚˜์˜ ํ’€์ด

์Šคํƒ์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๋˜ ์ค‘ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์‹ถ์–ด ๋ฐฑ์ค€์„ ๊ธฐ์›ƒ๊ฑฐ๋ฆฌ๋‹ค ์ฐพ์€ ๋ฌธ์ œ์˜€๋‹ค.

Parenthesis String ๊ด€๋ จ๋œ ๋ฌธ์ œ ์ค‘ ๊ด„ํ˜ธ๊ฐ€ (,)๋กœ ๊ณ ์ •๋˜์–ด์žˆ์–ด ๊ทธ๋‚˜๋งˆ ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ •๋‹ตํŒ์ •๊นŒ์ง€์˜ ์‹œ๊ฐ„์ด ์ƒ.๋‹น.ํžˆ. ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค.

(์กฐ๊ฑด๋ฌธ์— ์—ด๋ฆฐ๊ด„ํ˜ธ๋ฅผ ๋‹ซํžŒ๊ด„ํ˜ธ๋ผ๊ณ  ์“ฐ๊ณ  1์‹œ๊ฐ„๋™์•ˆ ํ—ค๋งจ๊ฑด ๋น„๋ฐ€ ๐Ÿคฃ ๐Ÿคฃ)

๋จผ์ €, PS๋Š” ์—ด๋ฆฐ๊ด„ํ˜ธ์™€ ๋‹ซํžŒ๊ด„ํ˜ธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋งž์•„๋–จ์–ด์ง€๋ฉด YES๋ผ๊ณ  ์ถœ๋ ฅํ•œ๋‹ค.
๊ทธ๋Ÿฐ๋ฐ, ์ •์ƒ์ ์œผ๋กœ ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๊ฒฝ์šฐ๋ฅผ ๋”ฐ์ ธ๋ด์•ผํ•˜๋Š”๋ฐ ๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ๋‹ค.

์šฐ์„ , ์˜ˆ์ œ ์ž…๋ ฅ์˜ ๊ฐ’ ์ค‘ NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜๋Š” ๊ฐ’๋“ค๋งŒ ์ญ‰ ์ ์–ด๋ดค๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 1-1์˜ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ )๊ฐ€ ๋‚˜์™”์„ ๋•Œ ์ด๋ฏธ ์—ด๋ฆฐ ๊ด„ํ˜ธ๋Š” ๋งž์•„ ๋–จ์–ด์ง€๊ณ  ์—†๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 1-2์˜ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰์— ์—ด๋ฆฐ๊ด„ํ˜ธ๋งŒ ๋‚จ์•˜๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 1-4์˜ ๊ฒฝ์šฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ด๋ฆฐ๊ด„ํ˜ธ๋งŒ ๋‚จ์•˜๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 1-6์˜ ๊ฒฝ์šฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์—ด๋ฆฐ๊ด„ํ˜ธ๋งŒ ๋‚จ์•˜๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 2-1์˜ ๊ฒฝ์šฐ ์—ด๋ฆฐ๊ด„ํ˜ธ๋งŒ ๋‚จ์•˜๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 2-2์˜ ๊ฒฝ์šฐ ๋‹ซํžŒ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ๊ฐ™์ด ์—†์–ด์งˆ ์—ด๋ฆฐ๊ด„ํ˜ธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.
์˜ˆ์ œ ์ž…๋ ฅ 2-3์˜ ๊ฒฝ์šฐ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ซํžŒ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ, ๊ฐ™์ด ์—†์–ด์งˆ ์—ด๋ฆฐ๊ด„ํ˜ธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— NO๋ผ๊ณ  ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

์ด๋ฅผ ํ† ๋Œ€๋กœ NO๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์กฐ๊ฑด์— ๋‹ซํžŒ ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ ๊ฐ™์ด ๋งž์•„ ๋–จ์–ด์ง€๋Š” ์—ด๋ฆฐ ๊ด„ํ˜ธ๊ฐ€ ์—†์„ ๋•Œ
  2. ๋ชจ๋“  ์กฐ๊ฑด์„ ์ˆ˜ํ–‰ํ•˜๊ณ ๋‚˜์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฒ€์‚ฌํ–ˆ์„ ๋•Œ ๊ฐ’์ด ๋‚จ์€ ๊ฒฝ์šฐ

์†์œผ๋กœ ์ ์œผ๋ฉด์„œ ๋ฐ˜๋ก€์˜ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜๋‹ˆ๊นŒ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๊ฑด ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค.(์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆด ๋ฟ)

์ค‘๊ฐ„์— if len(result) == 0์ด๋ผ๊ณ  ์ž‘์„ฑํ–ˆ๋Š”๋ฐ, result๊ฐ’์ด ๋น„์—ˆ์„ ๋•Œ๋ฅผ ๋œปํ•˜๋Š” ์ฝ”๋“œ์ด๊ณ  if not result:๋กœ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ค‘๊ฐ„ ์กฐ๊ฑด๋ฌธ์— return๊ฐ’์„ ๋„ฃ์–ด์ฃผ์ง€์•Š์œผ๋ฉด ํ•˜๋‹จ ์กฐ๊ฑด๋ฌธ์—์„œ YES๋ฅผ ์ถœ๋ ฅํ•˜๋ฏ€๋กœ ์ถœ๋ ฅ๊ฐ’์ด ๋‹ฌ๋ผ์ง„๋‹ค. ์ฐธ๊ณ ํ•˜์ž.

def check_VPS(data):
    result = []
    for i in data:
        if i == '(':
            result.append(i)
        else:
            if len(result) == 0:
                print('NO')
                return
            else:
                result.pop()

    if len(result) == 0:
        print('YES')
    else:
        print('NO')

n = int(input())
for i in range(n):
    parenthesis = input()
    check_VPS(parenthesis)
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€