Problems
๋ฌธ์ ๋ฅผ ์ฝ๊ณ , ๊ทธ๋ฅ ์์ ์๊ด์์ด s์์ ์ง ๋ง๋ ๊ดํธ๋ง ์์ผ๋ฉด ๋๋ ์ค ์์๋ค.
๊ทธ๋์ ์ง ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ง์ง ๋จ์ง ์ง๋ง ๋ง์ผ๋ฉด ๋๊ธฐ์, ๊ฐ์ ๊ดํธ ์ง์ ๊ฐ์ธ์ง ํ์ธํ๊ณ return
wrong ์ด๋ผ๊ณ ํ๋ค.
๋ณด๋๊น, ๊ฐ์ ๊ดํธ๋ผ๋ฆฌ๋ ๋ถ์ด์์ด์ผํ๋๋ณด๋ค.
๋ง์ฝ s = '( [ { } ] )' ์ผ ๊ฒฝ์ฐ์๋ ์ฌ๋ ๊ดํธ ์์ ( → [ → { ์ ๋ซ๋ ๊ดํธ } → ] → ) ์์๋ ๋ฐ๋์ด๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์ ์ฌ๋ ๊ดํธ ์์๋ก stack์ ์์์ฃผ๊ณ , ๋ค์ ์์ธ ์์๋๋ก ๊ฐ์ง๊ณ ์์ ๋ซ๋ ๊ดํธ ํ์ธํ๋ ๊ฑธ๋ก ํด์ผ๊ฒ ๋ค.
๊ทธ๋ผ LIFO ๊ฐ ๋๋๊ฑฐ๊ณ , list์์ ๋ค์ ์์๋ถํฐ ๊ฐ์ง๊ณ ์์ ์ง์์ฃผ๋ pop ์ ์ฌ์ฉํด์ผ๊ฒ ๋ค
(remove๋ ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์ค๊ณ ์ง์์ค๋ค.)
๊ทธ๋์ ์์ฑํ ์คํฌ๋ฆฝํธ๋ ์๋์ ๊ฐ๋ค.
class Solution:
def isValid(self, s: str) -> bool:
stack = []
bracket_pairs = {'(':')', '[':']', '{':'}'}
if len(s)%2 == 1: # ์ง ๋ง๋ ์ง ํ์ธ
return False
for char in s:
if char in bracket_pairs.keys(): # ์ฌ๋ ๊ดํธ์ด๋ฉด stack์ ์๊ธฐ
stack.append(char)
elif not stack: # ๋ซ๋ ๊ดํธ๋ก ์์ ํ๋ฉด False
return False
elif bracket_pairs[stack.pop()] != char: # ๊ดํธ ์ง์ด ์๋ง์ผ๋ฉด False
return False
# s="((" ๊ฐ์ด ์ฌ๋ ๊ดํธ๋ง ์๋ ๊ฒฝ์ฐ์ stack์ ๋จ์์๊ฒ ๋๋ค.
# ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ๊ธฐ ์ํด์ stack์ ๋จ์์๋๊ธฐ ๊ฒ์ฌํ๋ค.
return len(stack) == 0
์ฑ๊ณต
'๐ป leetcode > algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LeetCode] Algorithms | 21. Merge Two Sorted Lists | Python (1) | 2024.07.24 |
---|---|
[LeetCode] Algorithms | 14. Longest Common Prefix | Python (0) | 2024.07.12 |
[LeetCode] Algorithms | 13. Roman to Integer | Python (0) | 2024.07.12 |