본문 바로가기
알고리즘 문제풀이/프로그래머스

[프로그래머스] 레벨2 위장

by m2162003 2021. 1. 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;
}

댓글