본문 바로가기

Algorithm/자료구조

(C++) - 프로그래머스(고득점 kit - Hash) : 위장 답

반응형

programmers.co.kr/learn/courses/30/lessons/42578?language=cpp

 

코딩테스트 연습 - 위장

 

programmers.co.kr

map을 사용해 풀 수 있었던 문제였습니다.

 

풀이방법

 1. 각 카테고리 별로 '입지 않음'라는 의상을 추가해 생각해봅니다.

 2. 각 카테고리 당 의상 수 + '입지 않음' 만큼을 answer에 곱해줍니다. 이렇게 된다면 최소 의상을 1개 입는 경우도 ['입지 않음','안경'] 이런 식으로 표현될 수 있으므로 모든 경우를 구할 수 있습니다.

 3. 모든 경우의 수 - 모두 '입지 않음'인 경우(1가지)가 답이 됩니다.

Code

#include <bits/stdc++.h>
using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    int clothCnt = 0 ;
    map <string,vector<string>> comb;
    for(int i = 0; i < clothes.size(); i++) comb[clothes[i][1]].push_back(clothes[i][0]);
    for(auto category : comb)
        answer *= category.second.size() + 1;
    return answer - 1;
}