괄호로 된 입력값이 올바른지 판별하라.
My solution
if(stack에 들어있는 게 없다면) 여는 괄호를 스택에 push
else if(stack에 들어있는 여는 괄호가 현재 넣으려는 괄호와 쌍이라면) 스택에서 pop
else(쌍이 안 맞다면) 스택에 push
마지막에 스택에 남아있다면 유효하지 않은 것이다.
Code
const validParentheses = function (s) {
const arr = s.split('');
const stack = [];
const map = {
'(': ')',
'[': ']',
'{': '}',
};
for (let i = 0; i < arr.length; i++) {
if (stack.length === 0) {
stack.push(arr[i]);
} else if (map[stack[stack.length - 1]] === arr[i]) {
stack.pop();
} else {
stack.push(arr[i]);
}
}
return stack.length === 0;
};
JavaScript
복사
Solution
1. 스택 일치 여부 판별
table = [ ‘)’ : ‘(’, ‘]’ : ‘[’, ‘}’ : ‘{’ ]를 만든 다음
테이블에 존재하지 않을 때 무조건 푸시하고
존재한다면, 팝했을 때 그 값이 테이블에 존재하지 않으면 false다.
만약 짝이 안 맞으면 stack이 남아있으므로 return stack.length === 0;을 마지막에 실행시킨다.
const validParentheses = function (s) {
const arr = s.split('');
const stack = [];
const map = {
')': '(',
']': '[',
'}': '{',
};
for (let i = 0; i < arr.length; i++) {
if (!map[arr[i]]) {
stack.push(arr[i]);
} else if (!stack.length || stack.pop() !== map[arr[i]]) {
return false;
}
}
return stack.length === 0;
};
JavaScript
복사