유블로그

[프로그래머스] 위장 본문

알고리즘

[프로그래머스] 위장

yujeong kang 2020. 12. 19. 13:07

프로그래머스 level 2 위장

 

소요시간 10~20분..? 기억이 잘 안 남 ㅎ

 

이건 처음에 어떻게 풀까 고민 좀 하는 시간이 푸는 시간보다 더 오래걸렸다.

그런데 그냥 조합 수학 공식으로 계산하면 될 것 같아서

먼저 분류별로 hashmap 을 써서 개수를 저장하고,

분류별 개수 +1 을 모두 곱한 후

모두 안 사용하는 경우 -1 해서

구했다!

 

public int solution(String[][] clothes) {
  Map<String, Integer> map = new HashMap<>();
  int N = clothes.length;
  String group;
  for (int i = 0; i < N; i++) {
    group = clothes[i][1];
    if(map.containsKey(group)) {
    	map.put(group, map.get(group)+1);
    }
    else {
    	map.put(group, 1);
    }
  }

  int answer = 1;
  for (int n : map.values()) {
  	answer *= n+1;
  }

  return answer-1;
}