반응형
해당 문제는 프로그래머스 코딩테스트 연습에 있는 문제입니다.
아래 링크를 통해 풀 수 있습니다.
https://programmers.co.kr/learn/courses/30/lessons/42578
해당 문제는 경우의 수 문제로 공식을 사용해야 합니다.
문자열의 처리를 함과 동시에 카운트를 세는 문제입니다.
공식은 다음과 같습니다.
예를 들어 '티, 바지, 안경' 3가지가 있다고 가정한다면
((티의 갯수 + 1) * (바지의 갯수 + 1) * (안경의 갯수 + 1)) - 1 입니다.
아래는 완성된 코드입니다.
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> index;
set<string> key;
for_each(clothes.begin(), clothes.end(), [&](vector<string> v){
if(index.find(v[1]) == index.end()){
index.insert(pair<string, int>(v[1], 1));
key.insert(v[1]);
}
else
index[v[1]]++;
});
for_each(key.begin(), key.end(), [&](string n){
answer *= (index[n] + 1);
});
return answer - 1;
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스] C++ 정렬 - K번째 수(Level 1) (0) | 2020.01.30 |
---|---|
프로그래머스] C++ 해시 - 베스트앨범(Level 3) (0) | 2020.01.30 |
프로그래머스] C++ 해시 - 전화번호 목록(Level 2) (2) | 2020.01.23 |
프로그래머스] C++ 해시 - 완주하지 못한 선수(Level 1) (0) | 2020.01.23 |
2020 카카오 블라인드 공채 문제 2번 설명 및 풀기 (0) | 2019.12.11 |
댓글