입을수 있는 옷들의 종류를 알아내면 된다. map을 사용하여 중복 종류의 옷들을 체크한다.
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes)
{
int answer = 1;
map<string, int> m;
for(auto c : clothes) m[c[1]]++;//중복되는 종류의 옷++
for(auto c : m) answer *= c.second + 1;
return answer-1;
}
공식 부분의 핵심을 예시로 들어보자.
모자 : 2개
상의 : 3개
하의 : 1개 일때총 입을수 있는 가지수는
(모자 2개 + 안쓰기) x (상의 3개 + 안입기) x (하의 1개 + 안입기)
=> 3 x 4 x 2 == 24가지이다.
이때 모든옷을 안입는 가지수는 빼주어야하기때문에 마지막에 -1 해준다.