알고리즘 문제

알고리즘 문제 js 33- 로또의 순위

<zinny/> 2022. 2. 1. 23:02
728x90

내가 쓴 코드 

function solution(lottos, win_nums) {
    let win =[0,6,5,4,3,2,1];
    let count = 0;
    let zero =0;
    for(let i =0; i<lottos.length; i++){
        if(lottos[i]==0){ zero = zero +1 }
        for(let j=0; j<lottos.length; j++){
            if(lottos[i]==win_nums[j]){
                count=count +1
            }
        } 
    }  
    if(count==0 && zero ==0) {return [6,6]}
    if(zero == 0 && count ==6){return [1,1]} 
    if(zero == 6){return [1,6]}
    let max = win[count]
    let min = win[count+zero]
    return ([min,max])
}

문제를 일단 종이에 적어봤는데 수학문제 풀듯 접근하니 나온 답

진짜 좋은 코드는 아니지만 내손으로 풀어냈다는 것에 의의를두기로 했다 

이중 반복문을 돌리면서 

1) 로또 번호와 당첨번호가 같을때 마다 count에 +1을 해주기로함

2)로또 번호에 알아볼수 없는 번호인 0이 몇개가 있는지 세주기로 함 (zero에 +1)

 

3)win이라는 배열을 만든 이유는 갯수가 늘어날수록 실제 등수의 수는 줄어들기 때문에 새롭게 배열을 제작

단 인덱스는 0부터 시작하기 때문에 처음을 0으로 두고 내림차순으로 배치 

 

4) 가능한 조건들을 제외하고 시작하도록 조건문 작성

 4-1) 로또 번호와 당첨번호가 전부 다르고 , 알아볼수 없는 번호도 하나도 없는 경우엔 최대등수 6, 최소등수 6

 4-2) 알아볼수 없는 번호가 하나도 없지만, 로또 번호와 당첨번호가 전부 같은 경우엔 최대등수 1, 최수등수 1

 4-3) 로또 번호가 전부 알아볼수 없는 번호라면 최대등수 1, 최소 등수 6

 

5) 위 조건문을 제외한 나머지를 최소 등수와 최대등수로  리턴

 

 

728x90