https://www.acmicpc.net/problem/9375
풀이
가지고 있는 각 의상의 종류로 나올 수 있는 경우의 수를 구하는 문제다
map을 이용해 각 의상별로 몇 벌을 가지고 있는지 체크하고, 경우의 수를 구해주면 된다
제출 코드
#include <iostream>
#include <map>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int t, n;
string input;
cin >> t;
while(t--)
{
map<string, int> m;
cin >> n;
while(n--)
{
cin >> input >> input;
m[input]++;
}
int sum = 1;
for (auto cloth : m)
sum = sum * (cloth.second + 1);
cout << --sum << '\n';
}
}
의상의 이름은 어차피 겹치지 않는다고 했으니 덮어쓰는 식으로 넘겨주었다
아무 의상도 걸치지 않는 경우의 수는 제외하고 세어야 하기 때문에 마지막에 1을 빼고 출력해 주면 된다
'Programing > 백준, 프로그래머스(C++)' 카테고리의 다른 글
[C++][백준 2075] N번째 큰 수 (0) | 2025.01.22 |
---|---|
[C++][백준 1927] 최소 힙 (0) | 2025.01.21 |
[C++][백준 1620] 나는야 포켓몬 마스터 이다솜 (0) | 2025.01.21 |
[C++][백준 17276] 배열 돌리기 (0) | 2025.01.20 |
[C++][백준 1138] 한 줄로 서기 (0) | 2025.01.17 |