💡 문제

🧑🏻💻 풀이
import java.util.HashMap;
import java.util.Map;
public class Solution {
public int solution(String[][] clothes){
int answer = 1;
Map<String, Integer> map = new HashMap<String, Integer>();
for(String[] cloth : clothes){
map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1);
}
for (Integer value : map.values()){
answer = answer * (value + 1);
}
return answer-1;
}
}
- 각 의상의 종류의 개수만큼 경우의 수가 달라지므로 종류의 개수와 각 종류마다 몇 개의 의상이 존재하는지 구하는지가 중요했다.
- Map 을 활용하여 <의상의 종류, 개수> 와 같이 HashMap을 만들고 반복문을 통해 각 개수끼리 곱한 후 결과 값을 반환하였다.
- 마지막에 모든 옷을 안 입는 경우의 수도 있기 때문에 -1을 추가로 해준다.
getOrDefault 를 활용했다. getOrDefault(값, 0) 값이 존재하지 않으면 0으로 초기화 한다. 존재한다면 현재 값을 유지한다. 이 후 +1을 하여 개수를 최신화 해준다.
어려웠던 부분
- 2차원 배열에서
String[] 과 같이 반복문을 통해 불러오면 1차원 배열로 순차적으로 접근하게 된다.
HashMap 에 대해 인지하고 있었지만 문제에 활용하기까지 떠오르지 않았다. 추가로 사용해 봐야겠다.