1. 문제 설명
2. 문제 해결
경우의 수를 생각하면 쉽게 해결할 수 있다. 만약 한 카테고리에 의상이 2개 있으면, (안 입음, 1개입음, 2개입음) 해서 총 경우의 수가 3가지이다. 그렇게 (카테고리 내 의상의 수 + 1 )를 모두 곱해준다음 1을 빼주면 된다. (모두 안 입는 경우의 수는 존재하지 않으므로)
자료구조는 c++에 있는 map을 활용하였다.
몰랐던 부분 : map 내 초기화가 되지 않은 Key가 들어갈 때 자동으로 0이 초기화되기 때문에, 굳이 조건문을 나눌 필요가 없다. 그리고 for문을 쓰기가 애매해서 auto를 처음 써 보았다.
3. 코드
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m;
for (auto p : clothes)
m[p[1]]++;
for (auto p : m)
answer *= (p.second + 1);
answer -= 1;
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스 H-index (C++) (0) | 2024.07.17 |
---|---|
프로그래머스 기능개발 (C++) (0) | 2024.07.17 |
프로그래머스 구명보트 (C++) (0) | 2024.07.16 |
프로그래머스 전화번호목록 (C++) (0) | 2024.07.15 |
프로그래머스 조이스틱 (C++) (1) | 2024.07.15 |