[프로그래머스] 올바른 괄호

rany·2020년 5월 28일
0

프로그래머스

목록 보기
5/9
post-thumbnail

✔️ 문제

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • ()() 또는 (())() 는 올바른 괄호입니다.
  • )()( 또는 (()( 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

😎 소스 코드

function solution(s) {
  let answer = true;
  const len = s.length;
  let stack = [],
    top = -1,
    check;

  for (let i = 0; i < len; i++) {
    switch (s[i]) {
      case '(':
        stack.push(s[i]);
        ++top;
        break;
      case ')':
        // empty stack
        if (top === -1) {
          answer = false;
          break;
        } else {
          check = stack.pop(stack[top]);
          --top;
          if (check === '(' && s[i] !== ')') {
            answer = false;
            break;
          }
        }
        break;
      default:
    }
  }
  if (top !== -1) {
    answer = false;
  }
  return answer;
}

✊ 문제를 풀고 나서

확실히 이론을 다시 보고 문제 푸니까 진짜 쉽다. 스택 문제 더 풀고 싶은데 프로그래머스에는 문제가 적어서 아쉽다 ㅠㅠ

profile
컴퓨터는 나의 베프

0개의 댓글