[Programmers] 할인 행사(Lv.2)

Alice·2023년 6월 20일
0


풀이 소요시간 : 20분

구간을 뒤로 이동하며 Map 카운팅을 하는 문제였다. 구현은 금방했지만 인덱스 처리가 삐끗해서 시간을 조금 더 썼다. 전체 코드는 다음과 같다.

전체 코드

#include <string>
#include <vector>
#include <map>
using namespace std;

map<string, int> Map;
map<string, int> Discount_Map;


int solution(vector<string> want, vector<int> number, vector<string> discount) {
    
    int Day = 0;
    
    for(int i = 0; i < want.size(); i++)
    {
        Map[want[i]] = number[i];
    }
    //정현이가 원하는 품목 별 물품 갯수
    
    for(int i = 0; i < 10; i++)
    {
        Discount_Map[discount[i]]++;
    }
    //첫날 : 열흘간 마트 할인 품목 별 물품 갯수

    
    
    for(int i = 10; i <= discount.size(); i++)
    {   
        int Flag = true;

        for(string Item : want)
        {
            if(Map[Item] != Discount_Map[Item]) 
            {
                Flag = false;
                break;
            }
        }
        
        if(Flag == true)
        {
            Day++;
        }
        
        if(i == discount.size()) break;
        else
        {
            Discount_Map[discount[i - 10]]--;
            Discount_Map[discount[i]]++;
        }
        
    }
   
    
    
    return Day;
}
profile
SSAFY 11th

0개의 댓글