12.偽装

2351 ワード

https://programmers.co.kr/learn/courses/30/lessons/42578?language=java
今まで解いた問題の中で一番煩わしい問題は1日で終わっていない問題は翌日10分で終わります.
コアクリエイティブ
1.服の種類別に何枚あるか
何も着ていない場合の水道水を追加!
1) HashMap<String, Integer> classification = new HashMap<String, Integer>(30);
  • の服の数は30着が最も多く、そのため、すべての服が異なる種類であっても、30着が
  • 着が最も多い.
    2)分類String[][服]
    for(int i=0;i<clothes.length;i++){
        //등록이 안된 종류일 경우 value를 2로 하여 등록
        if(!classification.containsKey(clothes[i][1])){
            classification.put(clothes[i][1], 2);
        }
        //등록이 된 경우는 value에 1 추가
        else {
            classification.put(clothes[i][1], classification.get(clothes[i][1])+1);
        }
    }
    2.すべての種類の服を1枚ずつ着るときの数、そして何も着ていない場合の数1を抜きます.
    1)服が1つしかない場合は、服の数を返します.
    if(classification.size()==1) {
        return clothes.length;
    } 
    2)タイプが2個より大きい
    //분류햇을 때 종류가 두가지 이상인 경우
    int sum = 1;
    for(String s : classification.keySet()){
        sum *= classification.get(s);
    }
    return sum-1;
    プログラマ最終コード
    import java.util.*;
    class Solution {
        HashMap<String, Integer> classification = new HashMap<String, Integer>(60);
        public int solution(String[][] clothes) {
            for(int i=0;i<clothes.length;i++){
                if(!classification.containsKey(clothes[i][1])){
                    classification.put(clothes[i][1], 2);
                } else {
                    classification.put(clothes[i][1], classification.get(clothes[i][1])+1);
                }
            }
            if(classification.size()==1) {
                return clothes.length;
            }
            else {
                int sum = 1;
                for(String s : classification.keySet()){
                    sum *= classification.get(s);
                }
                return sum-1;
            }
        }
    }