Valid Parentheses
괄호를 검사하는 문제이다.
function isValid(s) {
const splitStr = s.split('');
if (splitStr[0] === ')' || splitStr[0] === '}' || splitStr[0] === ']') {
return false;
}
const stack = [];
for (const s of splitStr) {
if (s === '(') stack.push(')');
else if (s === '[') stack.push(']');
else if (s === '{') stack.push('}');
else if (stack.pop() !== s) return false;
}
return stack.length === 0 ? true : false;
}
맨처음 괄호가 ) } ] 로 나온다면 절대 맞을 수 없기 때문에 빠르게 리턴했다.
그 다음 ( { [ 로 시작하는 경우에서 ) } ] 를 스택에 넣는다.
if else if 로 한 이유는 if 문은 switch 문에서 break 문을 포함한 것 같은 효과를 낸다.
그래서 하나의 분기가 실행되면 다음 스텝으로 넘어간다.
() 의 경우
) 를 push 한다 - s 가 맨처음 ( 일때
그 다음 괄호는 ) 이다. 그러면 if, else if 에 모두 해당되지 않는다.
스택에서 pop 한다.
) 가 나온다
)는 )과 같다.
스택에 하나있던 ) 가 pop 됐다.
스택이 비어있다.
마지막으로 true 를 리턴한다.
'알고리즘' 카테고리의 다른 글
프로그래머스 - 기능 개발 (0) | 2020.08.10 |
---|---|
leetcode- 155 Min stack (0) | 2020.08.03 |
Leetcode - 121. Best Time to Buy and Sell Stock (0) | 2020.08.03 |
Leetcode - 121. Best Time to Buy and Sell Stock (0) | 2020.07.31 |
병합 정렬 javascript / merge sort (0) | 2020.07.26 |
댓글