[baekjoon/c++] 패션왕 신해빈 - 9375 : 수식
제출코드
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <map>
using namespace std;
map<string,int> clothesMap;
void clothes(int N){
for (int i = 0; i < N; i++)
{
/* code */
string s1,s2;
cin >> s1 >> s2;
clothesMap[s2]++;
}
int answer = 1;
for (const auto& m: clothesMap){
// cout << m.first << " " << m.second << "\n";
answer *= (m.second + 1);
}
cout << answer-1 << "\n";
//초기화
clothesMap.clear();
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
freopen("input.txt", "r", stdin);
int T,N;
cin >> T;
for (int i = 0; i < T; i++)
{
/* code */
cin >> N;
clothes(N);
}
return 0;
}
풀이 과정
문자열을 입력받지만, 결국 중요한건 부위별로 몇개의 옷을 가지고 있는지가 중요하다. 한 부위를 중복해서 착용을 하면 안되기에 조합론을 생각해볼 수 있다.
각 부위에서 선택할 수 있는 옷가지 (안 입는 경우를 포함하기에 +1) 들을 각각 모두 곱해주면 모든 경우의 수를 구할 수 있겠다.
다만, 문제에서 발가벗은 경우를 제외하라 하였으니 마지막 답에서 1을 제외하여 문제를 해결하였다.