문제

 

 

풀이 코드

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 를 사용할수 있다.

더 공부해 봐야겠다

+ Recent posts