챌린지/프로그래머스 챌린지

[프로그래머스] LV.2 올바른 괄호

Kkan 2023. 7. 5. 23:04
728x90
반응형

🍕 문제풀이 1차 시도

const solution = (s) => {
    let answer = 0;
    const sArr = [...s];
    
    for(let i = 0; i < sArr.length; i++) {
        if(sArr[i] === '(') {
            answer++;
        } else {
            answer--;
        }
        
        if (answer < 0) {
            return false;
        }
    }
    return !answer;
}

효율성 테스트 탈락!

 

🍕 문제풀이 2차 시도

const solution = (s) => {
    let answer = 0;
    let sArr = [...s];
    
    for(let i = 0; i < sArr.length; i++) {
        sArr[i] === '(' 
        	? answer++ 
            : answer--

        if (answer < 0) {
            return false;
        }
    }
    return !answer;
}

효율성 테스트 탈락!

 

🍕 문제풀이 3차 시도

const solution = (s) => {
    let answer = 0;
    
    for(let i = 0; i < s.length; i++) {
        s[i] === '(' ? answer++ : answer--

        if (answer < 0) {
            return false;
        }
    }
    return !answer;
}

효율성 테스트까지 성공!

 

 

🍕 해석

스택과 큐의 문제인 만큼 이를 활용해준다.

배열을 순회하면서 앞에서부터 + / - 를 실행한다.

정상적인 짝을 가지고 있다면 0(falsy) 아니면 1(trusy)

이때 ! 연산자로 뒤집어 주면 완성!

 

🍕 기타

효율성 테스트...

굳이 배열로 다시 만들어서 사용했다.

=> 문자열은 유사 배열이기 때문에 안해도 될 짓.

 

 

728x90
반응형