티스토리 뷰
의상의 이름은 크게 중요하지 않다. 의상 종류에 몇가지의 의상이 있는지 숫자로 바꾸면 된다.
| 종류 | 이름 |
| 얼굴 | 안경, 선글라스 |
| 상의 | 티셔츠 |
| 하의 | 바지 |
| 겉옷 | 코트 |
before
unordered_map<string,int>map;
for(auto i : clothes) {
map[i[1]]++;
}
2차원 배열을 어케 쓰나 했는데, 그냥 각 element마다 [0]으로 옷 이름, [1]로 옷 종류 접근이 가능했다.
| key | value |
| 얼굴 | 2 |
| 상의 | 1 |
| 하의 | 1 |
| 겉옷 | 1 |
after
옷의 조합 계산하기
하.. 나란 바보.. 어케 이런방법을 생각 못하다니
나는 옷 껴입을 개수 별로 계산을 해서 더할 생각을 하고있었는데, 그냥
| 종류 | 이름 |
| 얼굴 | 안경, 선글라스, 안입음 |
| 상의 | 티셔츠, 안입음 |
| 하의 | 바지, 안입음 |
| 겉옷 | 코트, 안입음 |
이렇게 옷 종류에 안입는 선택지를 하나 더 해서 모든 경우의 수 계산을 위해 곱해주면 된다.
하루에 최소 한 개의 의상을 입는다는 제한 사항을 고려하여, 최종 결과 값에서 1(안입음만 걸리는 경우)을 빼주면 된다.
#include <string>
#include <vector>
#include <unordered_map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
unordered_map<string,int>map;
for(auto i : clothes) {
map[i[1]]++;
}
for(auto ele : map) {
answer *= ele.second+1;
}
return answer-1;
}
'■ 알고리즘 > ◻ Programmers' 카테고리의 다른 글
| [C++]가장 큰 수 (0) | 2022.11.09 |
|---|---|
| [C++] K번째수 (0) | 2022.11.09 |
| [C++] 전화번호 목록 (0) | 2022.11.09 |
| [C++] 폰켓몬 (0) | 2022.11.08 |
| [C++] 완주하지 못한 선수 (0) | 2022.11.08 |