Loading...
본문 바로가기
👥
총 방문자
📖
0개 이상
총 포스팅
🧑
오늘 방문자 수
📅
0일째
블로그 운영

여러분의 방문을 환영해요! 🎉

다양한 개발 지식을 쉽고 재미있게 알려드리는 블로그가 될게요. 함께 성장해요! 😊

PS/프로그래머스

[프로그래머스][슬라이딩 윈도우] 할인 행사

by 꽁이꽁설꽁돌 2025. 10. 27.
728x90
반응형
     
목차

     

     

    문제

    https://school.programmers.co.kr/learn/courses/30/lessons/131127#

     

    프로그래머스

    SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

    programmers.co.kr

     

     

    문제 구현 방향

    각 아이템을 map을 통해 개수별로 저장하고

    10개씩 슬라이딩 윈도우로 비교해주면 간단하게 풀리는 문제이다.

     

     

    코드 구현

    function solution(want, number, discount) {
        var answer = 0;
        let m = new Map();
        let wants = new Map();
        for (let i = 0; i < want.length; i++) {
            let num = number[i];
            let value = want[i];
            wants.set(value, num+ (wants.get(value) || 0));
        }
        function isSatisfy(wants, m) {
            let flag = true;
            for (let [key, value] of wants) {
                if ((m.get(key) || 0) < value) {
                    flag = false;
                    break;
                }
            }
            return flag;
        }
    
        for (let i = 0; i < 10; i++) {
            let dc = discount[i];
            m.set(dc, (m.get(dc) || 0) + 1);
        }
        
        let day = 0;
        for (let i=0; i <= discount.length - 10; i++) {
             if (isSatisfy(wants, m)) day++;
            
            let dis = discount[i];
            let plus = discount[i + 10];
            m.set(dis, (m.get(dis) || 0) - 1);
            m.set(plus, (m.get(plus) || 0)  + 1);
            
        }
        return day;
    }
    반응형