[LeetCode easy] Valid Parentheses (JavaScript)

IT공부중·2020년 4월 28일
0

알고리즘

목록 보기
20/49

https://leetcode.com/problems/valid-parentheses/

문제 설명

함수의 s라는 파라미터에 '(', ')', '{', '}', '[', ']' 의 괄호들이 string 형태로 들어온다. 이 string이 제대로 닫혀있는지 아닌지를 판단하면 된다.

ex) '(]'
는 '('로 열렸지만 ']'로 닫혔기 때문에 올바른 괄호가 아니다.
ex) '([)]'
는 '(', '['로 열렸으면 역순으로 ']', ')' 순으로 닫혀야 되는데 ')'로 먼저 닫혔으므로 올바른 괄호가 아니다.

ex) '(){}[]' 는 제대로 된 순서로 닫혔으니 올바른 괄호이다.

문제 풀이

해당 문제는 스택을 사용하여 풀 수 있다. js에서 스택은 push 메서드와 pop 메스드를 사용하여 구현가능하다.
각각의 괄호를 짝지어 object로 만들어두고, 열린 괄호이면 그냥 stack에 넣고 닫힌 괄호일 경우 바로 전의 값이 맞는 짝일 경우 stack에서 제거하고 짝이 맞지 않을 경우 false를 반환하게 하였다.

마지막까지 진행하였을 때 stack의 길이가 0이면 true를 반환하고 이외의 경우에는 false를 반환하게 하면 끝!

var isValid = function(s) {
    const temp = {
        '(' : ')',
        '{' : '}',
        '[' : ']'
    };
    const stack = [];
    const keys = Object.keys(temp);
    for (let i = 0; i< s.length; i++) {
        if(keys.includes(s[i])) {
            stack.push(s[i]);
        }
        else {
            if (temp[stack[stack.length-1]] === s[i]) {
                stack.pop();
            }
            else {
                return false;
            }
        }
    };      
    return !stack.length;
}
profile
4년차 프론트엔드 개발자 문건우입니다.

0개의 댓글