Problem
옷의 종류와 이름이 주어지면 스파이들이 입을 수 있는 옷의 조합의 수를 구하는 문제입니다.
스파이들은 하루에 같은 종류의 옷은 하나밖에 입을 수 없고 다른 종류는 최소 한개만 입으면 됩니다.
Solution
모든 조합을 구하는 문제입니다.
리스트를 구하는 문제가 아니라 총 조합의 수를 구하는 문제이기 때문에 비교적 쉽게 구할 수 있습니다.
옷의 종류는 하루에 하나씩이기 때문에 입는 경우, 입지 않는 경우 이렇게 두개로 분류하면 됩니다.
문제에 나와있는 예제를 보면 얼굴 종류에는 동그란 안경, 검정 선글라스 이렇게 있습니다.
그럼 총 세개의 경우가 나옵니다.
- 아무것도 선택하지 않음
- 동그란 안경 선택
- 검정 선글라스 선택
그리고 상의는
- 아무것도 선택하지 않음
- 파란색 티셔츠 선택
그리고 하의는
. . .
이런 식으로 모든 종류에 대해서 모든 경우를 구하면 됩니다.
스파이는 반드시 하나의 종류는 걸쳐야 하므로 전부 아무것도 선택하지 않는 경우만 빼주면 됩니다.
식은 (각 종류 + 1) 의 곱 - 1
이 됩니다.
Java Code
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
HashMap<String, Integer> map = new HashMap<>();
for (String[] cloth : clothes) {
map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1);
}
int result = 1;
for (String key : map.keySet()) {
result *= map.get(key) + 1;
}
return result - 1;
}
}
'알고리즘 문제 > Programmers' 카테고리의 다른 글
[프로그래머스] 2019 카카오 겨울인턴. 크레인 인형뽑기 게임 (Java) (0) | 2020.05.12 |
---|---|
[프로그래머스] 체육복 (Java) (1) | 2020.03.27 |
[프로그래머스] 전화번호 목록 (Java) (0) | 2019.11.26 |
[프로그래머스] 완주하지 못한 선수 (Java) (0) | 2019.11.26 |
2018 KAKAO BLIND 캐시 (Java) (0) | 2019.09.06 |