Programing/Programers
[JAVA] 해시 : 의상
블스뜸
2025. 4. 14. 13:37
문제내용

간단한 수학 공식으로 생각하여 접근해봤다
옷 태그의 개수를 전부 곱하면 경우의 수가 전부 나올 수 있다라고 생각하고 풀어보았다
우선 배열을 해시에 저장을 하고
for(String[] strs : clothes){
String tag = strs[1];
hash.put(tag, hash.getOrDefault(tag, 0) + 1);
}
해당 태그를 키값 태그의 개수를 값으로 저장해주었다
그리고 모든 태그의 값을 곱해주었더니
for(Integer value : hash.values()){
answer *= value;
}
결과가 다르게 나왔다..
그래서 고민을 조금해봤는데
생각해보니 안입었을 경우를 고려하지 않았다
for(Integer value : hash.values()){
answer *= (value + 1);
}
그래서 안입었을 경우를 +1을해서 추가하고
이렇게하면 전부안입었을 경우까지 계산이 되서 값이 다르게 나온다
그래서
answer -= 1;
이 한줄을 반환하기 전에 추가해 제외 해주었더니 문제가 풀렸다
전체코드
import java.util.HashMap;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
HashMap<String, Integer> hash = new HashMap<>();
for(String[] strs : clothes){
String tag = strs[1];
hash.put(tag, hash.getOrDefault(tag, 0) + 1);
}
for(Integer value : hash.values()){
answer *= (value + 1);
}
answer -= 1;
return answer;
}
}