CK 003 | 로또의 최고 순위와 최저 순위(javaScript)

This Is Empty.·2021년 8월 13일
0

codekata

목록 보기
3/35

문제

🔗 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.
...
민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

제한사항

  • lottos는 길이 6인 정수 배열입니다.
  • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • win_nums은 길이 6인 정수 배열입니다.
  • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

내가 작성한 코드

function solution(lottos, win_nums) {
    var rank = [6, 6, 5, 4, 3, 2, 1];
    var count = 0
    var countz = lottos.filter(e => e == 0).length

    
    for(let i = 0; i < lottos.length; i++) {
        win_nums.includes(lottos[i]) && count++
    }
    
    return [rank[count+countz], rank[count]]
}

경우의 수는 2가지 이다.

  • 알아볼 수 없는 숫자가 다 맞을 경우
  • 알아볼 수 없는 숫자가 다 틀릴 경우

rank : 모두 틀릴경우와 한개만 맞았을 경우 둘 다 6등이기 때문에 6을 두개 넣었다.
count : 알아볼 수 있는 숫자가 당첨 번호와 일치하는 경우 1씩 증가한다.
countz : 알아볼 수 없는 숫자의 개수를 카운트한다.

반복문을 돌려주면서 민우가 가진 배열의 i번째가 win_nums 배열에 포함되어 있을경우 count를 1씩 증가시켜준다.
알아볼 수 없는 숫자가 다 맞았을 경우도 count에 포함되어야 하므로 최고 순위는 rank 배열에서 둘 다 더한(count+countz) 인덱스에 위치한 값을, 최저 순위는 count인덱스에 위치한 값을 리턴한다.

다른 사람의 풀이

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]];
}

filter 메소드를 이용

profile
Convinced myself, I seek not to convince.

0개의 댓글