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

 

코딩테스트 연습 - 위장 | 프로그래머스

 

programmers.co.kr

map을 이용해서 간단하게 풀 수 있는 문제이다.

옷의 종류를 key로 해당 종류에 속하는 옷들의 개수를 value로 넣는다.

즉, 해당 옷의 종류가 map에 존재하지 않으면 값을 1로 새로 추가해주고

이미 존재한다면 값을 증가시킨다.

 

 

그리고 map을 검사하면서 정답을 구해준다.

각 옷의 종류의 개수 + 1 한 값을 answer에 곱해주고 마지막에 -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
#include <string>
#include <vector>
#include <map>
 
using namespace std;
 
int solution(vector<vector<string>> clothes) {
    int answer = 1;
    
    map<stringint> m;
    
    for(auto elem : clothes) {
        if(m.find(elem[1]) == m.end()) {
            m.insert(make_pair(elem[1],1));
        } else {
            m[elem[1]]++;
        }
    }
 
    for(auto iter=m.begin(); iter != m.end(); iter++) {            
        answer *= (iter->second + 1);
    }
    answer -= 1;
 
    
    return answer;
}
Colored by Color Scripter
 

+ Recent posts