문제 풀이/BOJ 문제 풀이
[BOJ알고리즘, C++]#9375_패션왕 신해빈, um, 경우의 수
Hardii2
2024. 3. 7. 11:50
#1. 문제
9375번: 패션왕 신해빈
첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
www.acmicpc.net
#2. 풀이
1. unordered_map 컨테이너
[Basic C++] #72_unordered_map
#1. 개념 1. unordered_map [정의] : unordered_map은 C++ STL에서 제공하는 연관 컨테이너입니다. [특징] : unordered_map은 key와 value를 쌍으로 해시 자료구조에 저장합니다. [map과 차이점] : unordered_map은 내부적
webddevys.tistory.com
um 컨테이너는 C++ 표준라이브러리에서 제공하는 연관 컨테이너입니다. um 컨테이너는 키와 값을 한 쌍으로 해시 자료구조에 저장합니다.
2. 한 의상 종류 당 경우의 수는 개수+1입니다.
- 먼저, 각 의상 종류를 Key로, 그 개수를 값으로 선언하고, 입력을 받습니다.
- 그리고, um 컨테이너를 반복자를 활용하여 순회하며 각 의상 종류에 해당되는 의상 개수+1을 곱해주어 최종 값을 얻고, 이 값에서 '모든 의상을 입지 않은 상태'의 경우 한 개를 빼주어 결과를 출력합니다.
#3. 코드
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;
int T;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> T;
while (T--)
{
int N;
cin >> N;
unordered_map<string, int> um;
while (N--)
{
string name, type;
cin >> name >> type;
um[type]++;
}
int ans = 1;
for (auto it = begin(um); it != end(um); ++it)
{
ans *= (it->second + 1);
}
cout << ans - 1 << '\n';
}
return 0;
}