map
으로 푸는 문제
want
에 있는 것들을 number
에 맞춰 map
에 넣는다.discount
를 하루하루 10일 단위로 잘라 map
에 넣어 갱신 한 후 check
함수로 wantMap
에 있는 것이 m
에도 있는지 확인한다.false
를 리턴 후,true
일 경우에만 answer++
를 해준다.#include <string>
#include <vector>
#include <map>
using namespace std;
map<string,int> wantMap;
bool check(map<string,int> m)
{
for(auto u:wantMap)
{
if(m.find(u.first)==m.end()) // 사려는게 할인 품목에 없다면
{
return false;
}
else if(m[u.first]!=u.second) // 사려는 수량만큼 할인 품목에 없다면
{
return false;
}
}
return true;
}
int solution(vector<string> want, vector<int> number, vector<string> discount) {
int answer = 0;
for(int i=0;i<want.size();i++)
{
wantMap[want[i]] = number[i];
}
for(int i=0;i<=discount.size()-10;i++)
{
map<string, int> m;
for(int j=i;j<i+10;j++)
{
m[discount[j]]++;
}
answer+=check(m);
m.clear();
}
return answer;
}