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;
    }
}