이렇게 주어진 값들을 카테고리 안에 넣어야하는 문제들이 있다
이런 문제들은 보통 해당 카테고리에 무엇이 들었는가는 중요치 않다
그 카테고리에 몇 가지가 들었는지 숫자가 중요할 뿐
따라서 map<string, int> 를 선언하고 key값에는 유일한 카테고리명을,
value는 int형으로 key값이 나올 때마다 +1씩 더해주어 몇가지가 있는지를 알아낸다
그 후에는 간단하다
해당 카테고리에서 하나만 고르거나 안고르거나.
(한 카테고리에서 두 개를 고르는건 제한사항이다)
따라서 map의 (value값 +1)을 모두 곱해주면 된다
그리고 모두 안골랐을 경우를 하나 빼주면 끝 !
#include<iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
int solution(vector<vector<string>> clothes)
{
map<string, int> m;
int answer = 1;
for (int i = 0; i < clothes.size(); i++)
{
m[clothes[i][1]]++;
}
for (auto it = m.begin(); it != m.end(); it++)
{
answer *= (it->second + 1);
}
return answer-1;
}
'> 코딩테스트' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 C++ (0) | 2024.04.20 |
---|---|
[프로그래머스] 디펜스 게임 C++ (0) | 2023.12.26 |
[백준] 24511 queuestack (C++) (0) | 2023.11.14 |
[백준] 28279 덱2 (C++) (2) | 2023.11.08 |
[백준] 10816 숫자카드2 (C++) (1) | 2023.10.31 |