ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ

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

programmers.co.kr

 

๋ฌธ์ œ ํ’€์ด

 ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ, ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ธ์ง€ ํŒ๋‹จํ•˜์—ฌ true, false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `(())`๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๊ณ , `(()`๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค.

 

  • stack push. : ํ˜„์žฌ ๋ฌธ์ž์—ด์ด ์—ด๋ฆฐ ๊ด„ํ˜ธ
  • stack pop : stack์— ๊ฐ’์ด ์žˆ๊ณ , ํ˜„์žฌ ๋ฌธ์ž์—ด์ด ๋‹ซํžŒ ๊ด„ํ˜ธ
  • ์ด์™ธ์˜ ๊ฒฝ์šฐ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๋งŒ์•ฝ ๋ฌธ์ž์—ด์„ ๋‹ค ์ˆœํšŒํ•˜์˜€๋Š”๋ฐ, stack์— ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ด๋ฆฐ ๊ด„ํ˜ธ๋กœ ๋๋‚˜๋Š” ์ผ€์ด์Šค์ด๋‹ค.

 

 

์ฝ”๋“œ

def solution(s):
    brackets = {'(': ')'}
    '''
    ๊ด„ํ˜ธ๊ฐ€ ์ถ”๊ฐ€ ๋œ๋‹ค๋ฉด
    brackets = {'{': '}', '[': ']', '(': ')'}
    '''
    stack = []

    for string in s:
        if string in brackets.keys():
            stack.append(string)
        elif string in brackets.values():
            if stack and string == brackets[stack[-1]]:
                stack.pop()
            else:
                return False
    # stack์— ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ, ์—ฌ๋Š” ๊ด„ํ˜ธ์˜ ์ง์ด ์—†๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
    return True if not stack else False

 ์ด ๋ฌธ์ œ๋Š” ๊ฐ„๋‹จํ•˜์—ฌ ๋ฌธ์ž์—ด์— ๊ด„ํ˜ธ๋งŒ ์ฃผ์–ด์ง€์ง€๋งŒ, ๋งŒ์•ฝ ๊ด„ํ˜ธ์˜ ์ข…๋ฅ˜ `()`, `[]`, `{}`๊ฐ€ ๋งŽ๊ณ  ๋ฌธ์ž์™€ ๊ด„ํ˜ธ๊ฐ€ ์„ž์—ฌ ๋“ค์–ด์˜จ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ํ’€์–ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์—ฌ๋Š” ๊ด„ํ˜ธ์— ๋”ฐ๋ผ, ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€