쾌락없는 책임 (공부)/알고리즘 문제풀이

[Algorithm] 프로그래머스 위장 - C++, unordered_map

허스크 2022. 5. 11. 20:10
반응형

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

#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(auto cloth : clothes){
        map[cloth[1]]++;
    }

    for(auto pair : map){
        answer *= pair.second + 1;
    }

    return answer-1;
}

unordered_map을 잘 이해해두면 쉽게 풀 수 있는 문제였습니다. 옷의 카테고리를 key로 사용해 같은 카테고리의 옷끼리 묶어둔뒤 (각 카테고리에 있는 가짓수 + 1)을 전부 곱해준 뒤 1을 빼면 되는 문제였습니다.

 

 여기서 answer에 1을 더해서 곱하는 이유는 1이 뜻하는게 '아무것도 입지 않은 상태' 이며 마지막에 1을 빼주는 이유는 '모든 카테고리에서 아무것도 입지 않은 경우를 제외' 하기 위함입니다.

반응형