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