프론트엔드 개발자의 기록 공간

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

알고리즘_JS/프로그래머스_Level1

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

[리우] 2021. 6. 9. 15:12

프로그래머스 Level1 로또의 최고 순위와 최저 순위 -> 2021Dev-Matching: 웹 백엔드 문제

 

문제 설명 : 주어진 입력을 통해 일치하는 번호를 찾고 등수를 출력하면 되는 문제이다.

데브 매치에 나왔던 문제인만큼 대표적인 유형인 것 같다.

 

저는 문제접근을 다음과 같이 구상했습니다.

1. 민호의 입력번호와 당첨번호가 일치하는 개수 구하기

2. 민호의 입력번호중 0의 개수 구하기 

3. 최고순위 = 1번+2번,  최저순위 = 1번이 된다.

function solution(lottos, win_nums) {
    var answer = [];
    
    //순위
    var result = [6,6,5,4,3,2,1];
    
    //일치하는 복권 번호의 수
    let cnt =0;
    
    //민호의 입력번호와 당첨번호가 일치하는 것들의 갯수
    //splice쓴 이유는 민호의 입력번호에서 중복번호가 있을 수 있기 때문
    for(let x of lottos){
        if(win_nums.indexOf(x) !== -1){
            win_nums.splice(win_nums.indexOf(x),1);
            cnt += 1;
        }
    }
    //0의 개수
    let max = lottos.filter((el) => el===0);

    //최고 순위 = 겹치는 수 + 0의 개수
    answer.push(result[cnt+max.length])
    //최저 순위
    answer.push(result[cnt])
    return answer;
}

코드 설명 : 입력번호와 당첨번호 일치하는 개수를 구하는 반복문에서

splice를 사용한 이유는 민호의 입력번호가 동일한게 여러개([5,42,42,42,3]) 당첨 번호([5,42,10,5])일

경우가 있기 때문에 사용해주었다.

 그외에는 위에 설명한 로직대로 작성했다. 

728x90
Comments