728x90
반응형
728x90
[Programmers] 의상 - LV 2
접근
- 해시
풀이
의상을 조합해 만들 수 있는 모든 경우의 수를 구하는 문제이다. 의상의 카테고리에서 최대 1개의 의상을 입을 수 매일 최소 1개의 의상은 필수로 입어야 한다.
public int solution(String[][] clothes) {
Map<String, Integer> clothesMap = new HashMap<>();
for (String[] clothe : clothes) {
clothesMap.merge(clothe[1], 1, Integer::sum);
}
int answer = 1;
for (int count : clothesMap.values()) {
answer *= (count + 1);
}
return answer - 1;
}
해시맵을 사용해서 간단하게 풀 수 있는 문제이다. 의상의 경우 겹치는 의상은 존재하지 않아 개수로만 표현해도 충분하다. 키 값으로 카테고리를 사용하고 값으론 의상의 개수를 가진다. 모든 조합을 구하기 위해선 의상들의 개수를 곱해주면 되는데 해당 카테고리의 옷을 안 입는 경우도 고려해 + 1 한 값을 곱해주어야 한다. 그리고 마지막에 옷을 하나도 안 입는 경우를 빼주면 모든 조합의 수가 된다.
전체 코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
Map<String, Integer> clothesMap = new HashMap<>();
for (String[] clothe : clothes) {
clothesMap.merge(clothe[1], 1, Integer::sum);
}
int answer = 1;
for (int count : clothesMap.values()) {
answer *= (count + 1);
}
return answer - 1;
}
}
728x90
'알고리즘 > 코딩테스트-Programmers' 카테고리의 다른 글
[Programmers] 더 맵게 JAVA (0) | 2025.02.01 |
---|---|
[Programmers] 프로세스 JAVA (1) | 2025.01.31 |
[Programmers] 전화번호 목록 JAVA (1) | 2025.01.27 |
[Programmers] 무인도 여행 JAVA (0) | 2025.01.23 |
[Programmers] 호텔 대실 JAVA (1) | 2025.01.22 |