각각의 물품에 대한 개수를 오브젝트화 시키고
시작 일수로부터 10일치에 세일 합을 오브젝트화 시켜서 반복했다.
크게 예외 케이스는 따로 없었다.
function solution(want, number, discount) {
var answer = 0;
const obj = {}
want.forEach((i,index)=>{
obj[i] = number[index]
})
const saleSum = (arr) =>{
let returnObj = {}
arr.forEach(i=>{
if(!returnObj[i]){
returnObj[i] = 0
}
returnObj[i] += 1
})
return returnObj
}
const keys = Object.keys(obj)
// 각각의 날을 기준으로 10일동안의 판매 하는 물품 개수의 합 구하기
for (let i=0; i<discount.length-9;i++){
const tenDays = discount.slice(i,i+10)
const tenObj = saleSum(tenDays)
// 모든 항목이 10일동안의 합보다 충분하면 +1
if(keys.every(j=>obj[j]<=tenObj[j])){
answer += 1
}
}
return answer;
}