[ 프로그래머스 ] 의상
문제
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 라이센스를 따릅니다.