위장

NJW·2022년 3월 24일
0

코테

목록 보기
20/170

들어가는 말

각 종류의 옷이 주어지는 데 서로 중복되지 않고 입을 수 있는 수를 찾으면 된다. 너무 어렵게 생각할 필요 없다. 고등학교 시절 배운 확률과 통계를 생각하면 간단하다. 상의가 2벌 하의가 3벌 있다면 2C1 * 3C1 총 6개가 된다. 하지만 이 경우 선택하지 않음 도 있으니 각 요소에다가 +1을 해준 다음 중복되는 값인 -1을 해주면 된다.

코드 설명

해시로 분류가 되어 있기에 umordered_map을 이용해 줬다. answer에는 1을 넣고(0을 넣으면 계속 0만 나온다) unordered_map인 m에다가 key는 옷의 종류를 넣어주고 같은 종류가 나올 겅우 +1을 해준다. 다음 위에서 설명했던 거처럼 종류에 따른 옷의 수만큼 1씩 더해줘서 곱해주면 된다. 그다음 정답에 -1을 빼주면 된다.

코드

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

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    unordered_map<string, int> m;

    for(int i=0; i<clothes.size(); i++){
        m[clothes[i][1]] += 1;
    }
    
    for(auto i = m.begin(); i != m.end(); i++){
        answer = answer * (i->second + 1);
    }

    return answer-1;
}
profile
https://jiwonna52.tistory.com/

0개의 댓글