์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- ํ์๊ฐ์
- ์คํ๋ฅดํ์ฝ๋ฉํด๋ฝ
- Ai
- TS
- ChatGPT
- ์ฑGPT
- 7๊ธฐ
- D๋ฐ8์กฐ
- ์น๊ฐ๋ฐ์ข ํฉ๋ฐ
- TDD
- ํญํด99
- ๋ฆฌ์กํธ
- ์ค์ ํ๋ก์ ํธ
- NotionAI
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ฆฐ์ด
- Expo
- Programmers
- ๋ฉ์น๊ตฌ
- ์๊ณ ๋ฆฌ์ฆ๊ธฐ์ด์ฃผ์ฐจ
- ๋ฌ๋ฆฌ๊ธฐ๋ฐ
- ๋งฅ๋ฆฐ์ด
- ํ์ํฌ์ต๊ณ
- ํ๋ก ํธ์๋
- ReactNative
- ์ฌ์ ์ค๋น
- typeScript
- REACT
- rn
- ์pdf #ํ์ผํ์๊ธฐ๋ฏธ๋ฆฌ๋ณด๊ธฐ์๋ ๋
- Today
- Total
FrontEnd :-)
[LeetCode-JS] Valid Parentheses ๋ณธ๋ฌธ
๐ ๋ฌธ์ : Valid Parentheses
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
- Open brackets must be closed by the same type of brackets.
- Open brackets must be closed in the correct order.
- Every close bracket has a corresponding open bracket of the same type.
Example 1:
Input: s = "()"
Output: true
Example 2:
Input: s = "()[]{}"
Output: true
Example 3:
Input: s = "(]"
Output: false
Constraints:
- 1 <= s.length <= 104
- s consists of parentheses only '()[]{}'.
๐ ฐ๏ธ ํ์ด:
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
if(s.length % 2 !== 0 ) {return false} //๋ฌธ์์ด์ด ์ง์์ฌ์ผ ์ฑ๋ฆฝ๋๋ฏ๋ก. ํ์์ธ ๊ฒฝ์ฐ false
const hash = {"(": 1, ")": -1, "[": 2, "]": -2, "{": 3, "}": -3}
if(hash[s[0]] < 0) {return false} // ์ฒซ ๋ฒ์งธ ๊ธ์๋ ๋ฌด์กฐ๊ฑด ์ฌ๋ ๊ดํธ, ์์์ฌ์ผ ์ฑ๋ฆฝ.
let plus = [hash[s[0]]];
for(let i = 1; i < s.length; i++){
if (hash[s[i]] < 0 && Math.abs(hash[s[i]]) === plus[plus.length -1]){
plus.pop(hash[s[i-1]])
} else if(hash[s[i]] > 0){
plus.push(hash[s[i]])
} else{
plus.unshift(hash[s[i]])
}
}
if (plus.length === 0){
return true
}
return false
};
>> "ํด์ฌํ ์ด๋ธ์ ์ฌ์ฉํด์ผ์ง"ํ๊ณ ์์ํด์... ์กฐ๊ฑด์ ๊ณ์ ์ถ๊ฐํ๊ฒ ๋์๋ค.. ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ์ง๋ง ํ๊ธด ํ์๋ ....
let plus~ ๋ถํฐ ์ค๋ช ํด๋ณด๋ฉด, ์์ ์กฐ๊ฑด๋ค์ ์ํด ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ๋ ์ฌ๋ ๊ดํธ์ผ ํ ๋ plus ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
๋ค์ ๋ฌธ์(๊ธฐํธ)๋ถํฐ for๋ฌธ์ ์ด์ฉํด์, ์์(๋ซ๋ ๊ธฐํธ)์ด๋ฉด์ ์ ๋๊ฐ์ด plus ๋ฐฐ์ด์ ๋ง์ง๋ง ๊ฐ๊ณผ ์ผ์นํ๋ฉด ๋ฐฐ์ด์์ pop, ์ ๊ฑฐํ๊ณ ,
else if ์์(์ฌ๋ ๊ธฐํธ)๊ฐ ๋์ค๋ฉด plus ๋ฐฐ์ด์ push, ์ถ๊ฐํ๊ณ ,
else ์์ ์กฐ๊ฑด๋ค์ด ์๋ ๊ฒฝ์ฐ, plus ๋ฐฐ์ด์ unshift, ๋ฐฐ์ด ์์ชฝ์ผ๋ก ์ถ๊ฐํ๋ค.
๊ทธ๋ค์์, plus ๋ฐฐ์ด์ ๊ฐ์ด 0์ด๋ฉด, ์ ๋๋ก ์ด๊ณ ๋ซํ ๊ฒฝ์ฐ๋ก, true๊ฐ ๋๋ค.
>> ์ด๊ฑธ ์์ฑํ๋ ํ์ฌ, ๋ค๋ฅธ ํ์ด๋ ์์ง ๋ณด์ง ๋ชปํ๋๋ฐ... ๋ณต์กํ๊ฒ ํผ ๊ฑด๊ฐ ์ถ๋ค. ์๋ฌดํผ I made it.
โ ๋ค๋ฅธ ์ฌ๋ ํ์ด:
var isValid = function(s) {
const stack = [];
const map = {
'(': ')',
'{': '}',
'[': ']',
}
for(let i = 0; i < s.length; i++) {
if (s[i] === '(' || s[i] === '{' || s[i] === '[') {
stack.push(s[i]);
} else if (map[stack.pop()] !== s[i]) {
return false;
}
}
return !stack.length;
};
var isValid = function (s) {
let stack = [];
const mapping = { ')': '(', '}': '{', ']': '[' };
for (let i = 0; i < s.length; i++) {
if (s[i] in mapping) {
const curr = stack.pop();
if (mapping[s[i]] !== curr) {
return false;
}
} else {
stack.push(s[i]);
}
}
return !stack.length;
}
>> ํด์ฌํ ์ด๋ธ์์ ๊ดํธ๋ค์ ์ซ์๋ก ํ ๊ฒ ์๋๋ผ, '์ด๋ฆฐ ๊ดํธ : ๋ซํ ๊ดํธ'๋ก ๋งค์นญํด์ฃผ๋ฉด ๊ฐ๋จํ๋ ๊ฒ์ด์๋ค!!!
>> ์ฌ๋ ๊ดํธ๋ stack์ ๋ด๊ณ , ์ฌ๋ ๊ดํธ๊ฐ ์๋ (๋ซ๋ ๊ดํธ๋ผ๋ฉด) stack์์ ํํ๋๋ฐ, ๊ทธ๊ฒ ํด์ฌํ ์ด๋ธ์ ๋งค์น๋์ง ์์ผ๋ฉด, false.
>> ๋ง์ง๋ง์ค, return !stack.length ๋ true๊ฐ ๋์ค๋๋ฐ, return true๋ก ํด๋ ๋๋ ค๋ ์ถ์๋๋ฐ "(", "(("์ ๊ฐ์ด ์ฌ๋ ๊ดํธ๋ง ์์ ๋๋ true๊ฐ ๋์์ Wrong answer!!์ด ๋์๋ค.
var isValid = function(s) {
let arr = [];
if(s.length%2 !== 0)return false;
for(let i=0; i< s.length; i++){
if(s[i] === ')' || s[i] === ']' || s[i] === '}'){
if(arr.length== 0)return false
el = arr.pop()
if(s[i] === ')' && (el === '{' || el === '['))return false;
if(s[i] === '}' && (el === '(' || el === '['))return false;
if(s[i] === ']' && (el === '{' || el === '('))return false;
}else{
arr.push(s[i])
}
}
return arr.length === 0;
};
var isValid = function(s) {
let stack = [];
for (let i = 0 ; i < s.length ; i++) {
let c = s.charAt(i);
switch(c) {
case '(': stack.push(')');
break;
case '[': stack.push(']');
break;
case '{': stack.push('}');
break;
default:
if (c !== stack.pop()) {
return false;
}
}
}
return stack.length === 0;
};
>> charAt() ํจ์๋ ๋ฌธ์์ด์์ ํน์ ์ธ๋ฑ์ค์ ์์นํ๋ ์ ๋์ฝ๋ ๋จ์ผ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค. index๋ฅผ ์ ๊ณตํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
'JavaScript > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
programmers ์น์์ด (1) (0) | 2023.03.07 |
---|---|
[LeetCode-JS]ย Merge Two Sorted Lists (0) | 2022.12.15 |
[LeetCode-JS] Longest Common Prefix (0) | 2022.12.09 |
[LeetCode-JS] Roman to Integer (0) | 2022.12.08 |
[LeetCode-JS] Palindrome Number (0) | 2022.12.07 |