[c++/프로그래머스] 할인 행사

조히·2023년 2월 23일
0

PS

목록 보기
29/82

문제 링크

할인 행사

풀이

map으로 푸는 문제

  1. 먼저 want에 있는 것들을 number에 맞춰 map에 넣는다.
  2. discount를 하루하루 10일 단위로 잘라 map에 넣어 갱신 한 후 check 함수로 wantMap에 있는 것이 m에도 있는지 확인한다.
    2-1. 사려는 게 할인 품목에 없거나, 수량이 안맞는다면 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;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글