Programming/프로그래머스
[프로그래머스 / 해시] 위장 (java)
쬬앤
2020. 3. 27. 14:48
초기값 answer을 1로 해주어야 한다는 것을 주의하자.
[문제접근]
옷 개수에 따라 경우의 수를 구해야 한다. -> 옷 종류에 따른 개수에 따라 hash map을 구성한다.
경우의 수를 구하는 공식을 구한다.
- 각 종류의 옷에 안입는 선택지를 하나 추가 (옷 개수 + 1)
- 하나도 안입는 선택지는 없으므로 전체에서 -1
따라서 공식은 (n+1) * (m+1) *... -1
[코드]
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map<String, Integer> closet = new HashMap<>();
int val = 0;
for(String[] clo : clothes){
if(closet.get(clo[1]) == null)
closet.put(clo[1], 1);
else{
val = closet.get(clo[1]) + 1;
closet.put(clo[1], val);
}
}
// 각 종류의 옷에 안입는 선택지를 하나 추가 (+1)
// 하나도 안입는 선택지는 없으므로 전체에서 -1
for(String key: closet.keySet()){
answer *= (closet.get(key) + 1);
}
answer -=1;
return answer;
}
}