풀이 소요시간 : 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;
}