문제
접근
의상의 종류들의 조합을 구해야한다.
딕셔너리를 사용하여 종류별로 카운트를 해주고, 조합을 구한다.
알몸으로 다닐 수는 없으니, 전체 조합에서 공집합을 빼준다.
코드
- 파이썬 코드
1
2
3
4
5
6
7
8
9
10
def solution(clothes):
answer = 1
dic = {}
for clothe in clothes:
dic[clothe[1]] = dic.get(clothe[1], 0) + 1
for value in dic.values():
answer *= (value+1)
answer -= 1
return answer
- C++ 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
map<string, int> m;
int answer = 1;
for(int i = 0; i<clothes.size();i++){
m[clothes[i][1]]++;
}
for(auto i = m.begin(); i != m.end(); i++){
answer *= ((i->second) + 1);
}
answer--;
return answer;
}