[프로그래머스/C#] 위장

dev.hyeon·2022년 10월 16일
0

알고리즘

목록 보기
37/44
post-thumbnail

위장

풀이

스파이가 가진 의상들이 담긴 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;
    }
}

0개의 댓글