Level1 - 로또의 최고 순위와 최저 순위

Lee Ju-Hyeon(David)·2021년 9월 13일
0
post-thumbnail

문제 출처

Solution

function solution(lottos, win_nums) {
  var answer = [];
  const rank = [6, 6, 5, 4, 3, 2, 1]
  let count = 0
  let zero_count = 0
  for (let num of lottos) {
    if (num === 0) {
      zero_count++
      continue
    }
    for (let win_num of win_nums) {
      if (num === win_num) {
        count++
        break
      }
    }
  }
  zero_count += count
  answer.push(rank[zero_count], rank[count])
  return answer;
}

lottos배열을 순회하면서 일치하는 번호의 개수와 0의 개수를 파악한다. 일치하는 번호의 개수가 최소로 맞춘 개수이며, 0의 개수까지 더하면 최대로 맞춘 개수가 된다.

rank배열의 각각 등수가 저장되어 있고 인덱스가 맞춘 번호의 개수이다.

Clean-up

function solution(lottos, win_nums) {
  var answer = [];
  const rank = [6, 6, 5, 4, 3, 2, 1]
  let count = 0

  let zero_count = lottos.filter(num => num === 0)
  lottos.forEach(num => {
    if (win_nums.includes(num)) {
      count++
    }
  })
  answer.push(rank[zero_count.length + count], rank[count])
  return answer;
}
  1. 0의 개수를 파악하는 반복문을 fillter메서드로 교체. zero_countlottos함수의 0의 개수만큼 0을 가지고 있는 배열이 된다.

    fillter메서드는 조건에 해당하는 원소가 없을 경우 빈 배열을 반환하기 때문에 lottos함수에 0이 없어도 된다.

  2. 당첨 번호와 일치하는 번호의 개수를 파악하는 부분을 forEachincludes 메서드를 사용했다. lottos의 각 요소마다 win_nums에 포함되는지 확인한다. includes메서드는 true, false 형태로 반환하기 때문에 사용했다.

0개의 댓글