1. 문제
2. 접근
이 문제랑 매우 비슷한 백준의 '패션왕 신혜빈' 문제랑 매우 비슷해서 그때의 기억을 복기하면서 접근했다.
각 옷의 종류마다 크게 2가지를 선택할 수 있다. 해당 종류의 의상을선택하지 않거나 의상 중 하나를 고르는 것이다.
예제 1를 봤을 때 headear는 2개, eyewear는 1개의 의상이 있다. 이때 headear에서는 아예 선택하지 않거나, yellow_hat을 선택하거나 green-tuban을 선택할 수 있는 경우로 총 3가지가 있다. 같은 옷의 종류는 무조건 하나 이하만 선택할 수 있기 때문이다.
이를 일반화 시키면 i 종류에서 선택할 수 있는 경우 = i 종류의 의상 개수 +1(선택 안하는 경우) 이다. 모든 경우의 수를 구하기 위해 종류마다 경우의 수를 구한 후 곱하면 모든 경우의 수를 구할 수 있다. 다만 모든 의상을 선택하지 않았을 떄 경우의 수도 있기 때문에 마지막에 1를 빼준다.
3. 코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
// 해쉬 맵으로 <종류, 카운트> 받기
HashMap <String ,Integer> map = new HashMap();
int result = 1;
for(int i=0; i< clothes.length; i++)
map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0)+1);
Iterator<Integer> iterator = map.values().iterator();
while(iterator.hasNext()){
result *= (iterator.next()+1);
}
// 아무것도 안 입었을 때 제외
return result-1;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 정렬 : K번째 수 (1) | 2024.01.10 |
---|---|
[프로그래머스] Hash : 베스트 앨범 - L3 (1) | 2024.01.10 |
[프로그래머스] 전화번호 목록 : Hash - L2 (1) | 2024.01.04 |
[프로그래머스] 폰켓몬 : Hash - L1 (1) | 2024.01.03 |
[프로그래머스] 완주하지 못한 선수 : Hash (L1) (3) | 2024.01.03 |