[2021-05-03]괄호 닫힘 확인 예제 본문

code/Daily Side Project

[2021-05-03]괄호 닫힘 확인 예제

남우p 2021. 5. 3. 13:12

Question : 

괄호가 완전히 닫혔을 때 true를 반환하고, 닫히지 않으면 false를 반환합니다.
")(" 이런식으로 뒤바뀐 괄호도 false처리합니다.

 



Answer : 

function validParentheses(parens){
  var arr = parens.map(x => x == ")" ? -1 : 1);
  var count = 0;
  var result;
  for(var i=0;i < arr.length;i++){
    count += arr[i]; 
    if(count < 0){
      result = false;
    }
  }  
  result = (count === 0) ? true : false;
  return result;
}

 

anotherAnswer 1 : 

function validParentheses(parens){
    return [...parens].reduce((a,c) => (a+c).replace("()",'') ) == ""?true:false;
}

 

anotherAnswer2 : 

function validParentheses(parens){
  var n = 0;
  for (var i = 0; i < parens.length; i++) {
    if (parens[i] == '(') n++;
    if (parens[i] == ')') n--;
    if (n < 0) return false;
  }
  
  return n == 0;
}

Review :

최근에 알고리즘 예제를 풀면서 가장 고민하는 것은 '어떻게 하면 간결하게 코드를 짤까?' 하는 것입니다. 최근 실무작업에서 삼항연산자를 많이 사용하는 것도 같은 이유입니다. 답을 내는 속도도 중요하지만, 조금더 생각하고 답을 도출해야 다음에 더 좋은 결과물을 낼 수 있다고 생각하기 때문입니다.
객체로 푸는 문제가 많다보니 .map()이나 .reduce() 같은 es6 문법이 익숙하지 않아 사용법을 계속 검색하면서 작업하고 있습니다. 

& 이번 작업에서 배운 점 : 
   - .map()의 사용법
   - string은 객체이다.
   - return 값을 연산자로 풀어도 괜찮다.

 

 

Comments