[Programmers 알고리즘][77484] 로또의 최고 순위와 최저 순위
2021. 5. 1. 18:22ㆍAlgorithm
반응형
문제 설명
level 1
2021 Dev-Matching: 웹 백엔드 개발자(상반기)
구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.
- 알아볼 수 없는 번호를 0으로 표기합니다.
- 순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다.
순위당첨 내용
1 | 6개 번호가 모두 일치 |
2 | 5개 번호가 일치 |
3 | 4개 번호가 일치 |
4 | 3개 번호가 일치 |
5 | 2개 번호가 일치 |
6(낙첨) | 그 외 |
제한사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
입출력 예
lotto | swin_nums | result |
[44, 1, 0, 0, 31, 25] | [31, 10, 45, 1, 6, 19] | [3, 5] |
[0, 0, 0, 0, 0, 0] | [38, 19, 20, 40, 15, 25] | [1, 6] |
[45, 4, 35, 20, 3, 9] | [20, 9, 3, 45, 4, 35] | [1, 1] |
문제 풀이
- 최고 순위(= 0 값이 모두 일치) : 일치하는 번호 수 + 0의 개수
- 최저 순위(= 0 값이 모두 불일치) : 일치하는 번호 수
Check Point
딱히 없지만.... 굳이 뽑자면...
번호 일치 여부는 순서와 상관 없다.
Code
function solution(lottos, win_nums) {
let zeroCnt = 0;
let correct = 0;
lottos.forEach((num, i) => {
if(num === 0) zeroCnt++;
else {
const idx = win_nums.indexOf(num);
if (idx >= 0) {
correct++;
}
}
});
let best = Math.min(7 - (correct + zeroCnt), 6);
let worst = Math.min(7 - correct, 6);
return [best, worst];
}
반응형