λ¬Έμ
νμ΄ κ³Όμ
μ£Όμ΄μ§ λ¬Έμμ΄μμ κ΄νΈμμ΄ μ¬λ°λ₯΄κ² μ§μ§μ΄μ‘λμ§ νλ¨νλ λ¬Έμ μ
λλ€.
λ€λ§ μ΄ λ¬Έμ μμλ μμΌλμΉ΄λ(*
) κ° μ‘΄μ¬νμ¬ μ½κ°μ λ€λ₯Έ λ°©μμ μ κ·Όμ΄ νμν©λλ€.
μ°μ μ΄ μμΌλμΉ΄λλ₯Ό μ΄λ€ μμΌλ‘ μ²λ¦¬ν μ§ κ²°μ ν΄μΌν©λλ€.
κ°κ°μ μμΌλ μΉ΄λλ ( νΉμ ) νΉμ λΉμΉΈ
μΌλ‘ μ¬μ©λ μ μμΌλ―λ‘
νμ¬ κ΄νΈ μ€νμ κ°μ§κ³ λ μ΄λ€ λ°©μμΌλ‘ μ¬μ©ν΄μΌν μ§ μ μ μμ΅λλ€.
λ°λΌμ ν΄λΉ μμΌλ μΉ΄λλ λ€μ μΈ κ°μ§ κ²½μ°λ‘ μ¬μ© λ°©λ²μ λλ μ μμ΅λλ€.
*
λ³΄λ€ μμ λ°κ²¬λ(
λ¬Έμμ)
μν*
λ³΄λ€ λ¦κ² λ°κ²¬λ)
λ¬Έμμ(
μν- μ무 μν λ νμ§ μλ λΉμΉΈ
λ€μ λ§ν΄ )
λ¬Έμμ λμλλ (
κ° μ΄μ μ μ€νμ μ‘΄μ¬νμ§ μμ κ²½μ° *
λ₯Ό λμ μ¬μ©νλλ‘ νλ©΄ λ©λλ€.
λ°λΌμ ν
μ *
λ¬Έμκ° λ°κ²¬λ μμλ‘ μ§μ΄λ£κ³ νμ©νλλ‘ νμμ΅λλ€. (
λ¬Έμμ κ²½μ° λͺ¨λ λ¬Έμλ₯Ό μνν λ€ μ€νμ λ¨μμλ κ²μ΄ μλ€λ©΄ *
λ¬Έμλ‘ )
μν μ ν μ μλμ§ νλ¨ν©λλ€.
μ΄ κ²½μ° *
λ¬Έμκ° μ€νμ μ‘΄μ¬νλ (
λ³΄λ€ λμ€μ λ°κ²¬λμ΄μΌ νλ―λ‘ μΈλ±μ€λ₯Ό λΉκ΅νμ¬ κ²°μ νλλ‘ νμμ΅λλ€.
μ½λ
/**
* @param {string} s
* @return {boolean}
*/
var checkValidString = function (s) {
const stack = [];
const asterisk = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === "(") {
stack.push(i);
} else if (s[i] === ")") {
if (stack.length) {
stack.pop();
} else {
if (asterisk.length) {
asterisk.shift();
} else {
return false;
}
}
} else {
asterisk.push(i);
}
}
// '(' κ° μ€νμ λ¨μμλ κ²½μ° μμΌλ μΉ΄λ μ¬μ© κ°λ₯μ± νλ¨
for (let i = asterisk.length; i > 0; i--) {
if (!stack.length) {
return true;
}
if (asterisk[asterisk.length - 1] > stack[stack.length - 1]) {
stack.pop();
}
asterisk.pop();
}
return stack.length === 0;
};
const input = "(())((())()()(*)(*()(())())())()()((()())((()))(*";
console.log(checkValidString(input));
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 543 - Diameter of Binary Tree (Easy) (1) | 2021.03.02 |
---|---|
LeetCode 283 - Move Zeroes (Medium) (0) | 2021.03.02 |
LeetCode 1094 - Car Pooling (Medium) (0) | 2021.03.02 |
LeetCode 49 - Group Anagrams (Medium) (0) | 2021.03.02 |
LeetCode 200 - Number of Islands (Medium) (0) | 2021.03.02 |
π¬ λκΈ