[プログラマー]ハッシュ-偽装
6627 ワード
プログラマー-偽装
問題の説明
スパイが持っている異なる服の組み合わせの数を返します
せいげんじょうけん
スパイが持っている服の数は1着以上30着以下.
すべての文字列の長さが1または20以下の自然数です.
すべての文字列は、アルファベット小文字または小文字のみで構成されます.
スパイは毎日少なくとも1枚の服を着ている.
問題を解く
服の種類を分けて地図を作る.△帽子と上着と下着の間に分かれている.
mapではkeyは服の種類、valueは種類の個数です.
各数+1の値に乗算します.
プラス1の理由は、この種類の服を選ばない場合も含めて!
結果的に1を外すと、何も着ないことを排除します.
コード#コード#
#include <string>
#include <vector>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map <string, int> Clothes;
vector<string> clothesKinds;
for(int i=0; i<clothes.size(); i++){
if(Clothes[clothes[i][1]] == 0){
Clothes[clothes[i][1]] = 1;
clothesKinds.push_back(clothes[i][1]);
}
else{
Clothes[clothes[i][1]]++;
}
}
map <string, int>::iterator iter;
for(iter=Clothes.begin(); iter!=Clothes.end(); iter++){
answer*=iter->second+1;
}
return answer-1;
}
時間の複雑さ
Θ(N)
解答時のコメントサイト
mapコンテナのクリーンアップと使用方法
vectorコンテナのクリーンアップと使用方法
Reference
この問題について([プログラマー]ハッシュ-偽装), 我々は、より多くの情報をここで見つけました https://velog.io/@emily0_0/프로그래머스-해시-위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol