https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string,int> m;
for(int i=0;i<clothes.size();i++)
{
if(m.find(clothes[i][1])!=m.end())
m[clothes[i][1]]++;
else
m.insert({clothes[i][1],1});
}
for(auto& item : m)
answer*=(item.second+1);
return answer-1;
}
주어진 clothes를 map에 종류, 이름 으로 저장한다.
어떤 종류든 1종류는 착용하며, 같은 종류는 최대 1개만 착용한다.
즉, 한 종류에 대해서 (가짓수 + 1) 가지의 경우의 수가 있다. +1은 착용하지 않는 경우이다.
A,B두 종류가 있다고 하면
(A의 수 +1) * (B의 수 + 1) - 1 이 옷을 입는 총 경우의 수이다.
-1 은 전부 착용하지 않는 경우의 수이다.
'알고리즘 > 프로그래머스 2단계' 카테고리의 다른 글
프로그래머스 - 기능 개발 - C++ (0) | 2024.07.31 |
---|---|
프로그래머스 - H-Index - C++ (0) | 2024.07.30 |
프로그래머스 - 구명보트 - C++ (0) | 2024.07.30 |
프로그래머스 - 이진 변환 반복하기 - C++ (0) | 2024.07.30 |
프로그래머스 - 피보나치 수 - C++ (0) | 2024.07.30 |