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

수경·2023년 1월 2일
0

problem solving

목록 보기
103/174

프로그래머스 - 위장

풀이

  1. 경우의 수
  2. 옷의 종류 별로 입거나, 안입는 경우의 수를 구해서 곱하기

ex) 바지 2, 티셔츠 1 인 경우,
바지 -> 1번 바지 2번 바지 입지 않음 ➡️ 3가지 경우
티셔츠 -> 1번 티셔츠 입지 않음 ➡️ 2가지 경우
3 x 2 = 6가지 경우인데, 아무것도 입지 않는 경우를 제외하면 5가지

(5가지)
1. 1번 바지 + 1번 티셔츠
2. 1번 바지 + 입지 않음
3. 2번 바지 + 1번 티셔츠
4. 2번 바지 + 입지 않음
5. 입지 않음 + 1번 티셔츠
6. 입지 않음 + 입지 않음 ➡️ 제외


코드

import java.util.HashMap;

public class Camouflage {
	public int solution(String[][] clothes) {
		HashMap<String, Integer> wear = new HashMap<>();
		for (String[] cloth : clothes) {
			wear.put(cloth[1], wear.getOrDefault(cloth[1], 0) + 1);
		}

		int result = 1;
		for (String key : wear.keySet()) {
			result *= (wear.get(key) + 1);
		}
		return result - 1;
	}

	public static void main(String[] args) {
		Camouflage camouflage = new Camouflage();
		System.out.println(camouflage.solution(new String[][]{{"yellow_hat", "headgear"}, {"blue_sunglasses", "eyewear"}, {"green_turban", "headgear"}}));  // 5
		System.out.println(camouflage.solution(new String[][]{{"crow_mask", "face"}, {"blue_sunglasses", "face"}, {"smoky_makeup", "face"}}));  // 3
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글