Corgi Dog Bark

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로그래머스[HASH] 위장
    알고리즘/프로그래머스(PRPGRAMMERS) 2021. 10. 11. 09:27
    반응형

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

     

    코딩테스트 연습 - 위장

     

    programmers.co.kr

     

     

    문제


    스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다.

    예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다.

    종류이름

    얼굴 동그란 안경, 검정 선글라스
    상의 파란색 티셔츠
    하의 청바지
    겉옷 긴 코트

    스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요.

     

     

     

     

     

    입력 / 출력


     

    [["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]] 5
    [["crowmask", "face"], ["bluesunglasses", "face"], ["smoky_makeup", "face"]] 3

     

     

     

    접근법


    1. 왜 문제가 HASH 에 분류되있을까 생각해보니, 옷의 분류에 따라서 종류를 다시 분류해야 하는데, 이때 MAP을 써서 구현하다보니 HASH에 분류되었나 보다.
    2. 풀이는 간단하다. 같은 카테고리에 분류되어 있는 옷의 종류를 모두 세어준다음, 가짓수를 구해주면 되는데, 
    3. 옷을 안 입은 경우는 없으니, 최종 답에서 -1 시켜준다.

     

    #include <string>
    #include <vector>
    #include <map>
    using namespace std;
    
    int solution(vector<vector<string>> clothes) {
        map<string, int> m;
        for(auto c : clothes)
            m[c[1]]+=1;
        int answer = 1;
        for(map<string, int>::const_iterator it=m.begin(); it != m.end(); it++){
            answer *= it->second+1;
        }
        return answer-1;
    }
    반응형

    '알고리즘 > 프로그래머스(PRPGRAMMERS)' 카테고리의 다른 글

    가장 먼 노드  (0) 2022.04.29
    입국심사  (0) 2022.04.29
    N으로 표현  (0) 2022.04.29
    완주하지 못한 선수  (0) 2021.10.07
    프로그래머스_주식가격(Lv2)  (0) 2021.04.19

    댓글

Designed by Tistory.