본문 바로가기
코딩테스트/프로그래머스

프로그래머스] C++ 해시 - 위장(Level 2)

by Hwan2 2020. 1. 30.
반응형

 

 

 

해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.

아래 링크를 통해 풀 수 있습니다.

 

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

 

 

 

 

 

 

해당 문제는 경우의 수 문제로 공식을 사용해야 합니다.

 

문자열의 처리를 함과 동시에 카운트를 세는 문제입니다.

 

공식은 다음과 같습니다.

 

예를 들어 '티, 바지, 안경' 3가지가 있다고 가정한다면

((티의 갯수 + 1) * (바지의 갯수 + 1) * (안경의 갯수 + 1)) - 1 입니다.

 

 

아래는 완성된 코드입니다.

 
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    map<string, int> index;
    set<string> key;
    
    for_each(clothes.begin(), clothes.end(), [&](vector<string> v){
        if(index.find(v[1]) == index.end()){
             index.insert(pair<string, int>(v[1], 1));
             key.insert(v[1]);
        }
        else
             index[v[1]]++;        
    });
    
    for_each(key.begin(), key.end(), [&](string n){
         answer *= (index[n] + 1);
    });
    
    return answer - 1;
}

 

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서