의상(프로그래머스 Lv_2)
2023. 6. 26. 01:06ㆍ알고리즘
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map<String,ArrayList<String>> a=new HashMap<String,ArrayList<String>>();
for(int i=0;i<clothes.length;i++)
{
if(!a.containsKey(clothes[i][1]))
a.put(clothes[i][1],new ArrayList<String>());
a.get(clothes[i][1]).add(clothes[i][0]);
}
for(String key : a.keySet()){
answer=answer*(1+a.get(key).size());
}
answer=answer-1;
return answer;
}
}
해시맵의 값을 배열로 할당해주어 해시맵을 구성하였다.
수학적 알고리즘으로 a가지의 의상1과 b가지 의상2가 있다면 총 가짓수는 a+b+ab 이며, a가지의상1과 b가지의상2, c가지의상3은
a+b+c+ab+ac+bc+abc이다. 즉 (1+a)(1+b)(1+c)-1이다. 이 방식으로 알고리즘은 구현하면 된다.
https://school.programmers.co.kr/learn/courses/30/lessons/42578?language=java
'알고리즘' 카테고리의 다른 글
플로이드 워셜 알고리즘(Floyd-Warshall) (0) | 2024.03.08 |
---|---|
전화번호목록(프로그래머스_Lv2) (1) | 2023.06.09 |
폰켓몬(프로그래머스_Lv1) (0) | 2023.05.29 |
개인정보 수집 유효기간(프로그래머스_Lv1) (0) | 2023.05.28 |