GitHubSeob
C++ / 프로그래머스 / 의상 본문
문제 |
https://school.programmers.co.kr/learn/courses/30/lessons/42578
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이 |
옷의 조합의 개수를 return 하는 문제이다.
옷은 하나만 입을 수도 있고, 여러 종류를 조합하여 입을 수 있지만 같은 종류의 옷은 하나밖에 입지 못한다.
따라서 옷을 종류별로 저장하고, 개수에 1을 더한 값들을 곱하면 된다. (안 입을 경우 포함)
얼굴이 1개, 상의가 2개, 하의가 3개, 겉옷이 0개 있다면
얼굴은 안 입을 경우, 1번을 입을 경우 해서 2가지의 경우 (2C1)
상의는 안 입을 경우(0), 1번 입을 경우, 2번을 입을 경우 (3C1)
하의는 4C1, 겉옷은 1C0
따라서 2C1 * 3C1 * 4C1 * 1C0 = 2 * 3 * 4 * 1 = 24가 된다.
하지만 다 안 입을 경우도 포함한 것이므로 24 - 1을 한 23이 답이 된다.
코드 |
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer(1), idx(0), maximum(0);
map<string, vector<string>>category;
for (idx = 0; idx < clothes.size(); ++idx) {
category[clothes[idx][1]].push_back({ clothes[idx][0] });
}
for (auto iter = category.begin(); iter != category.end(); ++iter) {
answer *= (iter->second.size() + 1);
}
return answer - 1;
}
'Programmers > Level 2' 카테고리의 다른 글
C++ / 프로그래머스 / 할인 행사 (1) | 2023.07.16 |
---|---|
C++ / 프로그래머스 / 튜플 (0) | 2023.07.16 |
C++ / 프로그래머스 / [1차] 캐시 (0) | 2023.07.11 |
C++ / 프로그래머스 / 행렬의 곱셈 (0) | 2023.07.11 |
C++ / 프로그래머스 / n^2 배열 자르기 (0) | 2023.07.11 |