ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[프로그래머스] 위장

SZCODE 2021. 2. 4. 18:43

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

문제 풀이 : 

옷의 종류를 key로 종류의 갯수를 value로 해시테이블을 구성합니다.

해시테이블에 옷의 종류가 없다면 갯수를 1로 넣어주고, 옷의 종류가 있다면 갯수를 1씩 늘려줍니다.

 

ex)

headgear : yellow_het , green_turban

eyewear : blue_sunglasses

 

만약 yellow_het 을 골랐을 때 eyewear를 안 입는 경우도 있습니다. 

그렇기 때문에 headgear를 안 입는 경우, eyewear를 안 입는 경우 각 각 +1 을 해주어서 경우의 수를 구해줍니다.

이 때 둘 다 안 쓰는 경우는 제외시켜주어야 하기 때문에 마지막에 -1을 해줍니다.

(headgear + 1) * (eyewear+1) -1

import java.util.HashMap;

class Solution {
	public int solution(String[][] clothes) {
		int answer = 1;
		HashMap<String, Integer> hs = new HashMap();
		// 옷의 종류, 종류 갯수

		for (int i = 0; i < clothes.length; i++) {
			String key = clothes[i][1];
			if (!hs.containsKey(key)) hs.put(key, 1);
			else hs.put(key, hs.get(key) + 1);
		}

		for (int i : hs.values()) answer *= (i + 1);
		answer--;

		return answer;
	}
}