반응형
1. 의상
https://school.programmers.co.kr/learn/courses/30/lessons/42578
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
Map<String, Integer> cate = new HashMap<>();
for(int i = 0; i < clothes.length; i++){
if(cate.get(clothes[i][1]) == null){
cate.put(clothes[i][1], 1);
} else {
cate.put(clothes[i][1], cate.get(clothes[i][1])+1);
}
}
int answer = 1;
for(Map.Entry<String, Integer> cateEntry : cate.entrySet()){
int val = cateEntry.getValue();
answer *= val + 1;
}
return answer-1;
}
}
의상 종류와 개수만 알면 풀 수 있는 문제입니다.
A종류 의상이 a개, B종류의 의상이 b개, C종류의 의상이 c개 일 때 하나 씩 만 입으면 a+b+c, 두 개 씩만 입을 땐 ab+bc+ac, 세 개를 입으면 abc 이렇게 되죠. 그러면 abc + ab+bc+ac + a+b+c가 되는데 이는 +1 -1 해주는 것과 같습니다. 그렇다면 abc + ab+bc+ac + a+b+c +1-1 이 되고 이는 (a+1)(b+1)(c+1)-1로 인수분해 할 수 있게 되는 겁니다.
그래서 종류를 기준으로 카운팅을 하고 개수+1개씩 곱해준 뒤 -1해준 값을 return 해주면 되는 것이죠.
반응형
'코딩테스트 > Java' 카테고리의 다른 글
[코딩테스트] 23-12-07 프로그래머스 PCCE 기출문제 (2) | 2023.12.07 |
---|---|
[코딩테스트] 23-12-06 프로그래머스 (0) | 2023.12.06 |
[코딩테스트] 23-11-30 프로그래머스 (0) | 2023.11.30 |
[코딩테스트] 23-11-29 프로그래머스 (0) | 2023.11.29 |
[코딩테스트] 23-11-28 프로그래머스 (0) | 2023.11.28 |