알고리즘 문제풀이/프로그래머스
[프로그래머스] 레벨2 위장
m2162003
2021. 1. 18. 22:18
programmers.co.kr/learn/courses/30/lessons/42578
코딩테스트 연습 - 위장
programmers.co.kr
경우의 수를 구하는 문제이다.
모든 옷에 대한 경우의 수를 구해야 하므로
(옷 종류 + 1) * ( 옷종류 + 1) * ... - 1
을 해줘야 한다. 마지막에 -1은 한 개도 선택안하는 경우다.
그래서 옷종류를 세기 위한 방법으로 자료구조 map을 사용한다.
map iterator 자꾸 잊어버리지 말자!
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
unordered_map<string, int> um;
int solution(vector<vector<string>> clothes) {
int answer = 0;
int len = clothes.size();
for(int i=0; i<len; i++){
um[clothes[i][1]]++;
}
int sum = 1;
for(auto it=um.begin(); it!=um.end(); it++){
sum *= (it->second +1);
}
answer = sum -1;
return answer;
}