🖥️ CS/Baekjoon Algorithms

#9375번 패션왕 신해빈 (C++)

한국의 메타몽 2020. 11. 9. 14:56

링크 : www.acmicpc.net/problem/9375

 

9375번: 패션왕 신해빈

첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로   (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.

www.acmicpc.net

문제 풀이는 다음과 같다.

1. 맵을 활용해서 옷의 종류와 갯수를 저장한다.

2. 옷을 입는 방법을 계산하는 코드는 아래와 같다.

        unordered_map<string,int>map;
        int num = 0, ans = 1;
        string cloth = "", category = "";
        cin >> num;
        for(int i=0; i<num; i++){
            cin >> cloth >> category;
            map[category]++;
        }
        for(auto i : map) ans *= i.second+1; // 해당 옷을 입지 않는 경우도 고려
        ans-=1; // 아무것도 안입는 경우 제외
        cout << ans << "\n";

옷의 갯수에 +1을 해서 곱해주는 이유는, 해당 옷을 입지 않는 경우도 고려해야하기 때문이다.

3. 마지막에 전체 합에 -1을 해준다. 이는 아무것도 안 입는 경우는 제외해야하기 때문이다.

 

#include <iostream>
#include <algorithm> 
#include <unordered_map>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    int tc = 0;
    cin >> tc;
    while(tc--){
        unordered_map<string,int>map;
        int num = 0, ans = 1;
        string cloth = "", category = "";
        cin >> num;
        for(int i=0; i<num; i++){
            cin >> cloth >> category;
            map[category]++;
        }
        for(auto i : map) ans *= i.second+1; // 해당 옷을 입지 않는 경우도 고려
        ans-=1; // 아무것도 안입는 경우 제외
        cout << ans << "\n";
    }
    return 0;
}

'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글

#4949번 균형잡힌 세상 (C++)  (0) 2020.11.10
#1676번 팩토리얼 0의 개수 (C++)  (0) 2020.11.09
#9012번 괄호 (C++)  (0) 2020.11.05
#11051번 이항 계수2 (C++)  (0) 2020.11.05
#3036번 링 (C++)  (0) 2020.11.03