Valid Parentheses

Hyor·2022년 3월 22일
0
post-custom-banner

임의의 문자열이 주어지면 [],{},() 짝에 맞게 닫아야한다. 짝이 맞게구성된 문자열이면 true 아니라면 false를 반환한다.

Input: s = "()[]{}"
Output: true
Input: s = "(]"
Output: false

처음 문제를 받았을때 스택과 객체를 이용하여 문제를 해결하면 좋을거같았고
닫는 브라켓을 key로 주고 여는 브라켓을 value로 구성된 type를 선언하고 문자열을 순회하면서 stack 에 요소를 저장하고 선언된 type으로 검사하여 stack에서 제거하거나 push를 하는 방식으로 구현하였다. 최종적으로 남은 stack 에 길이가 0이라면 true를 반환하는 알고리즘이다.

var isValid = function (s) {
  const stack = [];
  const type = {
    ']': '[',
    '}': '{',
    ')': '(',
  };
  for (const el of s) {
    if (stack.length <= 0 || stack[stack.length - 1] !== type[el]) {
      stack.push(el);
    } else {
      stack.pop();
    }
  }
  return stack.length <= 0;
};

다른 제출물들을 확인해봤는데 내가 푼 것과 유사하거나 이중 for문을 도는 등 별로 효율적이지 않아보였다. 이 문제가 쉬웠을수도 있고 아닐수도 있지만 조금이나마 성장한 것 같다는 기분이 들었다.

profile
개발 노트
post-custom-banner

0개의 댓글