공부/알고리즘

프로그래머스 위장 c++ solution

토고미 2021. 9. 5. 22:31
#include <string>
#include <vector>
#include <map>
#include <iostream>

using namespace std;

int solution(vector<vector<string>> clothes) {
    map<string, int> M;
    
    for(auto cloth : clothes)
        M[cloth[1]]++;
    
    int answer=1;
    for(auto m : M)
        answer *= (m.second+1);
    
    return answer-1;
    
}

A,B 두 가지 종류의 의상이 있을 때 경우의

= A 종류의 의상을 입을 수 있는 가짓수 * B 종류의 의상을 입을 수 있는 가짓수

= ( A 종류의 의상 갯수 + 1 ) * ( B 종류의 의상 갯수 + 1 ) - ( 모두 안 입는 한 가지 경우 )

= ( A + 1 ) * ( B + 1 ) - 1