Woopii Vyeolog

[프로그래머스 코딩테스트 연습] 해시 3 본문

코딩테스트 연습

[프로그래머스 코딩테스트 연습] 해시 3

WooPii 2020. 4. 25. 16:12

문제 링크 : https://programmers.co.kr/learn/courses/30/parts/12077

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

3번 문제 : 위장

 

문제 설명

 

 

 

내가 푼 답(자세한 설명은 주석으로 달아 놓았음)

 

import java.util.*;

class Solution {
    public int solution(String[][] clothes) {
        
        //경우의 수 개념을 활용
        //해당 문제에서의 식은 --> (의상종류1 + 1) * (의상 종류2 + 1) - 1 이다
        //즉, headgear가 2개고, eyegear가 1이면, (2+1) * (1+1) -1 이 된다.
        //그리고, -1 하는 이유는, 아얘 안입는 경우를 제외했기 때문이다.
        
        //answer의 값이 1인 이유는 여기에 경우의 수 곱셈을 해주기 위함이다. 
        int answer = 1;
        HashMap<String, Integer> hm = new HashMap<String, Integer>();
        
        //key값으로 각각의 의상 종류를, value값으로 계산에 필요한 가짓수를 정한다.
        for(int i = 0;i < clothes.length;i++){
            hm.put(clothes[i][1],hm.getOrDefault(clothes[i][1],1)+1);
        }
        //answer에 각 의상종류의 value값을 곱함으로서 경우의 수 계산을 한다.
        for(HashMap.Entry<String,Integer> aa: hm.entrySet()){
            answer *= aa.getValue();
        }
        //리턴 시 -1 해서 안입는 경우를 제외한다.
        return answer-1;
    }
}

 

Comments