본문 바로가기

주5일알고리즘

Programmers: 로또의 초고 순위와 최저 순위 with JS

<내 풀이>

function solution(lottos, win_nums) {
    var answer = [];
    //lottos랑 win_nums랑 비교해서 같은게 몇개인지 갯수가 나와야하고 if n=3
    //7-n=순위
    var match = 0;
    var zero = 0;
    for(var i of lottos){
        if(i===0) {
            zero += 1
        }
        for(var j of win_nums){
            if(i===j){
                match += 1;
            }
        }
    }

    if(match===0){
        answer = [7-(match+zero), 6];
        if(zero===0){
            answer = [6, 6]
        }
    } else {
        answer = [7-(match+zero), 7-match]
    }

    return answer;
}

 

<가장 많은 좋아요를 받은 풀이>

function solution(lottos, win_nums) {
    const rank = [6, 6, 5, 4, 3, 2, 1];

    let minCount = lottos.filter(v => win_nums.includes(v)).length;
    let zeroCount = lottos.filter(v => !v).length;

    const maxCount = minCount + zeroCount;

    return [rank[maxCount], rank[minCount]];
}

 

array.filter.length로 배열 내 특정 값 포함하는 갯수 구하는 데 사용할 수 있구나!

훨씬 깔끔해진다.

 

그리고 분기로 비교하는게 아닌 미리 rank를 정의하는 방법도 있네.

이렇게 하니 코드 가독성 확 산다.