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

Bitnara Lee·2021년 7월 1일
0

문제_자세한내용

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

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

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

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

CODE


function solution(lottos, win_nums) {
    
    // 일치하는 것의 갯수 비교 -> 일치하는 요소 갯수 + 0의 갯수
    // 일단 lottos와 win_nums sort하고
    // lottos에서 0인것 다 제함+ 갯수 카운트?
    // 두 배열 비교
    
        lottos.sort((a,b)=>a-b)
        win_nums.sort((a,b)=>a-b)
 
        let count= 0
        let cnt = 0
        let len=lottos.length
        for(let i=0; i<len; i++){
            if(lottos[i] === 0){
                lottos.shift()
                count++
                i--
            }
        }
    if (count === 6){     //0이 6개인경우 제외 완료
        return [1,6]
    }
     
        for(let i=0; i<lottos.length; i++){   // 일치하는 요소 갯수 카운트
           if(win_nums.includes(lottos[i])){
               cnt++
           }
        }
    let score = 7
    if(cnt <2){ // 일치하는 요소가 0-1개 이면 cnt에 1할당 
        cnt = 1
    }
   //score - (0의 갯수+일치하는 요소 갯수)이 최고순위/ score - 일치하는 요소 갯수가 최저순위
    return [ score-(count+cnt), score-cnt] 

  
}
    

//############################ solution 2 ################################
    function solution(lottos, win_nums) {
     //  배열 index를 이용할 수 있다 ->순위를 보면 1개-0개 번호는 둘다 6등
     // filter로 0인 것만 거른것의 length 또한 0의 갯수이다.
        
       const grade = [6,6,5,4,3,2,1] // 0~1개 번호 일치하면 6등---index이용
       let zeroCnt = lottos.filter(lotto => lotto === 0).length;
       let minCnt =lottos.filter(lotto => win_nums.includes(lotto)).length
       let maxCnt = minCnt + zeroCnt
      
        
       return [grade[maxCnt], grade[minCnt]] 
        
    }

Point

  • 로또의 순위를 정하는 방식을 보고 배열을 떠올렸어야 한다!

  • 번호가 일치하는 갯수에 따라 배열의 index에 맞게 순위를 구성하는 것!
    (0개면 6등,1개면 6등,2개면 5등..-> 배열[0],배열[1]...)

  • filter로 원하는 것을 거른 배열의 length 또한 원하는 요소의 갯수(잊지말자)



문제풀이, 알고리즘이 부족해서 프로그래머스 1단계부터 시작했다
내가 쓴 코드들은 군더더기가 많고 정리가 덜 되보이지만, 앞으로 차근차근 고쳐나가면 된다. 화이팅!

profile
Creative Developer

0개의 댓글