|
12 | 12 | - ๋ฐ๋ผ์ ์
๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ๋ O(n) ๊ณต๊ฐ ํ์
|
13 | 13 |
|
14 | 14 | ํ์ด๋ฐฉ๋ฒ:
|
15 |
| -1. ์คํ์ ์ฌ์ฉํ์ฌ ์ฌ๋ ๊ดํธ('(', '{', '[')๋ฅผ ์ ์ฅ |
16 |
| -2. Dictionary๋ฅผ ์ฌ์ฉํด ๋ซ๋ ๊ดํธ์ ์ฌ๋ ๊ดํธ์ ์์ O(1)๋ก ๋งค์นญ |
17 |
| -3. ๋ฌธ์์ด์ ์ํํ๋ฉด์: |
18 |
| - - ์ฌ๋ ๊ดํธ๋ ์คํ์ ์ถ๊ฐ |
19 |
| - - ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด: |
20 |
| - a) ์คํ์ด ๋น์ด์๊ฑฐ๋ |
21 |
| - b) ์คํ ์ต์๋จ์ ๊ดํธ๊ฐ ํ์ฌ ๋ซ๋ ๊ดํธ์ ๋งค์นญ๋์ง ์์ผ๋ฉด |
22 |
| - -> ์๋ชป๋ ๊ดํธ ๋ฌธ์์ด |
23 |
| - - ๋งค์นญ๋๋ ๊ฒฝ์ฐ ์คํ์์ pop |
24 |
| -4. ๋ชจ๋ ์ํ๊ฐ ๋๋ ํ ์คํ์ด ๋น์ด์์ด์ผ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด |
| 15 | +- key: ๋ซ๋ ๊ดํธ, value: ๋์ํ๋ ์ฌ๋ ๊ดํธ |
| 16 | +- ํ์ฌ ๋ฌธ์๊ฐ ๋ซ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ |
| 17 | + - ์คํ์ด ๋น์ด์๋ค๋ฉด(์ง์ด ์์) -> False |
| 18 | + - ์คํ์์ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ ์ฌ๋ ๊ดํธ๋ฅผ ๊บผ๋, ๋ง์ฝ ๋์ํ๋ ๊ฐ์ด ์๋๋ผ๋ฉด -> False |
| 19 | +- ํ์ฌ ๋ฌธ์๊ฐ ์ฌ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ -> stack์ ์ถ๊ฐ |
| 20 | +- ๋ชจ๋ ๋ฌธ์ ์ฒ๋ฆฌ ํ, ์คํ์ด ๋น์ด์์ผ๋ฉด ๋ชจ๋ ๊ดํธ์ ์ง์ด ๋ง์ (True) |
25 | 21 | """
|
26 | 22 | class Solution:
|
27 | 23 | def isValid(self, s: str) -> bool:
|
28 | 24 | stack = []
|
29 |
| - pairs = {')': '(', '}': '{', ']': '['} |
30 |
| - |
| 25 | + |
| 26 | + mapping = {')': '(', '}': '{', ']': '['} |
| 27 | + |
31 | 28 | for char in s:
|
32 |
| - if char in '({[': |
33 |
| - stack.append(char) |
34 |
| - else: |
35 |
| - if not stack or stack[-1] != pairs[char]: |
| 29 | + if char in mapping: |
| 30 | + if not stack: |
36 | 31 | return False
|
37 |
| - stack.pop() |
38 |
| - |
39 |
| - return len(stack) == 0 |
| 32 | + |
| 33 | + top = stack.pop() |
| 34 | + |
| 35 | + if mapping[char] != top: |
| 36 | + return False |
| 37 | + |
| 38 | + else: |
| 39 | + stack.append(char) |
| 40 | + |
| 41 | + return not stack |
0 commit comments