ν‹°μŠ€ν† λ¦¬ λ·°

λ°˜μ‘ν˜•

문제 μ„€λͺ…

μ†Œκ΄„ν˜Έ: ( )
μ€‘κ΄„ν˜Έ: { }
λŒ€κ΄„ν˜Έ: [ ]
λ₯Ό 포함할 수 μžˆλŠ” μˆ˜μ‹μ„ ν‘œν˜„ν•œ λ¬Έμžμ—΄ expr μ΄ 인자둜 μ£Όμ–΄μ§ˆ λ•Œ, 이 μˆ˜μ‹μ˜ κ΄„ν˜Έκ°€ μ˜¬λ°”λ₯΄κ²Œ μ—¬λ‹«ν˜€ μžˆλŠ”μ§€λ₯Ό νŒλ‹¨ν•˜λŠ” ν•¨μˆ˜ solution() μ„ μ™„μ„±ν•˜μ„Έμš”. 이 ν•¨μˆ˜λŠ” μˆ˜μ‹μ˜ κ΄„ν˜Έκ°€ μœ νš¨ν•˜λ©΄ True λ₯Ό, 그렇지 μ•ŠμœΌλ©΄ False λ₯Ό λ¦¬ν„΄ν•©λ‹ˆλ‹€.

 

μ˜¬λ°”λ₯Έ μˆ˜μ‹

  • (A +B)
  • {(A + B) * C}
  • [(A +B) * (C + D)]

μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μˆ˜μ‹

  • (A +B
  • A +B)
  • {A * (B * C})
  • [(A + B) * (C + D)}

 

 

μ•Œκ³ λ¦¬μ¦˜ 섀계 - μˆ˜μ‹μ„ μ™Όμͺ½λΆ€ν„° ν•œ κΈ€μžμ”© μ½μ–΄μ„œ

1. μ—¬λŠ”κ΄„ν˜Έλ₯Ό λ§Œλ‚˜λ©΄ "( λ˜λŠ” { λ˜λŠ” [" μŠ€νƒμ— ν‘Έμ‹œ

2. λ‹«λŠ”κ΄„ν˜Έλ₯Ό λ§Œλ‚˜λ©΄ ") λ˜λŠ” } λ˜λŠ” ] 

2-1. μŠ€νƒμ΄ λΉ„μ–΄μžˆμœΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ μˆ˜μ‹

2-2. μŠ€νƒμ—μ„œ pop, μŒμ„ μ΄λ£¨λŠ” μ—¬λŠ” κ΄„ν˜ΈμΈμ§€ 검사

2-2-1.λ§žμ§€ μ•ŠμœΌλ©΄ μ˜¬λ°”λ₯΄μ§€ μ•ŠλŠ” μˆ˜μ‹

3. λκΉŒμ§€ κ²€μ‚¬ν•œ ν›„ μŠ€νƒμ΄ λΉ„μ–΄μžˆμ–΄μ•Ό μ˜¬λ°”λ₯Έ μˆ˜μ‹

 

 

 

 

풀이

class ArrayStack:

    def __init__(self):
        self.data = []

    def size(self):
        return len(self.data)

    def isEmpty(self):
        return self.size() == 0

    def push(self, item):
        self.data.append(item)

    def pop(self):
        return self.data.pop()

    def peek(self):
        return self.data[-1]


def solution(expr):
    
    match = {
        ')' : '(',
        '}' : '{',
        ']' : '['
    }
    
    S = ArrayStack()

    for c in expr:
        if c in '({[' :
            S.push(c)
        elif c in match:
            if S.isEmpty():
                return False
            else:
                t = S.pop()
                if t != match[c]:
                    return False
    return S.isEmpty()

 

 

 

 

 

 

λ°˜μ‘ν˜•
λŒ“κΈ€