[プログラマー高得点Kit]ハッシュ偽装(level 2)
問題を解く
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
[制限]
[IO例説明]
例1
headgearに対応した服装は黄色hat、緑turban、眼鏡に対応した服装は青サングラスで、以下の5つの組み合わせが可能です.
例2
Faceに対応した服装はcrow mask,blue sunglasse,mocky paskであり,以下の3つの組み合わせが可能である.
問題を解く
コード#コード#
function solution(clothes) {
let answer=0;
let map=new Map();
for(let i=0; i<clothes.length; i++){
if(map.has(clothes[i][1])) map.set(clothes[i][1], map.get(clothes[i][1])+1);
else map.set(clothes[i][1], 1);
}
let tmp=1;
for(let [key, val] of map){
tmp*=(val+1);
}
answer=tmp-1;
return answer;
}
組み合わせをよく考えなければならない.トップス2枚、ボトムス1枚と言うのであれば、トップス21枚とボトムス1枚ずつ着なければなりません.しかし、この問題においても、上着または下衣のうち1つしかない場合を考慮し、(2+1)(1+1)=6のうち、2つとも入らない場合はないので、6-1とする.リファレンス
https://im-developer.tistory.com/128
Reference
この問題について([プログラマー高得点Kit]ハッシュ偽装(level 2)), 我々は、より多くの情報をここで見つけました https://velog.io/@rladpwl0512/위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol