1. 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/42578
2. 풀이
- 간단하게 얼굴, 상의, 하의, 겉옷을 입는 경우의 수를 구하는 문제이다.
- 이를 위해 HashMap<String, Integer> hm 을 아래와 같이 구성했다.
- Key : 옷의 종류 / Value : 옷의 수
- 옷의 수를 count 하기 위해 getOrDefualt 메소드를 사용했다.
- hm에서 value를 꺼낼 때 아예 안 입는 경우까지 고려하여 value에 1을 더하여 경우의 수를 구한다.
- 경우의 수 = 얼굴 수 X 상의 수 X 하의 수 X 겉옷 수 - 1 (아무것도 안 입는 경우)
3. 코드
import java.util.HashMap;
public class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> hm = new HashMap<>();
for (int i = 0; i < clothes.length; i++) {
hm.put(clothes[i][1], hm.getOrDefault(clothes[i][1], 0) + 1);
}
for (String key : hm.keySet()) {
answer *= hm.get(key) + 1;
}
--answer;
return answer;
}
}
4. 채점 결과
5. 느낀 점
- 경우의 수를 구하는 간단한 문제였다.
- HashMap의 getOrDefault(key, key에 매핑된 value가 없는 경우) 는 자주 사용하게 된다.
- key에 매핑된 value가 있는 경우는 value를 가져온다.
- 없는 경우에는, default 값으로 설정된 값을 가져온다.