https://school.programmers.co.kr/learn/courses/30/lessons/131127
사고하는 물품을 key, 개수를 value로 하여 map을 생성한다.
당일부터 10일 동안 할인하는 제품을 key, 개수를 value로 하여
map을 생성한다.만약 사고자하는 물품의 목록이랑 개수가 정확히 일치한다면
answer 값을 1 증가시킨다.
function solution(want, number, discount) {
function canSignUp(discountCount) {
for (let name of wantMap.keys()) {
if (!discountCount.has(name)) return false;
if (discountCount.get(name) !== wantMap.get(name)) return false;
}
return true;
}
let answer = 0;
let canSignUpDays = discount.length - 10 + 1;
let wantMap = want.reduce((res, item, i) => {
res.set(item, number[i]);
return res;
}, new Map());
for (let day = 0; day < canSignUpDays; day++) {
let itemNames = discount.slice(day, day + 10);
let discountCount = itemNames.reduce((res, item) => {
res.set(item, res.get(item) + 1 || 1);
return res;
}, new Map());
if (canSignUp(discountCount)) answer++;
}
return answer;
}