본문 바로가기
알고리즘 공부

프로그래머스 2단계 - 올바른 괄호

by 코딩 냠냠 2022. 12. 6.
728x90
반응형

올바른 괄호


문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한 조건

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

입출력 예시

s answer
"()()" true
"(())()" true
")()(" false
"(()(" false

🐣내가 한 풀이

2단계부터는 효율성도 검사하더군요... 세상살기 팍팍하군...
우선 for()문 통해서 s에서 '('일때 cont에 1을 더해줍니다. 그리고 cont가 음수일때 false를 리턴하도록 합니다.
마지막으로 삼항연산자를 활용하여 cont가 0과 완전히 일치하면 true를 반환하도록 합니다.

const s = "()()";
function solution(s){
    let cont = 0;
    for(let i = 0; i < s.length; i++){
        //'('일때 cont에 +1, 아닐때 -1
        cont += s[i] == '(' ? 1 : -1;
        if(cont < 0) return false;
    }
  return cont === 0 ? true : false;
}

🐣다른 풀이

대부분 for문을 통해서 많이 해결하셨던데 정규식을 활용하여 해결하신 분도 있더군요. 정규식은 match를 활용하여 좀더 간단하게 하셨네요.

function is_pair(s){
  var result = s.match(/(\(|\))/g);
  return result[0] == '(' && result.length % 2 == 0 ? true : false
}

댓글


자바스크립트

Javascript

자세히 보기
html
css
광고 준비중입니다.
<