프로그래머스

[프로그래머스] 로또의 최고 순위와 최저 순위

so_yeon_- 2024. 12. 28. 14:35

https://school.programmers.co.kr/learn/courses/30/lessons/77484

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


접근방법

사용자가 선택한 로또 번호(lottos)와 당첨 번호(win_nums)를 비교하여, 일치하는 번호의 개수(low)와 미지정 번호(0)의 개수(temp)를 계산한다. low + temp는 미지정 번호를 모두 당첨 번호로 바꾼 경우의 최대 맞춘 개수로, 이를 통해 최고 순위를 계산하고, low는 실제로 맞춘 개수로 최저 순위를 계산한다. 

function solution(lottos, win_nums) {
    var score = new Map([[6,1],[5,2],[4,3],[3,4],[2,5],[0,6]]);
    var answer = [];
    
    // 일치하는 숫자 개수를 계산
    var low = 0; 
    
    // 0의 개수를 계산
    var temp = 0;
    
    for(lotto of lottos){
        if(win_nums.filter((item) => item == lotto)[0] != null){
            low ++;
        }else if(lotto == 0){
            temp ++;
        }
    }
    
    // score map 에 포함되지 않는경우 6등 (ex. 1개 맞춘경우)
    answer.push(score.get(low + temp) || 6);
    answer.push(score.get(low) || 6);
    
    return answer;
}

결과 : 100점