링크 : www.acmicpc.net/problem/9375
문제 풀이는 다음과 같다.
1. 맵을 활용해서 옷의 종류와 갯수를 저장한다.
2. 옷을 입는 방법을 계산하는 코드는 아래와 같다.
unordered_map<string,int>map;
int num = 0, ans = 1;
string cloth = "", category = "";
cin >> num;
for(int i=0; i<num; i++){
cin >> cloth >> category;
map[category]++;
}
for(auto i : map) ans *= i.second+1; // 해당 옷을 입지 않는 경우도 고려
ans-=1; // 아무것도 안입는 경우 제외
cout << ans << "\n";
옷의 갯수에 +1을 해서 곱해주는 이유는, 해당 옷을 입지 않는 경우도 고려해야하기 때문이다.
3. 마지막에 전체 합에 -1을 해준다. 이는 아무것도 안 입는 경우는 제외해야하기 때문이다.
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int tc = 0;
cin >> tc;
while(tc--){
unordered_map<string,int>map;
int num = 0, ans = 1;
string cloth = "", category = "";
cin >> num;
for(int i=0; i<num; i++){
cin >> cloth >> category;
map[category]++;
}
for(auto i : map) ans *= i.second+1; // 해당 옷을 입지 않는 경우도 고려
ans-=1; // 아무것도 안입는 경우 제외
cout << ans << "\n";
}
return 0;
}
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
#4949번 균형잡힌 세상 (C++) (0) | 2020.11.10 |
---|---|
#1676번 팩토리얼 0의 개수 (C++) (0) | 2020.11.09 |
#9012번 괄호 (C++) (0) | 2020.11.05 |
#11051번 이항 계수2 (C++) (0) | 2020.11.05 |
#3036번 링 (C++) (0) | 2020.11.03 |