に見せかける


質問する



もんだいぶんせき


これは組み合わせの数を見る問題のようだ.順序は重要ではありません.重要なのは、どの種類を縛るかです.

に答える


亥時


同じカテゴリをバンドルするため、ハッシュ・テーブルを使用する必要があります.(key,value)からなる対をそれぞれ(String ,Integer)(카테고리, 나온수)に組み合わせる.
import java.util.HashMap; HashMap<String,Integer> hashmap = new HashMap<>();

方法
hashmap.put(key,value) //(해당key존재X)삽입,(해당Key존재)갱신
hashmap.containsKey(key) //해시맵에 key존재 여부
hashmap.get(key) //value 반환

コンビネーション数


それぞれの服は単独で使用することができ、裸で帽子だけをかぶることもできるので、組み合わせるときも単独で使用することを考慮しなければなりません.
1からではなく2から開始すれば、単独で使用する場合も考えられる.
for(int i=0;i<clothes.length;i++){ if(hashmap.containsKey(服[i][1])/既存のタイプ hashmap.put(clothes[i][1], hashmap.get(clothes[i][1])+1); // 1個追加 else hashmap.put(clothes[i][1],2); //2単独で追加できます。 }

すでに衣類のカテゴリが存在する場合は、出現した個数を持って、1を追加し、更新します.
逆に、初めて出現するカテゴリであれば、clothes[i][1]ではなく1に追加されます.

コンビネーション数


while(iter.hasNext()){ answer *= iter.next(); } return answer - 1;

海図に存在する値を読み込み、乗算します.
例:
(A,H),(B,H),(C,K),(D,L)
Hクラスは2つ、Kクラスは1つ、Lクラスは1つあるので、それぞれ
H 1 2
K 1
L 1
そうですか.単独で使う場合も考えます.
H 0 1 2
K 0 1
L 0 1
0を単独で使用する場合は、1から他のタイプと組み合わせることができます.
1. A
2. B
3. C
4. D
5. A+C
6. A+D
7. B+C
8. B+D
9. C+D
10. A+C+D
11. B+C+D
2を組み合わせることができる.

コード#コード#

import java.util.HashMap;
import java.util.Iterator;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;
        HashMap<String,Integer> hashmap = new HashMap<String,Integer>();
        
        for(int i=0;i<clothes.length;i++){
            if(hashmap.containsKey(clothes[i][1])) //이미 있는 종류
                hashmap.put(clothes[i][1], hashmap.get(clothes[i][1])+1); // 1개 추가
            else
                hashmap.put(clothes[i][1],2); //2추가, 단독 가능 하므로
        }
        
        Iterator<Integer> iter = hashmap.values().iterator();
        while(iter.hasNext()){
            answer *= iter.next(); //수학적 접근 필요, 카테션 곱
        }
        return answer - 1;
    }
}