|
| 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 |
0 commit comments