[2021 Dev-Matching: 웹 백엔드 개발자(상반기)] 로또의 최고 순위와 최저 순위

kich555·2021년 11월 3일
0

Algorithm

목록 보기
3/5

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

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.

순위당첨 내용
16개 번호 모두 일치
25개 번호 모두 일치
34개 번호 모두 일치
43개 번호 모두 일치
52개 번호 모두 일치
6그 외

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.

알아볼 수 없는 번호는 0으로 표시한 민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

입출력 예

lottoswin_numsanswer
[44, 1, 0, 0, 31, 25][31, 10, 45, 1, 6, 19][3, 5]
[0, 0, 0, 0, 0, 0][38, 19, 20, 40, 15, 25][1, 6]
[45, 4, 35, 20, 3, 9][20, 9, 3, 45, 4, 35][1, 1]

☕첫번째 풀이

function solution(lottos, win_nums) {
  
    var answer = [];
    const unknowns = lottos.filter(zero => zero === 0).length
    const corrects = lottos.filter(correct => win_nums.includes(correct)).length
    

  let min = 7 - corrects >= 6 ? 6 :  7 - corrects
  let max = min - unknowns < 1 ? 1 : min - unknowns
  
  answer.push(max, min)
  
    return answer;
}

  1. filter 메소드를 사용하여 0 과 당첨된 번호의 개수를 구하기
    const unknowns = lottos.filter(zero => zero === 0).length
    const corrects = lottos.filter(correct => win_nums.includes(correct)).length

  1. 삼항연산자를 사용하여 당첨 등수 최소, 최댓값 구하기
  let min = 7 - corrects >= 6 ? 6 :  7 - corrects
  let max = min - unknowns < 1 ? 1 : min - unknowns

☕다른 분의 풀이

function solution(lottos, win_nums) {
    const answer = []
    const rank = [6,6,5,4,3,2,1]
    
    let min = lottos.filter(correct => win_nums.includes(correct)).length
    let zero = lottos.filter(zero => !zero).length
    let max = min + zero
    
    answer.push(rank[max], rank[min])
    
    return answer;
}

조건문을 사용하지 않고, 미리 선언해둔 rank 배열을 활용하여 순위를 구함

profile
const isInChallenge = true; const hasStrongWill = true; (() => { while (isInChallenge) { if(hasStrongWill) {return 'Success' } })();

0개의 댓글