📝 문제
🔥 시도해본 접근 방식
문제 분류에 해시라는 힌트를 보고 바로 의상 종류를 key로 하여 value에는 갯수를 저장하는 Map을 선언해야 겠다고 생각했다.
그 뒤 처음에는 단순히 의상 종류별 의상 수를 모두 곱한 값이 정답일거라고 생각했으나,
존재하는 모든 의상종류를 하나씩 착용하는 것이 아니었고 최소 한 개의 의상을 입는 조건으로 인해 잘못된 생각이었음을 깨달았다.
그렇기 때문에 의상 종류별 의상 수를 카운팅 할 때 의상을 입지 않을 경우의 수 까지 포함하여 +1을 해주었고
연산이 끝난 후 마지막에 모든 의상을 입지 않는 경우의 수는 제외하기 위해 -1을 해주었다.
✨ 성공 코드
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
// 옷의 종류별로 갯수를 저장할 Map 선언
HashMap<String, Integer> map = new HashMap<>();
// 배열을 순회하면서 옷의 종류별로 갯수를 카운팅한다.
for (String[] item : clothes) {
// 옷을 입지 않는 선택지 까지 포함하기 위해 기본값을 1로 준다.
map.put(item[1], map.getOrDefault(item[1], 1) + 1);
}
int answer = 0;
// 옷을 조합할 수 있는 경우의 수를 계산한다.
for (int cnt : map.values()) {
answer = answer == 0 ? cnt : answer * cnt;
}
// 위의 연산은 옷을 하나도 입지 않는 케이스가 포함된 연산이므로
// 옷을 하나도 입지 않은 경우의 수 하나는 제거한다.
--answer;
return answer;
}
}
'스터디 > 99클럽 코테 스터디 TIL' 카테고리의 다른 글
99클럽 코테 스터디 8일차 TIL 기능개발 (0) | 2024.07.29 |
---|---|
99클럽 코테 스터디 7일차 TIL 하노이의 탑 (0) | 2024.07.29 |
99클럽 코테 스터디 5일차 TIL 전화번호 목록 (0) | 2024.07.26 |
99클럽 코테 스터디 4일차 TIL JadenCase 문자열 만들기 (0) | 2024.07.25 |
99클럽 코테 스터디 3일차 TIL 문자열 내 마음대로 정렬하기 (1) | 2024.07.25 |