본문으로 바로가기

[hash03]위장

category 카테고리 없음 2022. 6. 9. 20:09

문제 설명

  스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요

 

풀이

import java.util.*;
public class Hash03 {
	
	class Solution {
	    public int solution(String[][] clothes) {
	        int answer = 1;
	    
	        HashMap<String, Integer> map = new HashMap<String, Integer>();
	        
	        for(int i = 0; i < clothes.length; i++) {
	        	map.put(clothes[i][1], map.getOrDefault(clothes[i][1], 0)+1);
	        }
	        
	        Set<String> set = map.keySet();
	        
	        for(String str : set) {
	        	answer *= map.get(str)+1;
	        }
	        
	        return answer-1;
	    }
	}
}

 

[기억하기]

1.  Set<String> set = map.keySet();

Set은 List 와 다르게 중복 값을 허용하지 않는다.

 

2. 모자 A, B, 바지 A  가 주어졌을 때 계산방법

- (모자 A , B, 아무것도 안쓰는 경우 ) 3가지 *  (바지 A, 아무것도 안입는 경우) 2가지 = 총 6가지

여기서 둘다 안입었을 경우 1가지를 빼주면 된다. 즉, 5가지.