괄호 확인하기 (Level 2)

문제

is_pair함수는 문자열 s를 매개변수로 입력받습니다.

s에 괄호가 알맞게 짝지어져 있으면 True를 아니면 False를 리턴하는 함수를 완성하세요.

예를들어 s가 “(hello)()”면 True이고, “)(“이면 False입니다.

s가 빈 문자열(“”)인 경우는 없습니다.

풀이

function is_pair(s){
  let obj = {"(":0};
  let arr = s.split("");
  for (let i in arr) {
    if ( obj["("] < 0 ) {
      return false
    } else if ( arr[i] == "(") {
        obj["("]++
      }
      else if ( arr[i] == ")") {
          obj["("]--
      } else {
        continue;
      }
    }
    if ( obj["("] == 0 ) { return true }
  else { return false }
  }

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( is_pair(")(") )

코드가 너무 지저분함. 작동을 하긴하는데 별로 맘에들진 않는다.

다른 사람의 풀이

function is_pair(s){
  var arr = s.split('');
  var zero = 0;
  for(var i in arr) {
    if(arr[i] === '(')
      zero += 1;
    else if(arr[i] === ')')
      zero -= 1;
    if(zero < 0)
      return false;
  }
  return zero === 0;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log( is_pair("(hello)()") )
console.log( is_pair(")(") )

객체 대신에 그냥 숫자형으로 처리했어도 되는데 괜히 어렵게 생각한듯 하다.

근데 이프문에 중괄호를 안써도되는건가 신기하네


+ Recent posts