Programmers/Level 2

[Javascript] 프로그래머스 : 올바른 괄호

emayom 2021. 8. 22. 01:29

 [Javascript] 프로그래머스 Level 2 _ 올바른 괄호

 

👇🏻

Link_Click

 

 

👇🏻

시행착오
( + 코드를 작성하면서든 생각들.)


1.

정확성 테스트는 통과되지만

효율성 테스트는 통과되지못하는 코드이다 ㅠㅠ 

function solution(s){
    const x = s.length/2;
    
    if(s[0] == ")"){
        return false;
    } else {
        
        for(let i = 0; i < x; i++){
            s = s.split("()").join('');
        }

        return (s == "")? true : false; 
    }
}
function solution(s){
    const x = s.length/2;
    const regExp = /\(\)|\(|\)/g;
    
    if(s[0] == ")"){
        return false;
    } else {
            
        for(let i = 0; i < x; i++) {
            if(s!=""){
                s = s.match(regExp)
                     .filter(el => el != "()")
                     .join('');
            }
        }

        return (s == "")? true : false; 
    }
}

 

2.

이렇게 하면 효율성 테스트에서

하나는 맞고 하나는 시간 초과가 뜬다.

(하지만 앞, 뒤의 조건으로도 거를 수 있는 x%2 != 0 이라는 조건을 제거하면 통과는 된다.)

function solution(s){
    const x = s.length;
    
    if(s[0] == ")" || x%2 != 0 || s[x-1] == "("){
        return false;
    } else {
        let cnt = 0;
        s = s.split('');
        
        for(let i = 0; i < s.length; i++){
            if(s[i] == "("){
                cnt++;
            } else if(cnt > 0){
                cnt--;
            }
        }
        
        return (cnt != 0)? false : true; 
    }
}

 

 

 

✏️ 제출 코드

 

 

 

- solution 01

 

애초에 잘 닫힌 괄호 ()는 걸러서 반복문에서 소요되는 시간을 줄였더니

그럼 잘 통과가 된다!

 

- solution 02

 

split()과 join() 대신 replace()로 잘 닫힌 괄호를 제거했다.

시간이 줄어들 줄 알았는데 딱히 그것도 아니였다 ㅎㅎㅎㅎㅎㅎ


⚠️ 아래 내용은 모두 개인적인 참고 / 기록을 위한 용도입니다. 참고해주시고 편안하게 봐주세요 :)  ⚠️
***    혹시라도 잘못된 정보가 있다면  언제든지 알려주시면 감사하겠습니다  !    ***