Algorithm/프로그래머스
[프로그래머스] 위장 (Java)
Carroti
2022. 11. 7. 15:30
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘
해시맵
풀이
얼굴 a개, 상의 b개, 하의 c개 겉옷 d개라고 한다면 선택하지 않는 경우 + 옷의 개수 = 옷의 개수 + 1 의 선택지가 있다.
또한 최소 하나의 의상은 입어야하므로 전체 조합의 수는 (a + 1) * (b + 1) * (c + 1) * (d + 1) - 1 이다.
따라서 해시맵을 이용하여 옷의 종류 clothes[i][1] 을 key로 종류별 옷의 개수를 세고 위 식을 계산하여 출력한다.
코드
import java.util.*;
class Solution {
public int solution(String[][] clothes) {
int answer = 1;
Map<String, Integer> map = new HashMap<>();
for(String[] c: clothes)
map.put(c[1], map.getOrDefault(c[1], 0) + 1);
for(int v: map.values())
answer *= v + 1;
return answer - 1;
}
}