250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)위장 본문
728x90
반응형
옷의 모든 조합을 구하여 문제를 푸는 방식이다.
우선 맵을 이용하여 의상의 종류에 따른 개수를 구하였다.
clothes[i][1]는 의상의 종류를 나타내므로 맵의 KEY 값이 된다.
그렇다면 해당하는 KEY의 값을 +1 씩 해주어서 종류에 따른 의상의 개수를 구하였다.
맵을 순회하면서 각각의 VALUE + 1 을 answer에 곱하여 마지막에는 answer - 1을 하여 반환해주면 된다.
-1을 하는 이유는 모든 옷을 안입는 경우는 존재하지 않기 때문이다.
예를들어 옷의 종류가 A, B, C라고 하자.
A 옷의 개수 : n(A)
B 옷의 개수 : n(B)
C 옷의 개수 : n(C)
그리고 해당 옷을 안입는 경우를 고려하여 각각 + 1을 해주도록 한다.
결국
(n(A) + 1) * (n(B) + 1) * (n(C) + 1)이 된다.
그리고 모든 옷을 안입는 경우는 없기 때문에 위 식에서 -1을 해주면 답이 나오게 된다..!
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(vector<vector<string>> clothes) {
int answer = 1;
map<string, int> m;
for(int i = 0; i < clothes.size(); i++)
m[clothes[i][1]]++;
for(auto itr = m.begin(); itr != m.end(); itr++)
answer *= (itr->second + 1);
return answer - 1;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)카펫 (0) | 2020.05.18 |
---|---|
(프로그래머스 c++)구명보트 (0) | 2020.05.15 |
(프로그래머스 c++)전화번호 목록 (0) | 2020.05.14 |
(프로그래머스 c++)H-Index (0) | 2020.05.14 |
(프로그래머스 c++)더 맵게 (0) | 2020.05.14 |