프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각 옷의 종류마다 몇 개씩 있는지만 구하면 되는 문제이다.
이후 종류별 옷의 수 + 1을 곱하면 해당 옷들로 할 수 있는 조합의 수가 나온다.
그리고 하루에 최소 한 개의 의상은 입는다는 조건이 있으므로 어떤 옷도 입지 않는다는 경우를 제외하면 조건에 맞는 답이 나온다.
예를 들어 아래의 표처럼 옷을 가지고 있을 때 문제의 조건을 만족하는 서로 다른 옷의 조합의 수는 (5 x 3 x 2) - 1이다.
얼굴 | face1, face2, face3, face4 |
상의 | top1, top2 |
겉옷 | outerwear1 |
풀이방법
1. string형을 Key로 int형을 value로 가지는 m을 선언한다.
2. clothes 벡터를 순회하며 의상의 이름은 필요하지 않으므로 같은 종류의 의상이 나올때마다 m[clothes[i][1]]++ 해준다.
3. answer에 m의 value에 +1한 값을 곱한다.
4. 반복문이 끝나면 answer--를 하고 answer를 리턴
#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++) {
m[clothes[i][1]]++;
}
for(auto cloth = m.begin(); cloth != m.end(); cloth++) {
answer *= (cloth->second + 1);
}
answer--;
return answer;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
전화번호 목록/C++ (0) | 2023.01.12 |
---|---|
기능개발/C++ (0) | 2023.01.10 |
괄호 회전하기/C++ (0) | 2023.01.10 |
[1차]캐시/C++ (0) | 2023.01.10 |
H-Index/C++ (0) | 2023.01.10 |