[알고리즘C++]위장

후이재·2020년 9월 7일
1

오늘의 문제

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

위장

나의 풀이

#include <string>
#include <vector>
#include <map>
using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;
    // 같은 의상 이름 중 하나 선택
    map<string, int> kinds;
    
    for(auto c : clothes){
        string name = c[0];
        string kind = c[1];
        if(kinds.insert(make_pair(kind, 2)).second == false){ // 중복
            kinds.find(kind)->second++;
        }
    }
    for(map<string, int>::iterator i = kinds.begin();i != kinds.end();i++){
        answer *= i->second;
    }
    return answer-1;
}

모범 답안

#include <string>
#include <vector>
#include <unordered_map>

using namespace std;

int solution(vector<vector<string>> clothes) {
    int answer = 1;

    unordered_map <string, int> attributes;
    for(int i = 0; i < clothes.size(); i++)
        attributes[clothes[i][1]]++;
    for(auto it = attributes.begin(); it != attributes.end(); it++)
        answer *= (it->second+1);
    answer--;

    return answer;
}

배울 점

  • 방법은 나와 비슷한 방법으로 풀이 함
  • map, set value 받아서 쓰거나 비교하는 부분이 헷갈린다 많이 연습해서 바로 쓸 수 있게 해야겠다.
profile
공부를 위한 벨로그

0개의 댓글