프로그래머스에서 문제 보기
My Solution / Try
function solution(lottos, win_nums) {
let count = 0
let zeroCnt = 0
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]];
};