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

go·2021년 8월 9일
0

Algorithm

목록 보기
2/5
post-thumbnail
  • lottos : 민우가 구매한 로또 번호를 담은 배열

    1. lottos는 길이 6인 정수 배열
    2. lottos의 모든 원소는 0 이상 45 이하인 정수
      1. 0은 알아볼 수 없는 숫자를 의미
      2. 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않음
      3. lottos의 원소들은 정렬되어 있지 않을 수도 있음
  • win_nums : 당첨 번호를 담은 배열 (매개변수)

    1. win_nums은 길이 6인 정수 배열
    2. win_nums의 모든 원소는 1 이상 45 이하인 정수
      1. win_nums에는 같은 숫자가 2개 이상 담겨있지 않음
      2. win_nums의 원소들은 정렬되어 있지 않을 수도 있음

    당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return하도록 solution 함수를 완성해라.

나의 풀이

코드가 너무 길다... 그래도 맞췄다는 것에 의의를 두자,,, 점점 줄여나가면 되징

var lottos = [44, 1, 2, 3, 32, 25];
    var win_nums = [31, 10, 45, 33, 6, 19];

    function solution(lottos, win_nums) {
      // 1. lottos 오름차순 정렬
      var lottosSort = lottos.sort(function (a, b) {
        return a - b;
      });
      // 2. win_nums 오름차순 정렬
      var win_numsSort = win_nums.sort(function (a, b) {
        return a - b;
      });
      // 3. 오름차순 정렬한 두 파라미터를 비교하여 동일한 값의 개수를 찾아냄
      var sameNum = lottosSort.filter((x) => win_numsSort.includes(x));
      // 4. lottos에서 0의 개수를 찾아냄
      var unknownNum = 0;
      for (i = 0; i < 6; i++) {
        if (lottosSort[i] == 0) {
          unknownNum += 1;
        } else {
        }
      }
      var minNum = 0; // 당첨된 개수(최저)
      var maxNum = 0; // 당첨된 개수(최고)

      minNum = sameNum.length;
      maxNum = sameNum.length + unknownNum;
      console.log(maxNum);
      var maxRank; // 최고 순위
      var minRank; // 최저 순위
      if (maxNum == 0) {
        maxRank = 6;
      } else {
        maxRank = 7 - maxNum > 7 ? 1 : 7 - maxNum;
      }
      if (minNum == 0) {
        minRank = 6;
      } else {
        minRank = 7 - minNum >= 6 ? 6 : 7 - minNum;
      }
      var answer = [maxRank, minRank];
      console.log(answer);
      return answer;
    }

아쉬운 점

0개의 댓글