[Algorithm #10] 9375 - 패션왕 신해빈 (C++)

이석환·2023년 5월 3일

Algorithm

목록 보기
11/16

1. 문제 설명

  1. 테스트 케이스 T를 입력받는다.
  2. 해빈이가 가진 의상의 수 N을 입력 받는다.
  3. 해빈이가 가진 의상의 이름과 종류가 공백으로 주어진다. 이때 같은 종류의 의상을 하나만 입을 수 있다.
  4. 해빈이가 알몸이 아닌 상태로 의상을 입을 수 있는 경우를 출력

2. 문제 해결 전략

  1. 테스트케이스 T를 입력받는다.
  2. key로 string(의상 종류)을 가지는 haebin이라는 map을 선언한다.
  3. 이름과 카테고리를 입력받는다.
  4. 여기서 포인트는 사실 이름은 신경쓸 필요가 없다.
    -> Why ? 어차피 같은 종류의 의상을 못 입다고 하였기 때문에 category만 신경쓰면 된다.
  5. map에 해당 category가 들어오면 value값을 증가시켜 준다.
  6. 입력을 모두 받은 후 auto를 이용하여 value값을 꺼내준다.
  7. 여기선 모든 경우의 수를 구해야 하기 때문에 꺼낸 value값에 1을 더한 후 result라는 결과값에 계속 곱해준다.
    -> Ex) 다른 카테고리 2개의 경우의 수
    [sunglass] = 2, [hat] = 1
    3 X 2 = 6
  8. 위에서 구한 경우의 수에서 아무 것도 입지 않은 경우의 수 1을 빼고 출력


#include <iostream>
#include <algorithm>
#include <map>

using namespace std;


int main(void) {
    int n;
    int t;
    string name;
    string category;
    cin >> t;

    for (int i = 0; i < t; i++) {
        map<string, int> haebin;
        cin >> n;
        for (int j = 0; j < n; j++) {
            cin >> name >> category;
            haebin[category]++;
        }
        int result = 1;

        for (auto temp: haebin) {
            result *= ((temp.second) + 1);
        }
        result--;
        cout << result << "\n";
    }
    return 0;
}

3. 소감

매우 쉬운 문제였다.
맵 사용, 경우의 수만 생각하면 5분 안에 푸는 문제

출처 : https://www.acmicpc.net/problem/9375

profile
반갑습니다.

0개의 댓글