프로그래머스 로또 만들기

윤수호·2022년 5월 14일
0

로또 번호를 만드는데 lottos에 있는 번호가 win_nums에 얼마나 포함되는지 아래의 표를 보고
계산하고

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

이러한 규칙으로 되는데 만약 숫자가0일경우는 숫자를 알아볼 수 없는 경운데 이러한 경우를 위해
당첨됐을 시 최대 순위와 최소 순위를 배열로 만든다.
[최대순위,최소순위]

function solution(lottos, win_nums) {
        const answer = []
        const min = lottos.filter((n) => win_nums.includes(n)).length
        const max = lottos.filter((n) => n == 0).length + min

        max > 1 ? answer.push(7 - min) : answer(6)
        min > 1 ? answer.push(7 - max) : answer(6)

        return answer
      }
      console.log(solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19]))

이러한 경우 [3,5]가 나와야 되는데 forEach로 돌려서 만들다가 너무 힘들어서결국 답을 봐버렸다
조금만 더하면 만들 수 있었는데 includes로 0을 포함 하는지 않하는 지가 계산하는게 생각보다 너무 힘들었다.
답을 보니 2개를 만들었는데.... 나도 2개를 만들어서 비교를 하는 식으로 했는데 왜 안됐을까..

아마도 js실력 부족인것같다.

짜는 것 까지는 어떻게 되는것같은데 그걸 구현하는 능력이 많이 부족하다고 느낀다.

<script>
      function solution(win_nums, lottos) {
        var answer = 0
        let sol = []
        win_nums.forEach((i) => {
          if (lottos.includes(i)) {
            answer++
            console.log(answer)
          }
          if (lottos.includes(0)) {
            answer++
            console.log(answer)
          }
          if (answer == 6) {
            return (sol = [1, answer])
          } else if (answer == 5) {
            return (sol = [2, answer])
          } else if (answer == 4) {
            return (sol = [3, answer])
          } else if (answer == 3) {
            return (sol = [4, answer])
          } else if (answer == 2) {
            return (sol = [5, answer])
          }
        })
        return sol
      }
      console.log(solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19]))
    </script>

창피하지만 실패해서 만들다만 코드도 올려본다.

profile
기술블로그 시작

0개의 댓글