올바른 괄호를 썼는지 판별하는 문제입니다.
전에 풀어봤던건 단순 괄호 열리고 닫히는거였는데 이건 좀 더 복잡하네요.
Input/Output
dd
Input | Output |
() | true |
()[]{} | true |
(] | false |
([)] | false |
{[]} | true |
시도(성공)
각 괄호 시작값에 따라 적절한 값이 나오도록 객체화 했습니다.
값이 쌓일수있도록 빈 스택을 만들고, 현재값이 객체의 값이랑 일치할때마다 스택이 한글자씩 지워지도록 구성했습니다. 이렇게 처리가 전부 끝났는데도 스택값이 남아있을경우 false, 0이면 true를 반환합니다.
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
// s='[}';
const parentheses = {
'(':')',
'{':'}',
'[':']'
}
let stack = [];
const keys = Object.keys(parentheses); // ['(','{','[']
// console.log(keys);
// console.log(parentheses['(']);
for(let i=0;i<s.length;i++){
// console.log(keys.includes(s[i]));
if(keys.includes(s[i])) stack.push(parentheses[s[i]]);
// console.log(stack);
// console.log(stack[stack.length-1]);
else {
if(stack[stack.length-1]===s[i]) stack.pop();
else return false;
}
}
return stack.length===0; //0이면 true 아니면 false
};
728x90
'프로그램 강좌' 카테고리의 다른 글
Visual Studio 2019 설치 방법 (0) | 2021.11.30 |
---|---|
[LeetCode]26. Remove Duplicates from Sorted Array (0) | 2021.11.25 |
[LeetCode]14. Longest Common Prefix - javascript (0) | 2021.11.20 |
[LeetCode] 13. Roman to Integer - javascript (0) | 2021.11.19 |
[LeetCode]9. Palindrome Number - javascript (0) | 2021.11.18 |