프로그래머스 Lv.2 : 올바른 괄호

zeroequaltwo·2022년 11월 30일
0

코딩테스트

목록 보기
53/69

문제

프로그래머스 문제

내 풀이

  • 맨 처음에는 while + 문자 소거로 풀었는데 효율성 문제에서 통과를 못했다. 배열이나 문자열을 제거해나가면서 루프를 돌리는 건 역시 효율성이 많이 떨어지는 거라는 걸 배운 문제
function solution(s){
    // while((s[0] !== ")" && s[s.length-1] !== "(") && s !== ""){
    //     s = s.replace(/\(\)/g,"");
    // }
    // return s.length === 0;
    
    if(s[0] === ")" || s[s.length-1] === "(") return false;
    
    let result = 0;
    for(var i=0; i<s.length; i++){
        if(s[i] === "(") result++;
        else result--;
        if(result === -1) return false;
    }
    
    //console.log(result)
    return result === 0;
}

개선점

  • cum += paren === '('? 1: -1 이 부분이 좋아서 갖고왔다.
function solution(s){
    let cum = 0
    for (let paren of s) {
        cum += paren === '('? 1: -1
        if(cum < 0) {
            return false
        }
    }
    return cum === 0? true: false;
}
profile
나로 인해 0=2가 성립한다.

0개의 댓글