[プログラマー]偽装


📒コンセプトの使用

  • ハッシュ-正しいハッシュ概念は使用されていませんが、Mapに入れるために使用されます.
  • Map
  • 📌問題の説明


    スパイたちは毎日違う服を着て自分を偽装している.
    例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
    スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
    せいげんじょうけん
  • 服装の各行は「服装名、服装種類」からなる.
  • スパイが持っている服の数は1着以上30着以下.
  • のような名前の服は存在しません.
  • アパレルのすべての要素は文字列から構成されています.
  • すべての文字列の長さは、1または20未満の自然数であり、アルファベット小文字または「」のみから構成されます.
  • スパイは毎日少なくとも1枚の服を着ている.
  • 📌インプリメンテーション

    #include <string>
    #include <vector>
    #include <map>
    
    using namespace std;
    
    int solution(vector<vector<string>> clothes) {
        int answer = 1;
        //옷의 종류에 따른 개수를 저장하는 map
        map<string, int> closet;
        
        for(auto itr : clothes){
        	//옷의 종류에 따른 개수 저장
            closet[itr[1]]++;
        }
        
        for(auto itr : closet){
        	//경우의 수 계산 공식
            answer*=(itr.second+1);
        }
        
        //옷을 입지 않는 경우 제외
        answer-=1;
        
        return answer;
    }
    実施の際、重要なのは服の名前が問題を解決する重要な情報ではないことだ.どの服に何枚の服があるかさえ分かれば、問題を解くことができます.
    最終的には、状況の数に(服1着あたりの数+1)を乗じ、最後に服を着ない場合を除く.

    📌注意点

  • 題では、服の名前に惑わされると、問題を解くのが難しい.
  • Mapを用いて衣類の個数を格納する.