|
| 1 | +# ์๊ฐ ๋ณต์ก๋: O(n) |
| 2 | +# - s์ ๊ธธ์ด๋งํผ ํ์ํ๊ธฐ ๋๋ฌธ์ |
| 3 | +# ๊ณต๊ฐ ๋ณต์ก๋: O(n) |
| 4 | +# - stack์ list๋ก ์ฌ์ฉํ๋ฉฐ s[:-1]๊น์ง ๋ชจ๋ ๋ค๋ฅธ ์ผ์ชฝ ๊ดํธ์ผ ๋ O(n)๊น์ง ๋์ด๋ ์ ์์ |
| 5 | + |
| 6 | +class Solution: |
| 7 | + # ์ผ์ชฝ ๊ดํธ๋ stack์ ์ ์ฅํ๊ณ ์ค๋ฅธ์ชฝ ๊ดํธ๊ฐ ๋ค์ด์์ ๋, |
| 8 | + # stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ ์ผ์ชฝ ๊ดํธ์ ์์ด ๋ง๋์ง ํ์ธํ์ฌ |
| 9 | + # ๋ชจ๋ ๊ฒฝ์ฐ์ ์์ด ๋ง์ผ๋ฉด ์ด ๋ฌธ์์ด์ด validํ๋ค๊ณ ํ ์ ์๋ค. |
| 10 | + # ๋ง์ฝ ์ ํจ์ฑ์์ falsyํ ๊ฒฝ์ฐ์๋ early return ํด์ค๋ค. |
| 11 | + def isValid(self, s: str) -> bool: |
| 12 | + stack = [] |
| 13 | + |
| 14 | + for ss in s: |
| 15 | + if ss in ('(', '[', '{'): |
| 16 | + # ์ผ์ชฝ ๊ดํธ๋ stack์ ์ ์ฅ |
| 17 | + stack.append(ss) |
| 18 | + else: |
| 19 | + # ์ค๋ฅธ์ชฝ ๊ดํธ๋ stack ๋ด๋ถ ์์๋ฅผ ํ์ธํ์ฌ ์ ํจ์ฑ ํ์ธ |
| 20 | + if not stack: |
| 21 | + # stack์ด ์๋ ๊ฒฝ์ฐ์๋ ์์ ๋ง์ถ ์ผ์ชฝ ๊ดํธ๊ฐ ์์ผ๋ฏ๋ก s๊ฐ invalidํ๋ค๊ณ ํ ์ ์์ |
| 22 | + return False |
| 23 | + |
| 24 | + # stack์ ๋ง์ง๋ง ์์์ ํ์ฌ ํ์ธํ ๋ฌธ์์ด์ ์์ด ๋ง๋์ง ํ์ธ |
| 25 | + last_ss = stack[-1] |
| 26 | + if any([ |
| 27 | + last_ss == '(' and ss == ')', |
| 28 | + last_ss == '[' and ss == ']', |
| 29 | + last_ss == '{' and ss == '}', |
| 30 | + ]): |
| 31 | + # ์์ด ๋ง๋ค๋ฉด stack์ ๋ง์ง๋ง ๋ฌธ์์ด์ pop |
| 32 | + stack.pop() |
| 33 | + else: |
| 34 | + # ์์ด ์ ๋ง๋ ๊ฒฝ์ฐ |
| 35 | + return False |
| 36 | + if stack: |
| 37 | + # ๋ชจ๋ ๋ฌธ์์ด์ ๋์๋๋ฐ๋, stack์ ์ผ์ชฝ ๊ดํธ๊ฐ ๋จ์ ์๋ ๊ฒฝ์ฐ |
| 38 | + return False |
| 39 | + |
| 40 | + # ์์ ๋ชจ๋ invalidํ ๊ฒฝ์ฐ๋ฅผ ํต๊ณผํ๋ค๋ฉด validํ๋ค๊ณ ํ ์ ์๋ค. |
| 41 | + return True |
| 42 | + |
| 43 | + # ๋ฆฌ๋ทฐ ๋ฐ์ ํ์ด |
| 44 | + # ๊ดํธ์ ์์ key-value๋ก ํ๋ pairs ๋์
๋๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ, if ์กฐ๊ฑด์ ๋์ฑ ๊ฐ๋จํ๊ฒ ํ ์ ์์ |
| 45 | + def isValid(self, s: str) -> bool: |
| 46 | + stack = [] |
| 47 | + pairs = {")": "(", "}": "{", "]": "["} |
| 48 | + |
| 49 | + for ss in s: |
| 50 | + if ss in ('(', '[', '{'): |
| 51 | + stack.append(ss) |
| 52 | + else: |
| 53 | + if not stack: |
| 54 | + return False |
| 55 | + |
| 56 | + last_ss = stack[-1] |
| 57 | + if last_ss == pairs[ss]: |
| 58 | + stack.pop() |
| 59 | + else: |
| 60 | + return False |
| 61 | + if stack: |
| 62 | + return False |
| 63 | + return True |
0 commit comments