위장

_021119·2021년 4월 13일
0

알고리즘

목록 보기
6/9
import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 1;

        HashMap<String,Integer> map = new HashMap<>();

        for(String[] c : clothes){
            //map.put(c[1], map.getOrDefault(c[1],1)+1);
            if(map.get(c[1]) != null){

                map.put(c[1], map.get(c[1])+1);

            }else if(map.get(c[1]) == null){

                map.put(c[1], 2);
            }
        }

        for(String k : map.keySet()){
            answer = answer * map.get(k);
        }
        return answer -1 ;
    }
}

Hash의 getOrDefault(k,0) 함수를 사용해도 좋다.

map 안에 key값이 존재할 경우 value는 해당 key값에 대한 value를 반환하고,
map 안에 key값이 존재하지 않는 경우엔 두번째인자 값(0)을 반환한다.

key값이 map안에 존재하지 않을경우 map에 map.put(c[1], 2)를 넣어준다 
//결과 : {eyewear = 2, headgear = 3}

2를 넣어주는 이유는  clothes의 종류를 아예 입지 않았을 경우로 기본적으로 1이 셋팅이 되어 있다고 생각했다.
eyewear를 아예입지않았을 경우 (1) + eyewear를 map.put()할 경우(+1)

밑에 for문에서 answer =  answer * (map.get(k) +1) 로 해주어도 상관없을것같다.

return answer -1 을 해주는 이유는 의상 종류를 아예 아무것도 입지않은 경우(headgear도 안입고 eyewear도 안입고)는 없기때문에 -1을 해주었다.

profile
내가 정리하고 싶어서 쓰는 로오그

0개의 댓글