(상의의 개수 + 상의를 안 입은 개수(1) ) * (하의의 개수 + 하의를 안 입은 개수(1) ) .... 등을 하고 마지막에 모두 안 입은 개수(1) 을 빼주면 된다.
map을 써서 쉽게 풀 수가 있다.
map에서 해당 종류에 몇개의 옷이 있는지 key value 값으로 나타내주고 모든 종류를 + 1 해주면서 곱하고 마지막에 1을 빼주자.
[코드]
#include <string>
#include <vector>
#include <iostream>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 0;
map<string, int> apparel; //map을 사용해서 앞에 종류를 저장하고 뒤에 해당 종류의 갯수를 저장.
for(int i = 0;i<clothes.size();i++){ //반복문 사용
apparel[clothes[i][1]]++;
}
int count = 1;
for(auto iter = apparel.begin();iter != apparel.end();iter++){ //모든 종류 반복
//모든 경우는 옷의 개수 + 옷을 안입었을때를 더한 값을 곱한결과이다.
//여기서 마지막에 모든 종류의 옷이 없을때의 경우인 1을 제거해주면 답이 나온다.
count *= iter->second+1;
}
answer += count - 1;
return answer;
}