[프로그래머스] 42578. 해시
문제 링크
풀이 과정
[백준] 9375. 패션왕 신해빈 과 같은 문제입니다.
headgear : yellow_hat, green_turban
eyewear : blue_sunglasses
위와 같은 의상이 있을 경우, 고르지 않는 경우도 포함시켜서 선택을 하게 되면 아래와 같은 경우의 수가 나옵니다. 최소 한 개의 의상은 입어야 하므로, 각각의 의상 종류를 하나도 선택하지 않는 한 가지의 경우를 빼면 정답이 됩니다.
headgear에서 한 가지를 고르는 경우 → 3C1 = 3
eyewear에서 한 가지를 고르는 경우 → 2C1 = 2
아무것도 고르지 않는 경우 → 1
3C1 * 2C1 - 1 = 5가지의 경우의 수가 나옵니다.
코드
import java.util.HashMap;
import java.util.Map;
public class Main {
public static int solution(String[][] clothes) {
int answer = 1;
Map<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
String key = clothes[i][1];
if (hashMap.containsKey(key))
hashMap.put(key, hashMap.get(key) + 1);
else
hashMap.put(key, 1);
}
for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
answer *= entry.getValue() + 1;
}
return answer - 1;
}
public static void main(String[] args) {
String[][] clothes = {{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}};
System.out.println(solution(clothes));
}
}
댓글남기기