javascript/프로그래머스

[코딩테스트 연습]level 1. 로또의 최고 순위와 최저 순위

sewonzzang123 2022. 7. 8.
반응형

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


먼저 로또에 있는0의 숫자를 zeroCount로 주어 갯수를 파악한 뒤,

맞춘 숫자의 갯수를 파악했다.

 

전부 맞췄을 경우와 로또의 숫자가 전부 0인 경우에 대해서 예외처리를 해 주고, 나머지인 경우를 계산하여 array에 최고, 최저 순위를 push 해 주었다.

 

function solution(lottos, win_nums) {
    let matches =0;
    let zeroCount = 0;
    
    lottos.forEach(value=>{if(value===0)zeroCount++;});
    
    for(let i=0; i<lottos.length; i++){    
        if(win_nums.findIndex(value=>value===lottos[i])>-1){
            matches++;
        }
    }
    
    var answer = [];
    if(matches === 0 && zeroCount===0){
        answer.push(6);
    } else{
        answer.push(7-(matches+zeroCount));
        }
    
    if(matches === 0){ matches=1; }
    answer.push(7-matches);
    
    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]];
}

rank를 배열로 만들어서 구현한 답이 있어서 가져와봤다.

includes() 함수는 다음 링크로 확인할 수 있다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

 

Array.prototype.includes() - JavaScript | MDN

includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다.

developer.mozilla.org

minCount는 최소한으로 맞춘 개수를 의미하기 때문에 includes함수로 찾은 동일한 숫자의 개수가 등수로 표현이 될 것이다.

maxCount는 최대한 맞춘 개수를 의미하여, zeroCount를 더한 숫자의 개수가 등수로 표현될 것이다.

 

rank로 모두 0인 경우 6등임을 설정한 것은 매우 좋은 생각인것 같다.

반응형

댓글