๐Ÿงฉ Algorithm/[Programmers] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT

[Programmers/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ ๋“์  KIT] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

devCloud 2026. 4. 3. 11:06
728x90

[Programmers] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

Level 2 | #์Šคํƒ/ํ #์Šคํƒ(Stack)

1. ๋ฌธ์ œ ์š”์•ฝ

๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

๋ฌธ์ž์—ด s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด True๋ฅผ, ์•„๋‹ˆ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2. ์ ‘๊ทผ ๋ฐฉ์‹ ๋ฐ ํฌ์ธํŠธ

๊ฐ€์žฅ ์ตœ๊ทผ์— ์—ด๋ฆฐ ๊ด„ํ˜ธ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‹ซํ˜€์•ผ ํ•˜๋ฏ€๋กœ LIFO(Last-In-First-Out) ๊ตฌ์กฐ์ธ ์Šคํƒ์„ ํ™œ์šฉํ•œ๋‹ค.

  • โœ… ์—ด๊ธฐ: '('๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์— ๋ฌด์กฐ๊ฑด pushํ•œ๋‹ค.
  • โœ… ๋‹ซ๊ธฐ: ')'๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์—์„œ popํ•˜์—ฌ ์ง์„ ๋งž์ถ˜๋‹ค.
  • โœ… ์˜ˆ์™ธ: ๋‹ซ์œผ๋ ค๋Š”๋ฐ ์Šคํƒ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜, ๋ชจ๋“  ๊ฒ€์‚ฌ๊ฐ€ ๋๋‚ฌ๋Š”๋ฐ ์Šคํƒ์— ๊ด„ํ˜ธ๊ฐ€ ๋‚จ์•„์žˆ์œผ๋ฉด ์ž˜๋ชป๋œ ๊ด„ํ˜ธ์ด๋‹ค.

3. ๊ตฌํ˜„ ์ฝ”๋“œ (Python)

def solution(s):
    stack = []
    
    for bracket in s:
        # '('๋Š” ๋ฌด์กฐ๊ฑด push
        if bracket == '(':
            stack.append(bracket)
        # ')'์ผ ๋•Œ
        else:
            # stack์ด ๋น„์–ด์žˆ์œผ๋ฉด ์ง์ด ์—†์œผ๋ฏ€๋กœ ์ฆ‰์‹œ False ๋ฐ˜ํ™˜
            if not stack:
                return False
            stack.pop()
            
    # ๋งˆ์ง€๋ง‰์— stack์ด ์™„์ „ํžˆ ๋น„์–ด์•ผ True (๋‚จ์•„์žˆ์œผ๋ฉด False)
    return not stack

4. โœ๏ธ ํšŒ๊ณ : ํ†ต๊ณผ๋งŒ ํ•œ๋‹ค๊ณ  ์ •๋‹ต์€ ์•„๋‹ˆ๋‹ค

์ดˆ๊ธฐ ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ๊นŒ์ง€ ๋ชจ๋‘ ํ†ต๊ณผํ–ˆ์ง€๋งŒ, ์Šค์Šค๋กœ ๋ณต๊ธฐํ•˜๋ฉฐ ์น˜๋ช…์ ์ธ ๋…ผ๋ฆฌ์  ๊ฒฐํ•จ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

๐Ÿšซ ์ดˆ๊ธฐ ์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์  ์˜ค๋ฅ˜

๊ธฐ์กด ์กฐ๊ฑด: if not stack or bracket == '('

์ด ์กฐ๊ฑด์€ ')'๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜ฌ ๋•Œ๋„ ์Šคํƒ์— ์ถ”๊ฐ€ํ•ด๋ฒ„๋ฆฐ๋‹ค. ์ดํ›„ ๋˜ ๋‹ค๋ฅธ ')'๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๊ธฐ์กด์˜ ')'๋ฅผ ๊บผ๋‚ด๋ฉฐ ์Šคํƒ์ด ๋น„๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ "))" ๊ฐ™์€ ๋ช…๋ฐฑํ•œ ์˜ค๋‹ต์„ True๋กœ ํŒ๋‹จํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์—ˆ๋‹ค.

๐Ÿ’ก ๋ฐฐ์šด ์ 

  • ์—ฃ์ง€ ์ผ€์ด์Šค์˜ ํž˜: ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ํ†ต๊ณผ๋˜์—ˆ๋‹ค๊ณ  ์•ˆ์‹ฌํ•˜์ง€ ๋ง๊ณ , ์ง์ ‘ ๋ฐ˜๋ก€๋ฅผ ๋Œ€์ž…ํ•ด๋ณด๋Š” ์Šต๊ด€์˜ ์ค‘์š”์„ฑ์„ ๋ฐฐ์› ๋‹ค.
  • ๋ช…ํ™•ํ•œ ์˜ˆ์™ธ ์ฐจ๋‹จ: ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”์„ ๋•Œ ์ง์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ƒํƒœ๋ผ๋ฉด ์ฆ‰์‹œ ์ข…๋ฃŒํ•˜๋Š” ์„ค๊ณ„๊ฐ€ ํ›จ์”ฌ ๊ฒฌ๊ณ ํ•˜๋‹ค.
  • ์„ฑ๋Šฅ๋ณด๋‹ค ๋…ผ๋ฆฌ: ์–ด๋–ค ์ž…๋ ฅ๊ฐ’์—๋„ ํ”๋“ค๋ฆฌ์ง€ ์•Š๋Š” ๋กœ์ง์„ ์„ค๊ณ„ํ•˜๋Š” ์—ฐ์Šต์ด ์šฐ์„ ๋˜์–ด์•ผ ํ•จ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒˆ๊ฒผ๋‹ค.
728x90