[ハッシュ]レベル2(フィート.ケースの数)に偽装
7747 ワード
可以看到
問題の説明
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
顔が丸いメガネ、黒いサングラスに青いTシャツのジーンズコートロングコート
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
せいげんじょうけん
I/O例
clothesreturn[["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]]5[["crowmask", "face"], ["bluesunglasses", "face"], ["smoky_makeup", "face"]]3
I/O例説明
例1
headgearに対応した服装は黄色hat、緑turban、眼鏡に対応した服装は青サングラスで、以下の5つの組み合わせが可能です.
1. yellow_hat
2. blue_sunglasses
3. green_turban
4. yellow_hat + blue_sunglasses
5. green_turban + blue_sunglasses
例2Faceに対応した服装はcrow mask,blue sunglasse,mocky paskであり,以下の3つの組み合わせが可能である.
1. crow_mask
2. blue_sunglasses
3. smoky_makeup
に答える
これはすべての組合せの場合の数の問題です.
問題を見ると上着やズボン、靴など.誰もがきちんと着なければならないわけではない.
上着を着ないで、下着を着ないで、靴を履くしかありません.
そのため、上着、下衣、靴の場合、1枚は着用しません.
例えば、上着2枚、下着2枚、靴1足です.
(2+1)x(2+1)x(1+1).
でも着ない場合はないので、全体的には衣数で-1で大丈夫です.
コード1
function solution(clothes) {
var answer = 1;
var obj={};
for(var i=0;i<clothes.length;i++){
obj[clothes[i][1]] =0;
}
for(var i=0;i<clothes.length;i++){
obj[clothes[i][1]] += 1;
}
for(var key in obj){
answer *= obj[key]+1
}
return answer-1;
}
コード2
function solution(clothes) {
const map = {}
clothes.forEach((set) => {
map[set[1]] ? map[set[1]]++ : map[set[1]] = 1
})
const res = Object.values(map).reduce((res, n) => res * (n + 1), 1)
return res - 1
}
Reference
この問題について([ハッシュ]レベル2(フィート.ケースの数)に偽装), 我々は、より多くの情報をここで見つけました https://velog.io/@younoah/programmers-위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol