#해시 #map
✍ 문제풀이
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
위의 조건을 만족하는 경우의 수를 계산해보자
만약 상의(a, b, c) 3가지, 얼굴(nn, mm) 2가지가 있다. 이 때 상의는 A, 얼굴은 B라고하자.
경우의 수는
1) a - X (상의 a와 얼굴은 아무것도 안 쓰는 경우)
2) b - X
3) c - X
4) nn - X
5) mm - X
6) a - nn
7) b - nn
8) c - nn
9) a - mm
10) b - mm
11) c - mm
12) X - X
총 12가지의 경우가 있다. 하지만 하루에 최소 한 개의 의상은 입으므로 12번인 둘 다 아무것도 입지 않는 경우를 제외해야 한다.
따라서 구현 식은 ( (A + 1) * (B + 1) ) - 1
🌱 정답코드
#include <string>
#include <vector>
#include <map>
using namespace std;
map<string, int> myClothes; // 옷 종류(key), 옷 종류 count
int result = 1;
int solution(vector<vector<string>> clothes) {
int answer = 0;
// 옷 종류마다 count
for(int i = 0; i < clothes.size(); i++){
myClothes[clothes[i][1]]++;
}
for(auto it = myClothes.begin(); it != myClothes.end(); it++){
result *= it -> second + 1;
}
answer = result - 1;
return answer;
}
'OLD_알고리즘 > Programmers - 알고리즘' 카테고리의 다른 글
Programmers ] 신규 아이디 추천 (0) | 2021.06.03 |
---|---|
Programmers - BFS/DFS ] Lv.2 타겟 넘버 (0) | 2021.06.02 |
Programmers ] Lv.1 다트 게임 & string -> int (stoi), isdigit (0) | 2021.05.26 |
Programmers ] 🔁 Lv.2 Kakao 괄호 변환 & 그대로 구현 + 재귀함수 (0) | 2021.05.25 |
Programmers ] Lv.2 올바른 괄호 (0) | 2021.05.21 |
댓글