に見せかける
問題の説明
スパイたちは毎日違う服を着て自分を偽装している.
例えば、スパイの服が以下のように、今日スパイが丸い眼鏡、長いコート、青いTシャツを着ている場合は、翌日はジーンズを追加したり、黒いサングラスをかけたりして、丸い眼鏡ではありません.
顔が丸いメガネ、黒いサングラスに青いTシャツのジーンズコートロングコート
スパイが持っている服に二次元配列の服が与えられた場合、異なる服の組み合わせの数を返すために解関数を作成します.
せいげんじょうけん
I/O例
clothesreturn[[yellow_hat, headgear], [blue_sunglasses, eyewear], [green_turban, headgear]]5[[crow_mask, face], [blue_sunglasses, face], [smoky_makeup, face]]3
I/O例説明
headgearに対応した服装は黄色hat、緑turban、眼鏡に対応した服装は青サングラスで、以下の5つの組み合わせが可能です.
1. yellow_hat
2. blue_sunglasses
3. green_turban
4. yellow_hat + blue_sunglasses
5. green_turban + blue_sunglasses
Faceに対応した服装はcrow mask,blue sunglasse,mocky paskであり,以下の3つの組み合わせが可能である.
1. crow_mask
2. blue_sunglasses
3. smoky_makeup
👤 私の答え
function solution(clothes) {
let category = clothes.reduce((a,c) => {
a[c[1]] = (a[c[1]]) ? a[c[1]] + 1 : 1;
return a
},{})
let item = Object.values(category);
if(item.length === 1) item[0] // 종류가 모두 같을 경우.
let result = 1;
item.map(a => result *= (a+1)) // 경우의 수
return result - 1; // 아무 것도 입지 않은 경우는 존재하지 않으므로 -1 해준다.
}
console.log(solution([['yellow_hat', 'headgear'], ['blue_sunglasses', 'eyewear'], ['green_turban', 'headgear']]));
解答方法
鍵で服装の種類を整理して、数えました.
{headgear:2,eyewear:1}
最初はどのように使うか分からなかったのですが、後で利用状況の数を発見すればいいのです.
したがってcategoryはvalue(
[2,1]
)の値しか与えられなかったが、所望の答えは与えられなかった.2 x 1 = 3 (..?)
すべての服を一度に着るわけではありません.
1. yellow_hat
2. blue_sunglasses
3. green_turban
그렇기 때문에
(2+1) x (1+1) = 6
何が境遇の義秀ですか。
reduceの使用
code playgroundを参照してアルゴリズムを解いた.
Reference
この問題について(に見せかける), 我々は、より多くの情報をここで見つけました https://velog.io/@gay0ung/위장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol