728x90
programmers.co.kr/learn/courses/30/lessons/42578
처음에 어떻게 풀지 고민하다
그 고등학교 확통시간에 서로다른 N가지 종류의 옷을 입는 경우의 수 구하는 문제..
상의가 3벌, 하의가 2벌, 모자가 1벌 있을때 모든 옷의 조합을 구하는 경우의 수는
(3+1)(상의3벌 + 안입는경우의수1) * (2+1) * (1+1) -1 (-1은 아예 옷을 안 입는 경우의 수 1개를 빼줌)
"4 * 3 * 2 -1" = 23가지 경우
이걸 코드로 구현했다.
아래 코드를 보면 주석처리한 식이 있는데 맵을 저렇게 순회할 수 있다는걸 알게됐다. 다른분의 코드인데 좋아서 주석으로 넣어놨음! 내코드는 맵을 순회하는 코드가 좀 지저분하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#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 (int i = 0; i < clothes.size(); i++)
map[clothes[i][1]] ++;
for (int i = 0; i < clothes.size(); i++) {
answer *= (map[clothes[i][1]]+1);
map[clothes[i][1]] = 0;
}
/*for(auto it = map.begin(); it != map.end(); it++)
answer *= (it->second+1);
다른 분의 코드인데 맵을 순회하는 코드가 너무 좋아서 첨부했어요*/
return answer-1;
}
|
cs |
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 2] 카카오프렌즈 컬러링북 C++ (0) | 2021.03.23 |
---|---|
[프로그래머스 LV 2] 124 나라의 숫자 C++ / javascript (0) | 2021.03.23 |
[프로그래머스 LV 2] 전화번호 목록 C++ (해시 풀이법 포함) (0) | 2021.03.21 |
[프로그래머스 LV 1] 완주하지 못한 선수 C++ (0) | 2021.03.21 |
[프로그래머스 LV 2] 큰 수 만들기 C++ (0) | 2021.03.20 |