스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 구하는 문제이다.
2차원 배열 clothes의 각 행은 [의상의 이름, 의상의 종류]으로 이루어져있다. 의상의 종류별 의상의 개수가 필요하기 때문에 Dictionary를 이용해 의상의 종류 별로 (key, value) = (의상의 종류, 의상의 개수)를 구한다.
의상의 종류별로 의상을 입을 수도 있고, 입지 않을 수도 있다. 따라서 의상 종류+1을 한 값이 의상 한 종류의 경우의 수가 된다.
이때, 모든 의상의 종류를 택하지 않는 경우가 발생할 수 있다. 이 경우를 제외시킨다.
using System;
using System.Collections.Generic;
public class Solution
{
public int solution(string[,] clothes)
{
int answer = 1;
Dictionary<string, int> dic = new Dictionary<string, int>();
for (int i = 0; i < clothes.Length / 2; i++)
{
if (dic.ContainsKey(clothes[i, 1]) == false)
dic.Add(clothes[i, 1], 1);
else
dic[clothes[i, 1]]++;
}
foreach (int value in dic.Values)
answer *= value + 1;
return answer - 1;
}
}