Algorithm

[Algorithm] 프로그래머스 C++ : 위장

dokylee 2020. 7. 12. 17:48

 

 

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

그냥 수학 계산으로 풀면 됨.

일단 map을 사용해서 각 옷의 종류마다 몇 벌이 있는지 세고

각 (벌+1)을 다 곱하고 마지막에 1만 빼주면 answer.

 

** m.find(i[1]) == m.end() 이면 없는 key값이라는 것 명심

 

 

Code

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

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    
    map<string, int> m;
    
    for(auto i : clothes){
        if(m.find(i[1]) == m.end()) {
            m.insert(make_pair(i[1], 1));
        }
        else {
            m.find(i[1]) -> second ++;
        }
    }
    
    for(auto i = m.begin(); i != m.end(); i++){
		answer *= (i->second + 1);
        cout << "key : " << i->first << " " << "value : " << i->second << '\n';
	}
    
    return answer-1;
}