할인 행사

강인호·2024년 5월 8일
0

알고리즘 문제풀이

목록 보기
38/43

각각의 물품에 대한 개수를 오브젝트화 시키고
시작 일수로부터 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;
}

0개의 댓글