https://programmers.co.kr/learn/courses/30/lessons/42578
수학적인 접근이 필요한 문제임
의상 종류의 수와 종류들의 각 갯수를 가지고 풀 수 있는 문제임
해쉬를 이용해서 각 의상 종류의 갯수들을 저장해줌
그리고 경우의 수를 구해줌
* for(String key : keys) 는 keys에 있는 값들을 key값에 넣는 것이다.
(keys에 값이 더이상 없을때까지)
import java.util.*;
//위장
// [의상의 이름, 의상의 종류]
// 최소 한 개 이상의 의상
// 서로 다른 옷의 조합의 수 return
// 같은 종류의 의상은 조합 불가
class Solution {
public int solution(String[][] clothes) {
int answer = 0;
// 의상 종류끼리 갯수 저장
Map<String, Integer> clothesKindsMap = new HashMap<>();
String clothesKindsName;
for(int i=0; i<clothes.length; i++){
clothesKindsName = clothes[i][1];
if(clothesKindsMap.containsKey(clothesKindsName)){
clothesKindsMap.put(clothesKindsName, clothesKindsMap.get(clothesKindsName) + 1);
}
else{
clothesKindsMap.put(clothesKindsName, 1);
}
}
// 경우의 수 계산
Set<String> keys = clothesKindsMap.keySet();
int temp;
answer = 1;
for(String key : keys){
// 해당 의상 종류 갯수(안 입는 경우 포함)
temp = clothesKindsMap.get(key) + 1;
answer *= temp;
}
// 아무 것도 안 입은 경우 제외
answer--;
return answer;
}
}
'Development Logs > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스 : 프린터 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.14 |
---|---|
[JAVA] 프로그래머스 : 다리를 지나는 트럭 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.13 |
[JAVA] 프로그래머스: 전화번호 목록 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.11 |
[JAVA] 프로그래머스: 완주하지 못한 선수 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.11 |
[JAVA] 프로그래머스: 탑 (코딩테스트 고득점 kit > 스택/큐) (0) | 2020.07.11 |