본문 바로가기
개발 공부/알고리즘 개념+문제풀이

[알고리즘 문제풀이]올바른 괄호_프로그래머스 2단계 문제

by 크롱이크 2021. 6. 20.

문제설명

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

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

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

 

주의사항

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

입출력예시

코드

function solution(str){
    let answer = true;
    let stack = [];
    
    if(str[0] === ")") answer =false;
    else {
      for(let s of str){
        if(s === "(") stack.push(s);
 		else if (s === ")") stack.pop();
      }
        if(stack.length !==0) answer = false;
    }
       
    return answer;
}

 

해석

1.  ")" 이게 먼저나오면 false 를 리턴한다.

2. 그게 아닐 경우 str을 돌면서 "(" 일 경우에는 푸쉬를 해주고, ")"일 경우에는 stack.pop()을 해준다.

(가로의 앞뒤갯수가 맞아야하기 때문에)

3. 반복문이 끝나고 만약 stack의 길이가 0이 아니라면 짝이 맞지 않다는 것이다. 그럼 false;

4. 0이면 true ^^

 

한줄평

스스로 풀었다. 너무 기분 좋았다. 코드스테이츠의 자료구조 파트를 2번하다보니 뭔가 실력이 상승한 기분이다. 감사합니다.

 

 

반응형

댓글