[프로그래머스] 해시 - 위장

강신현·2022년 3월 20일
0

문제 링크

문제

풀이

의상의 이름과 의상의 종류가 쌍으로 주어지고
각 종류별로 조합을 세는 문제이다.

위 입출력 #1 을 보면

옷의 종류
headgear -> yellow_hat, green_turban -> 2가지
eyewear -> blue_sunglasses -> 1가지

가능한 옷의 조합
headgear -> yellow_hat, green_turban, 선택 안함 -> 3가지
eyewear -> blue_sunglasses, 선택 안함 -> 2가지
3*2 = 6이지만

아무것도 선택하지 않는 경우는 없으므로 하나를 뺀 5가지 조합이 가능하다.

따라서 map에 key(옷의 종류) value(가짓수) 로 저장을 해서 경우의 수를 세면된다.

코드

#include <string>
#include <vector>
#include <iostream>
#include <unordered_map>

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    
    unordered_map<string, int> category;
    
    // map에 옷 가짓수 저장
    
    for(int i=0;i<clothes.size();i++){
        category[clothes[i][1]] ++;
    }
    
    for(auto pair:category){
        answer *= pair.second+1;
    }
    
    answer--;
    
    return answer;
}

int main(){
    vector<vector<string>> clothes =
    {{"yellowhat", "headgear"},
     {"bluesunglasses", "eyewear"},
     {"green_turban", "headgear"}};
    
    solution(clothes);
    
    
    return 0;
}
profile
땅콩의 모험 (server)

0개의 댓글