본문 바로가기
👩‍💻 Programming/Coding Test 문제 풀이

[Programmers] level 1: 로또의 최고 순위와 최저 순위 by JavaScript

by codingBear 2022. 7. 1.
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/77484

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr


 이번 문제는 level1이라는 닉값에 걸맞게 쉽게 풀었다. 우선 '맞힌 개수: 순위'로 구성되는 객체를 하나 선언하고 일치하는 숫자 개수를 세는 변수 cnt 및 lottos 안의 0의 개수를 세는 zeroCnt를 각각 선언한다. zeroCnt를 선언하는 이유는 0을 제외한 일치하는 숫자 개수와 0의 개수를 더하면 최대 순위에 해당하는 맞힌 개수가 나오기 때문이다. 맞힌 개수를 모두 구했다면 정답 배열에다 최고 순위, 최저 순위 순으로 값을 넣어주자.

 처음에는 이중 for문을 돌려서 일치하는 숫자 개수를 구했으나 다른 사람들의 코드를 참고하여 includes() 메서드를 활용하는 코드로 수정하였다. includes() 메서드는 일치하는 값이 존재하는지 여부에 따라 boolean값을 반환한다. win_nums에 lotto값이 존재한다면 includes() 메서드는 true를 반환하여 일치 숫자 개수가 증가하는 것이다.

 

Solutions

Solution 1.
const lottos = [44, 1, 0, 0, 31, 25];
const winNums = [31, 10, 45, 1, 6, 19];
// const lottos = [0, 0, 0, 0, 0, 0];
// const winNums = [38, 19, 20, 40, 15, 25];
// const lottos = [45, 4, 35, 20, 3, 9];
// const winNums = [20, 9, 3, 45, 4, 35];

console.log(solution(lottos, winNums));

function solution(lottos, win_nums) {
  const answer = [];
  const rank = {
    6: 1,
    5: 2,
    4: 3,
    3: 4,
    2: 5,
    1: 6,
    0: 6,
  };
  let cnt = 0;
  let zeroCnt = 0;

  for (const lotto of lottos) {
    if (lotto === 0) zeroCnt++;
    if (win_nums.includes(lotto)) cnt++;
    // for (const num of win_nums) {
    //   if (lotto === num) cnt++
    // }
  }

  answer.push(rank[cnt + zeroCnt]);
  answer.push(rank[cnt]);

  return answer;
}

함께 보기

 

Array.prototype.includes() - JavaScript | MDN

The includes() method determines whether an array includes a certain value among its entries, returning true or false as appropriate.

developer.mozilla.org

 

728x90
반응형

댓글