React

20 유효한 괄호

괄호로 된 입력값이 올바른지 판별하라.

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
복사