로또의 최고 순위와 최저 순위
https://programmers.co.kr/learn/courses/30/lessons/77484
맞힐 수 있는 가장 최저 개수는 lotto 배열과 win_nums의 일치하는 배열의 요소의 수를 구하고,
최고 개수는 최저 개수에서 구한 요소의 수에 배열에서 0의 요소의 수를 더하면 가능한 가장 높은 개수를 구할 수 있다. 0이 뭔지는 알 수 없기 때문에 0이 모두 다 win_nums와 일치하는 요소 중의 하나라고 가정한다면 맞힐 수 있는 가장 최고 개수이기 때문이다.
function solution(lottos, win_nums){
const rankingObj = {6:1, 5:2, 4:3, 3:4, 2:5, 1:6, 0:6}
let lowest = lottos.filter(v => win_nums.includes(v)).length // 두배열에서 일치하는 요소들의 개수 구하기
let top = lowest + lottos.filter(v => v === 0).length
return [rankingObj[top], rankingObj[lowest]]
}
배열이 특정 요소를 포함하고 있는지 판별한다.
syntax
arr.includes(valueToFind[, fromIndex])
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
문제에서 숫자를 맞힌 개수에 따라 정의한 랭킹을 {맞은 개수 : 랭킹} 으로 객체를 선언해주고 끝에서 객체의 value 값을 반환해주도록 풀었는데,
다른 사람의 풀이에서 [6,6,5,4,3,2,1] 과 같이 배열로 선언하고 인덱스를 반환해주는 간단한 방법도 있다는 걸 알게되었다.
똑똑한 사람들 정말 많은것 같다 ㅋ