문제
https://school.programmers.co.kr/learn/courses/30/lessons/42578
문제 접근
- 해시맵을 사용하는 문제이지만 기본적으론 경우의 수를 구하는 문제이다.
- 만약 얼굴을 동그란 안경, 검정 선글라스로 상의를 파란색 티셔츠, 하의를 청바지, 겉옷을 긴 코트로 한다면 해당 부위를 입지 않는 경우의 수까지 포함하여 곱의 경우의 수를 계산해야 한다.
- 그렇다면 동그란 안경 - 파란색 티셔츠 - 청바지 - 겉옷, 동그란 안경 - 파란색 티셔츠 - 없음 - 겉옷 등으로 경우의 수들이 나타나는데 문제의 제약조건에서 최소한 하나의 옷은 입기 때문에 모든 옷을 입지 않는다는 경우의 수는 뺌으로서 전체적인 경우의 수를 구할 수 있다.
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> map = new HashMap<>();
for(String[] row: clothes){
map.put(row[1], map.getOrDefault(row[1], 0) + 1);
}
for(String key: map.keySet()){
answer *= (map.get(key) + 1);
}
return answer - 1;
}
}
- 해시맵은 key로 부위를 지정하여 해당 부위의 요소가 몇 개가 존재하는지를 저장하는 자료구조로 활용되었다.
'DataStructure > Hash, map, set' 카테고리의 다른 글
HashMap의 원리와 설명 (1) | 2023.03.16 |
---|---|
BOJ 26008 해시해킹 (0) | 2023.03.16 |
Programmers - 압축 (0) | 2023.03.14 |
Hash, map의 문제 유형 탐구 (0) | 2022.11.23 |