lottos | win_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
구매한 로또 번호 : 44, 1, 0, 0, 31 25
당첨 로또 번호 : 31, 10, 45, 1, 6, 19
1,31 2개 일치.
알아볼수 없는 2개의 번호(0,0)를 각각 10,6이라고 가정하면 3등(4개 일치)까지 당첨 가능.
11,7이라고 가정하면 5등(2개 일치)까지 당첨 가능
return [3,5]
[45, 4, 35, 20, 3, 9]
[20, 9, 3, 45, 4, 35]
-> 45,4,35,20,3,9 다 일치 (1등)
for문:
lottos[i]와 win_nums[j]를 비교. 같으면 sameCnt++;
lottos[i]===0 이면 zeroCnt++;
function calRank(sameCnt)
rank = 7-sameCnt
if(rank<5) return rank
else return 6
if(zeroCnt===0)이면 rank = calRank(sameCnt)
return [rank, rank];
else 이면
minRank=calRank(sameCnt);
maxRank=calRank(sameCnt+zeroCnt);
return [minRank, maxRank]
function solution(lottos, win_nums) {
var answer = [];
let zeroCnt = 0, sameCnt = 0;
for(let i=0; i<lottos.length; i++){
let curNum = lottos[i];
if(curNum===0){
zeroCnt++;
continue;
}
for(let j=0; j<win_nums.length; j++){
if(curNum === win_nums[j]) sameCnt++;
}
}
if(zeroCnt === 0){
let rank = calRank(sameCnt);
answer = [rank, rank];
}
else {
let lowRank = calRank(sameCnt);
let highRank = calRank(sameCnt+zeroCnt);
answer = [highRank, lowRank];
}
return answer;
}
function calRank(sameCnt){
let rank = 7 - sameCnt;
return rank < 6 ? rank : 6;
}
N: lottos.length, win_nums.lenght(문제에서는 6)
O(N^2)
크기가 6인 lottos 배열과 win_nums 배열을 for문 2개로 돌기 때문에 시간복잡도는 위와 같다.
O(1)
answer 배열은 [highRank, lowRank] 형태로 크기가 2로 고정된 배열이기 때문에 공간복잡도 O(1)