문제
풀이 코드
function solution(lottos, win_nums) {
let count = 0;
let point = [];
for (let i = 0; i < win_nums.length; i++) {
if (lottos.indexOf(win_nums[i]) != -1) count++;
}
point.push(count < 2 ? 6 : 7 - count);
for (let i = 0; i < lottos.length; i++) {
if (lottos[i] === 0) {
count++;
}
}
point.push(count < 2 ? 6 : 7 - count);
return point.sort((a, b) => a - b);
}
풀이 과정
for 루프를 각각 두번 돌려 배열에 순위를 할당해 주었다.
비교적 간단한 문제였다 이 문제를 풀며 배운것은 indexOf 로 배열 내의 특정 값을 찾을수 있다는것이다!
값을 찾지 못하면 -1을 반환하고, 찾았다면 해당 인덱스를 반환해준다
그렇게 해서 최초로 일치하는수 를 7에서 빼주면 최저 순위가 되고,
0인 부분이 모두 일치했을때도 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를 이용하여 풀수있었다.
게다가 include 를 사용할수 있다.
더 공부해 봐야겠다