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