알고리즘문제

프로그래머스 > 로또의 최고 순위와 최저 순위

단점이없어지고싶은개발자 2022. 10. 9. 14:02
반응형

1. lottos배열 안에는 친구의 장난으로 로또 번호가 아닌 0이 들어가 있고, 경우의 수를 따져서 맞췄다고 가정한다.

2. 그래서 lottos에서 win_nums배열에 당첨된 숫자가 있는지 + 0이 들어가있는 숫자만큼 더해 몇 등인지 가정한다.

3. 그리고 0이 들어가 있는 나의 로또가 또한 안 맞았다고 가정을 해서 최대 등수, 최저 등수를 반환해야한다.

 

function solution(lottos, win_nums) {
    let max = 0;
    let min = 0;
    
    lottos.forEach((lotto) => {
      if (lotto === 0) {
      //0이 있다면 맞췄다고 가정을 해 max에 1씩 더해준다.
          max++;
      }
      
      if (win_nums.includes(lotto)) {
      //내 숫자가 로또 당첨번호에 정말 포함되어 있다면 max에 1씩 더해주고, 
      //순수하게 0이 아닌 내 숫자중에 더한 값만 min 또한 1씩 더해준다.
          max++;
          min++;
      }
    });
    
    return [winLotto(max), winLotto(min)];

    function winLotto(lotto) {
    //switch문을 통해 맞춰진 숫자를 바탕으로 몇등인지 반환하는 함수
        switch (lotto) {
            case 6:
                return 1;
            case 5:
                return 2;
            case 4:
                return 3;
            case 3:
                return 4;
            case 2:
                return 5;
            default:
                return 6;
        }
    }
}
반응형