<๋ฌธ์ >
s๋ ์ฌ๋ฌ ๊ดํธ๋ค๋ก ์ด๋ฃจ์ด์ง String ์ธ์์ ๋๋ค.
s๊ฐ ์ ํจํ ํํ์ธ์ง ์๋์ง true/false๋ก ๋ฐํํด์ฃผ์ธ์.
์ข ๋ฅ๋ '(', ')', '[', ']', '{', '}' ์ผ๋ก ์ด 6๊ฐ ์์ต๋๋ค. ์๋์ ๊ฒฝ์ฐ ์ ํจํฉ๋๋ค.
๊ดํธ ์์๊ฐ ๋ง์์ผ ํ๋ค.์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ต๋๋ค.
- s = "()" -> return true
- s = "()[]{}" -> return true
- s = "(]" -> return false
- s = "([)]" -> return false
- s = "{[]}" -> return true
์ค.. "{[()]}"ํด๊ฒฐํ๋ ค๋ "(){}[]"๊ฑธ๋ฆฌ๊ณ ...
๋ฏฟ๊ณ ๋งก๊ธฐ๋ ๋ฏผ์ฒ ๋๋ ๊ฒฐ๊ตญ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฐ ๋ฌธ์ .. ๊ฒฐ๊ตญ ํด๊ฒฐ์ ๋ชปํ๋ค ใ ใ ใ
์ค์ ๋ก ๋น์ทํ ๋ฌธ์ ๋ค์ ํธ์ ๋ธ๋ก๊ฑฐ ๋ถ๋ค์ ๋ต๋ณ์ ์ดํดํ๋๊ฑฐ์๋ง ๋ง์กฑํ๋ ๊ฑธ๋ก..ใ
ใ
๋ฐํํ...
rapsby.log๋ผ๋ ๋ธ๋ก๊ฑฐ๋ถ์ด ํธ์ ๋ด์ฉ์ด ๋ด๊ฐ ์๊ฐํ๋ ํ์ด๋ฒ์ด๋ผ์ ์ธ์ฉํด์ ๊ธฐ๋กํ๋ค
1. stack, ๊ดํธ์ง dictionary๋ฅผ ์ด๊ธฐํํ๋ค.
2. ๋ฌธ์์ด์์ ํ์ํ๋ฉด์ ๋ฌธ์๊ฐ ์ฌ๋ ๊ดํธ๋ฉด push
3. stack์ด ๋น์ด ์์ง ์๊ณ , stack์ ๋ง์ง๋ง ์์๊ฐ ๋ฌธ์์ ๊ฐ์ ๊ดํธ ์์ด๋ฉด ์งํํ๋ค.
4. ๋ฐ๋ณต๋ฌธ์ด ๋๋๊ณ stack์ด ๋น์ด ์์ผ๋ฉด True๋ฅผ ๋ฐํํ๋ค.
def solution(s):
d = {
')' : '(',
'}' : '{',
']' : '['
}
stack = []
for c in s:
if c in '({[':
stack.append(c)
elif c in ')}]':
if stack:
top = stack.pop()
if d[c] != top:
return False
else:
return True
return len(stack) == 0
stack๋ผ๋ ์๋ก์ด ๊ฐ๋
์ด ๋ฑ์ฅํ๋ค!!
๋ด์ฉ์ ์์ง ์ ํํ๊ฒ ์ดํดํ์ง ๋ชปํ์ง๋ง, ๊ฐ๋
์ด๋ผ๋ ํ์คํ ์ ๋ฆฌํด๋์~
stack์ด๋ ๋ฐ์ดํฐ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ์ ์ฅ์์ ๋งจ ์๋ถ๋ถ์์๋ง ์ผ์ด๋๋ ๋์ด๊ตฌ์กฐ์ด๋ค. ์ด๋ฌํ ๋์ด๊ตฌ์กฐ LIFO (Last Input First Out)๋ผ๊ณ ํ๋ค.
Stack์ ๋ฌธ์์ด์ ์ญ์์ผ๋ก ์ถ๋ ฅํ๊ฑฐ๋ ์ฐ์ฐ์ ํ์ํ์๋ฒ(์ฐ์ฐ์๋ฅผ ํผ์ฐ์ฐ์๋ค์ ํ๊ธฐํ๋๋ฐฉ๋ฒ AB+
์ด๋ฐ์)๋ฑ์ ์ฌ์ฉ๋๋ค.
<Stack ๊ตฌํ>
stack = []
stack = [1,2,3]
stack.push(4)
#stack = [1,2,3,4]
stack = [1,2,3]
top = stack.pop()
print(top)
#stack = [1,2]
stack = [1,2,3]
top = stack[-1]
# top = 3
์ด๋ ค์ด ๋ฌธ์ ๋ผ ์์ง๋ ์ดํด๊ฐ ์๋๋๋ฐ ๊ทธ๋๋ ์ด๋์ ๋ ํ๋ฆ์ ํ์ ํ๋ค. ์ข๋ ํ์ด์ฌ์ ์ต์ํด์ง๋๋ .. ์ฌ๊น..?๐