자바스크립트 괄호 짝 맞는지 확인하기 – javascript

문제) 자바스크립트 괄호 ‘(‘ 짝이 맞는지 확인. ()) 는 거짓, ()()()는 참, ((())()) 이거도 참.

function is_pair(s){
  //결과 초기값 true
  var result = true;
  //괄호만 넣을 빈 배열 생성
  var s_arr =[];

  for (var i=0; i<s.length; i++){
    //문자열 s 의 ( 만 추출해서 배열에 담는다.
    if(s[i]=="("){
      s_arr.push(s[i]);
    }

    else if(s[i]==")") {
      //)가 남아있는데 (가 없으므로 false 선언하고 아웃.
      if(s_arr.length==0){
        return result = false;
      }
      //문자열 s의 ) 가 나오면 배열에서 (를 제거해서 짝이 맞는지 확인
      s_arr.pop();
    }
  }
  //남은 (가 있어도 false
  if(s_arr.length!=0){
    result = false;
  }
  return result;
}

이걸 응용하면 ‘(‘ 외에 [], {} 이거도 응용할 수 있다. 자바스크립트 객체를 이용하면 된다.

function is_pair(s){
  //결과 초기값 true
  var result = true;
  //괄호만 넣을 빈 배열 생성
  var s_arr =[];
  var map = {
    '(':')',
    '[':']',
    '{':'}'
  }
  for (var i=0; i<s.length; i++){
    //문자열 s 의 ( 만 추출해서 배열에 담는다.
    if(s[i]==="(" || s[i]==="[" || s[i]==="{"){
      s_arr.push(s[i]);
    }
    else if(s[i]===")" || s[i]==="]" || s[i]==="}") {
      //닫는 괄호가 나오면 여는괄호 모아둔데 가장 바깥꺼를 s_key로 담고 지금 s[i] 와 비교
      var s_key = s_arr.pop();
      if(s[i]!==map[s_key]){
        return false;
      }
    }
  }
  //남은 (가 있어도 false
  if(s_arr.length!==0){
    result = false;
  }
  return result;
}

 

의견을 남겨주세용