💡Problem Solving/Programmers

[프로그래머스] 위장 (Java)

gom20 2021. 11. 21. 16:01

문제

https://programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

풀이

의상을 입는 조합의 수를 구하는 문제이다. 

예제

종류에 따른 의상 수를 구한다. HashMap<String, Integer> 이용

얼굴 - 2

상의 - 1

하의 - 1

겉옷 - 1

 

조합의 수는 각 의상 수를 곱해주면 되는데, 의상을 입지 않는 경우의 수가 있으므로 +1을 한 후 곱한다. 

3 * 2 * 2 * 2 = 24

의상을 최소 한 개는 입어야 한다는 조건이 있으므로

여기서 의상을 모두 안입는 경우의 수 (-1)를 빼줘야 한다.

24 - 1 = 23

 

아래 백준 문제와 풀이가 동일하다.

2021.11.11 - [Problem Solving/BOJ] - [BOJ 9375] 패션왕 신해빈 (Java)

 

[BOJ 9375] 패션왕 신해빈 (Java)

문제 https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sungla..

gom20.tistory.com

소스코드

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        int answer = 0;
        
        HashMap<String, Integer> hm = new HashMap<String, Integer>();
        for(String[] clothe : clothes){
            String key = clothe[1];
            hm.put(key, hm.getOrDefault(key, 0) + 1);
        }
        
        if(hm.size() > 0) answer = 1;
        for(String key : hm.keySet()){
            answer *= (hm.get(key) + 1);
        }
        return answer-1;
    }
}