알고리즘/문자열
[C++] 백준 9375번 패션왕 신해빈
키베이루
2022. 12. 29. 15:34
1) 문제설명
2) 아이디어
앞에있는 의상의 이름은 고려할 필요없이 뒤에있는 의상의 종류만 고려하면 된다. -> MAP을 사용
첫번째 예제의 경우
(hat), (turban), (sunglasses), (hat,sunglasses), (turban, sunglasses)으로 5개
headgear, headgear, X(아무것도 입지 않음)
eyewear, X
로 경우의수를 계산하여 3 * 2 = 6에 아무것도 입지않았을때 (X,X)를 빼버리면 된다. 6 - 1 = 5
두번째 예제의 경우
(mask), (sunglasses), (makeup)으로 3개
FACE, FACE, FACE, X
X
4 * 1 = 4에 (X,X)일때를 빼면 4 - 1 = 3
3) 코드
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
#include<map>
#include<string>
using namespace std;
map<string, int> mp;
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int n;
cin >> n;
for (int j = 0; j < n; j++) {
string name, kinds;
cin >> name >> kinds;
mp[kinds]++;
}
int temp;
int mul = 1;
for (auto i = mp.begin(); i != mp.end(); i++) {
//cout << i->second << endl;
temp = i->second + 1;
mul = mul * temp;
}
mp.clear();
cout << mul - 1 << endl;
}
}