-
위장프로그래머스(Programmers) 2021. 12. 1. 10:41반응형
제한사항
- clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다.
- 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다.
- 같은 이름을 가진 의상은 존재하지 않습니다.
- clothes의 모든 원소는 문자열로 이루어져 있습니다.
- 모든 문자열의 길이는 1 이상 20 이하인 자연수이고 알파벳 소문자 또는 '_' 로만 이루어져 있습니다.
- 스파이는 하루에 최소 한 개의 의상은 입습니다.
#include <string> #include <vector> #include <map> using namespace std; int solution(vector<vector<string>> clothes) { int answer = 1; map<string,int> clothMap; // key : 옷 종류, value : 갯수 for(int i=0; i< clothes.size(); i++) { clothMap[clothes[i][1]]++; } for(auto iter=clothMap.begin(); iter != clothMap.end();iter++) { answer *= ((iter->second)+1); } return answer-1; }
=> map 컨테이너를 통해 해당 옷들의 가짓수를 먼저 분류해야 합니다.
https://blockdmask.tistory.com/87
=> 그이후 계산식을 통해 답을 알 수 있습니다.
=> (각 옷의 가짓수 +1) * (각 옷의 가짓수 +1)...
=> 위의 식을 통해 answer의 값을 알 수 있습니다.
=> 상의 1벌, 하의 1벌일 경우의 수입니다.
=> (상의) (하의) (상의, 하의) ->를 통해 3개가 됩니다.
=> 굵은 글씨로 써진 식의 경우 아예 입지 않는 경우의 수도 들어가므로 -1을 해주어야 합니다.
* MAP STL을 사용할 줄 알면 쉽게 풀리는 문제였습니다 (MAP컨테이너를 공부를 해야 할 듯합니다.)
반응형'프로그래머스(Programmers)' 카테고리의 다른 글
숫자 문자열과 영단어 (0) 2021.12.06 주식가격 (0) 2021.12.03 프린터 (0) 2021.11.28 가장 큰 수 (0) 2021.11.26 K번째 수 (0) 2021.11.25