프로그래머스 42578 - 위장 (c++)
접근 및 생각
- 의상의 종류가 있기 때문에, 단순 vector로 다루기엔 어려워서 map이라는 자료구조를 활용했습니다.
- C++ STL map에 대한 정보
- 문제에서 활용된 map의 pair는 <string, int>로 하여, string에는 옷의 종류 이름이, int에는 옷의 종류에 해당하는 옷의 가짓수를 저장하였습니다.
- 전부 다 벗은 경우를 제외해야 하고, 최소한 하나의 옷을 입어야 합니다. 옷의 종류가 아래와 같다면,
(3 + 1) * (2 + 1) * (1 + 1) * (7 + 1) - 1이 문제의 답이 됩니다.a : 3, b : 2, c : 1, d : 7
괄호 안의 + 1 은 그 옷의 종류를 입지 않은 경우를 넣은 것이고, 괄호 밖의 - 1 은 전부 다 벗은 경우를 제외한 것입니다.
코드
#include <bits/stdc++.h>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m;
// 옷의 종류에 해당하는 map value를 하나씩 늘려줍니다.
for(int i = 0; i < clothes.size(); i++){
m[clothes[i][1]]++;
}
// map을 순회하면서 (k.second + 1)를 곱해줍니다.
for(auto & k : m){
answer *= (k.second + 1);
}
// 전부 다 벗은 경우를 빼주고 반환해줍니다.
return answer - 1;
}
채점 결과
'Coding Test > programmers' 카테고리의 다른 글
프로그래머스 42585 - 쇠막대기 (c++) (0) | 2020.07.27 |
---|---|
프로그래머스 42588 - 탑 (c++) (0) | 2020.07.27 |
프로그래머스 42579 - 베스트앨범 (c++) (0) | 2020.07.27 |
프로그래머스 42577 - 전화번호 목록 (c++) (0) | 2020.07.27 |
프로그래머스 42576 - 완주하지 못한 선수 (c++) (0) | 2020.07.27 |