[프로그래머스 level2] 순위 검색(효율성 미통과)

문제

https://programmers.co.kr/learn/courses/30/lessons/72412


문제 풀이

코드1(정확성100, 효율성0)

function solution(info, query) {
    const answer=[];
    for(let i=0; i<info.length; i++){
        info[i]=info[i].split(' ');
    }
    for(let j=0; j<query.length; j++){
        query[j]=query[j].split(' and ').join(' ').split(' ');
        let cnt=0;
        for(let l=0; l<info.length; l++){
            let tmp=0
            for(let k=0; k<5; k++){
                if(k===4 && Number(query[j][4])<=Number(info[l][4])){
                    tmp++;
                    break;
                }
                else if(k===4) continue;
                if(query[j][k]===info[l][k] || query[j][k]==='-') tmp++;
                else break;
            }
            if(tmp===5) cnt++;
        }
        answer.push(cnt);
    }

    return answer;
}


단순하게 for문을 통해 비교해고, 조건과 같으면 cnt를 늘려주는 방식으로 풀어줬다. 하지만 삼중 for문이기 때문에 정확성은 100점이지만 효율성 테스트가 완전 0점... 효율성 빡시다💩
다른 방식으로 풀어야한다!
카카오 페이지에서 보니 무려 정답률이 정확성 44.07%, 효율성 4.49%인 문제였다! 효율성 진짜 극악의 문제였나보다... 문제에서도 '본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.'라고 각잡고 써있었다.

효율성 테스트의 경우 주어진 시간 내에 실행이 완료되어야 하므로, 최적화된 구현 방법을 고민할 필요가 있습니다.

코드2(효율성 통과를 위해!)

좋은 웹페이지 즐겨찾기