공대생의 비망록

[프로그래머스][Lv. 2] 위장 C++ 풀이 본문

Programming Language/C, C++

[프로그래머스][Lv. 2] 위장 C++ 풀이

myungsup1250 2022. 5. 17. 17:39

https://programmers.co.kr/learn/courses/30/lessons/42578

 

코딩테스트 연습 - 위장

 

programmers.co.kr

 

풀이는 추후에 차차 올리도록 하겠습니다...

 

Swift로도 푼 문제!

Swift 풀이 : https://youngdeveloper.tistory.com/145

 

<디버깅을 위한 기능이 포함된 첫 제출 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <string>
#include <vector>
#include <iostream>
#include <map>
 
using namespace std;
 
int solution(vector<vector<string>> clothes) {
    int answer = 1;
    vector<string> clothTypes;
    vector<vector<string>>::iterator iter;
    vector<string>::iterator it;
    map<stringvector<string>> clothesMap;
    map<stringvector<string>>::iterator cmIter;
    
    printf("clothes:\n");
    for (iter = clothes.begin(); iter != clothes.end(); iter++) {
        for (int i = 1; i < (*iter).size(); i++) {
            if (i % 2 == 1) {
                cout << "type: " << (*iter)[i] << ", names: " << (*iter)[i - 1<< endl;
                if (clothesMap.find((*iter)[i]) != clothesMap.end()) {
                    clothesMap.insert(make_pair((*iter)[i], vector<string>()));
                    clothTypes.push_back((*iter)[i]);
                }
                clothesMap[(*iter)[i]].push_back((*iter)[i - 1]);
            }
        }
    }
    printf("\n");
    
    printf("clothesMap:\n");
    for (cmIter = clothesMap.begin(); cmIter != clothesMap.end(); cmIter++) {
        (*cmIter).first == elements of clothTypes vector
        cout << "[" << (*cmIter).first << "]: ";
        for (vector<string>::iterator tmp = ((*cmIter).second).begin(); tmp != ((*cmIter).second).end(); tmp++) {
            cout << *tmp << " ";
        } 
        cout << endl;
        answer *= ((*cmIter).second).size() + 1;
    }
    printf("\n");
        
    return answer - 1;    
}
 
cs

 

 

 

<제출용 코드>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string>
#include <vector>
#include <map>
 
using namespace std;
 
int solution(vector<vector<string>> clothes) {
    int answer = 1;
    vector<vector<string>>::iterator iter;
    map<stringvector<string>> clothesMap;
    map<stringvector<string>>::iterator cmIter;
    
    for (iter = clothes.begin(); iter != clothes.end(); iter++) {
        for (int i = 1; i < (*iter).size(); i += 2) {
            if (clothesMap.find((*iter)[i]) != clothesMap.end()) {
                clothesMap.insert(make_pair((*iter)[i], vector<string>()));
            }
            clothesMap[(*iter)[i]].push_back((*iter)[i - 1]);
        }
    }
    
    for (cmIter = clothesMap.begin(); cmIter != clothesMap.end(); cmIter++) {
        answer *= ((*cmIter).second).size() + 1;
    }
        
    return answer - 1;    
}
cs
Comments