포스트

[ 프로그래머스 ] 의상

문제


https://school.programmers.co.kr/learn/courses/30/lessons/42578

풀이


서로 다른 옷 조합 갯수를 구하기 위해 종류 별로 의상을 저장, 각 원소곱을 통해 조합의 개수를 구한다. 다만, 아무것도 입지 않은 경우를 제외하기 위해 마지막에 -1을 빼준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(vector<vector<string>> clothes) 
{
    int answer = 1;

    map<string, vector<string>> vector_map;

    for (int i = 0; i < clothes.size(); i++)
    {
        if (vector_map.size() == 0)
        {
            vector_map.insert(pair<string, vector<string> >(clothes[i][1], vector<string>()));
            vector_map[clothes[i][1]].push_back(clothes[i][0]);
        }

        else
        {
            if (vector_map.find(clothes[i][1]) != vector_map.end())
            {
                vector_map[clothes[i][1]].push_back(clothes[i][0]);
            }

            else
            {
                vector_map.insert(pair<string, vector<string> >(clothes[i][1], vector<string>()));
                vector_map[clothes[i][1]].push_back(clothes[i][0]);
            }
        }
    }

    for (map<string, vector<string>>::iterator iter = vector_map.begin(); iter != vector_map.end(); iter++)
    {
        answer *= (iter->second.size() + 1);
    }

    answer -= 1;

    return answer;
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.