Algorithm/Hash
[HASH] 의상
Maison
2024. 12. 17. 16:34
문제
코니는 하루에 최소 한 개의 의상은 입습니다.
코니가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.
접근
1) 종류별 구분 진행. -> 종류별 개수 도출 // map을 이용하여 종류변 개수 도출
2) 경우의 수 판단.
코드
#include <vector>
#include <unordered_map>
#include <string>
using namespace std;
int solution(vector<vector<string>> clothes)
{
unordered_map<string,int> type;
int num=0;
//1. 타입별 변수 수 계산
for(auto clothe : clothes)
{
type[clothe[1]]+=1;
}
//2. 총 계산.
//조합의 수 개념
for(auto clothe : type)
{
num*=(clothe.second+1);
}
return num-1;
}
추가로 알게 된 내용
1) 조합의 수 계산법
종류가 A,B가 존재하고
A가 2개, B가 1개 존재한다면 총 조합의 수는 다음과 같다.
옷을 입은 모든 경우의 수 : (A0,A1,A선택안함) * (B0,B선택안함) - 아무것도 안입은 경우
(2+1)*(1+1)-1= 5