My Solution / Try
function solution(lottos, win_nums) {
let count = 0
let zeroCnt = 0
//당첨 번호 배열 반복문을 돌며 내 번호가 있다면 count++
//0의 개수만큼 zeroCnt++
for (let i = 0 ; i < win_nums.length; i++) {
if (lottos.includes(win_nums[i])) {
count++
}
if (lottos[i] === 0) {
zeroCnt++
}
}
//객체를 활용해 맞춘 개수를 키로, 순위를 벨류로 지정
let obj = {
0 : 6,
1 : 6,
2 : 5,
3 : 4,
4 : 3,
5 : 2,
6 : 1
}
let countPlus = (count + zeroCnt);
let countStr = (count)
return [obj[countPlus],obj[countStr]];
}
Advanced Solution
- 이중 반복문보다 reduce 메서드를 활용하여 코드를 이전보다 간결하게 작성
- 객체의 키/밸류 활용보다 배열의 인덱스값 활용하여 가독성을 높임
function solution(lottos = [], win_nums = []) {
//인덱스 값이 곧 순위
const rank = [6, 6, 5, 4, 3, 2, 1]
let [max, min] = lottos.reduce(([max, min], cur) => win_nums.includes(cur)? [++max, ++min] : (cur === 0 ? [++max, min] : [max, min]), [0, 0])
return [rank[max], rank[min]];
};
'Programming' 카테고리의 다른 글
[WIL] week1 회고 (0) | 2023.06.26 |
---|---|
[알고리즘] 프로그래머스 두 개 뽑아서 더하기 (0) | 2023.06.26 |
[TIL] 자료구조 Map, Set (0) | 2023.06.26 |
[TIL] 숫자야구게임 (0) | 2023.06.26 |
[JS] 호이스팅(Hoisting) (3) | 2023.06.26 |