본문 바로가기
알고리즘

[프로그래머스] 위장 파이썬 C++

by 자라자 2021. 5. 3.

문제링크

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

 

코딩테스트 연습 - 위장

 

programmers.co.kr

Python

from collections import defaultdict
def solution(clothes):
    answer = 0
    dic=defaultdict(int)
    for i in clothes:
        dic[i[1]]+=1
    multiple=1
    for i in dic:
        multiple*=dic[i]+1
    return multiple-1

 

아이디어: 경우의 수 세기 문제. 아무것도 안입을 수는 없으므로 옷종류+1을 곱하고 마지막에 1뺌.

 

C++

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

using namespace std;

int solution(vector<vector<string>> clothes) {
   
    unordered_map<string,int>hash_map;
    for (int i=0; i<clothes.size();i++){
        hash_map[clothes[i][1]]+=1;
    }
    int multiple=1;
    for (int j=0; j<hash_map.size();j++){
        cout<<hash_map[clothes[j][1]]<<endl;
    }
    /*
    for (auto itr= hash_map.begin();itr!=hash_map.end();++itr){
        cout<<itr->first<<" "<<itr->second<<endl;
    }
    */
    for (auto itr= hash_map.begin();itr!=hash_map.end();++itr){
        multiple*=(itr->second)+1;
    }

    return multiple-1;
}

아이디어: 파이썬과 동일