문제 설명

의상들이 담긴 2차원 배열 clothes에서 서로 다른 옷의 조합의 수를 return

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이법

clothes는 [의상의 이름, 의상의 종류]로 이루어져 있으므로 map을 사용하여 의상의 종류별로 몇개의 의상이 있는지 count 해주었다

 

각 옷의 조합의 수를 return 하는 것이므로 각 종류의 의상 수를 다 곱해보면 되는데 주의해야 할 것이 2개 있다

우선 곱할때 answer = 1를 두고 곱하고 나중에 return할 때 -1을 해주었다

answer = 0인 상태로 곱하면....

 

그리고 곱할때 의상의 수 + 1를 해주었다

1을 더해준 이유는 해당 의상의 종류를 입지 않는 경우도 있기 때문이다

 

소스 코드

#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    
    map<string, int> m;
    
    for (int i = 0; i < clothes.size(); i++)
        m[clothes[i][1]]++;
    
    
    for (auto it = m.begin(); it != m.end(); it++) {
        answer *= (it->second + 1);
    }
    
    return answer - 1;
}
복사했습니다!