로또 번호를 만드는데 lottos에 있는 번호가 win_nums에 얼마나 포함되는지 아래의 표를 보고
계산하고
순위 | 당첨 | 내용 |
---|---|---|
1 | 6개 | 번호가 모두 일치 |
2 | 5개 | 번호가 일치 |
3 | 4개 | 번호가 일치 |
4 | 3개 | 번호가 일치 |
5 | 2개 | 번호가 일치 |
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>
창피하지만 실패해서 만들다만 코드도 올려본다.