var isValid = function (s) {
let stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === '(') stack.push(')');
else if (s[i] === '{') stack.push('}');
else if (s[i] === '[') stack.push(']');
else {
if (s[i] !== stack.pop()) return false;
}
}
console.log('stack: ', stack);
return stack.length === 0;
};
let s = '{[]}';
isValid(s);
stackκ³Ό κ΄λ ¨ν λ¬Έμ λ₯Ό μ°μ΅ μ€μ΄λ€. λ¬Έμ μ μꡬμ¬νμ κ΄νΈκ° μ¬λ°λ₯΄κ² λ«νλλ₯Ό νλ³νλΌλ κ²μ΄λ€. μλ μμλ₯Ό 보면 λ°λ‘ μ μ μμ κ²μ΄λ€.
λ¬Έμ μλ μκ΄νΈ, μ€κ΄νΈ, λκ΄νΈμ 3μ’ λ₯μ κ΄νΈκ° μ‘΄μ¬νλ€.
μ¬λ κ΄νΈκ° λμ¬ λλ κ°μ λͺ¨μμ λ«λ κ΄νΈλ₯Ό stack
λ°°μ΄μ push
ν΄μ€λ€.
μμ μ½λμ λ§μ§λ§ else
λ¬Έμλ λ«λ κ΄νΈλ§ μμ λμ 쑰건μΈλ°, μ΄ λ s[i]
κ° stack.pop()
κ³Ό λ€λ₯΄λ€λ©΄ κ΄νΈ μμκ° inValid νλ€λ μλ―ΈμΌ κ²μ΄λ€. κ·ΈλΌ λ°λ‘ false
λ₯Ό return
ν΄μ£Όλ©΄ λλ€.
λ§μ§λ§μ validν κ΄νΈ λͺ¨μμ΄λΌλ©΄ μ§κΈκΉμ§ stack
μ λ€μ΄κ° μμμ κ°μμ stack.pop()
μ νμκ° λμΌν κ²μ΄λ€. λ°λΌμ κ΄νΈκ° μ ν¨νλ€λ©΄ stack
μ μΈμ λ λΉ λ°°μ΄μ΄ λλ€.
μμ , μ§μ μ νμν©λλ€!
https://leetcode.com/problems/valid-parentheses/