반응형

문제 설명

 

출처: 프로그래머스

 

제한 사항

 

출처: 프로그래머스

 

 

풀이

처음 문제를 본 나의 생각

  • 반복하는 수를 줄이기 위해 0이 아닌 값으로 배열을 재구성
  • 일치하는 개수에 해당하는 순위를 갖고 있는 Map 생성
    습관처럼 object로 만들었다가.. Map으로 다시 했다. 배웠으니 써야지.

최고 순위: 일치한 개수 + 0의 개수

최저 순위: 일치한 개수

 

function solution(lottos, win_nums) {
    var list = lottos.filter((v) => {
        return v != 0;
    }), rank = new Map();
    
    rank.set(6, 1);
    rank.set(5, 2);
    rank.set(4, 3);
    rank.set(3, 4);
    rank.set(2, 5);
    rank.set(1, 6);
    rank.set(0, 6);
    
    var zeroCnt = 6 - list.length;
    
    if(zeroCnt == 6) {
        return [1,6];
    }
    
    var winCnt = 0;
    
    list.forEach((num) => {
        win_nums.forEach((num2) => {
            if(num == num2) {
                winCnt++;
            }
        });
    });
    
    return [rank.get(winCnt+zeroCnt), rank.get(winCnt)];   
}

 

반응형