![[백준 C++] 9375 : 패션왕 신해빈](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtozRG%2FbtsMuK9WNsw%2FTPFJXTFx8CulxroI35Tk5K%2Fimg.png)
[백준 C++] 9375 : 패션왕 신해빈CSE/코딩 문제풀이2025. 2. 23. 12:54
Table of Contents
https://www.acmicpc.net/problem/9375
종류에 따라 만들 수 있는 조합의 갯수를 찾아야한다.
예를 들어 모자가 2개, 바지가 3개 있다고 했을 시 가능한 방법은
(모자1, 모자2, 모자X) * (바지1, 바지2, 바지3, 바지X) 으로 조합을 만들 수 있다.
다만, 모두 입지 않은 경우는 제외해야 하기 때문에 모자X와 바지X를 입은 경우를 빼 주어야 정답이 된다.
#include <iostream>
#include <map>
using namespace std;
int solve()
{
map<string, int> list;
int value, answer = 1;
cin >> value;
for (int i = 0; i < value; i++)
{
string name, type;
cin >> name >> type;
if (list.find(type) == list.end())
list.insert(make_pair(type, 1));
else
list[type]++;
}
for (auto it : list)
answer *= (it.second + 1);
return answer - 1;
}
int main()
{
int T;
cin >> T;
for (int i = 0; i < T; i++)
cout << solve() << '\n';
return 0;
}
map을 사용하여 list를 구현하였고, find로 type을 확인하여 존재하지 않으면 새로 추가하고 그렇지 않으면 기존에 있는 값에서 갯수를 올려주었다.
들어오는 input값에서 타입은 중요하지만 이름은 필요없기 때문에 type으로만 확인하였다.
'CSE > 코딩 문제풀이' 카테고리의 다른 글
[백준 C++] 11727 : 2×n 타일링 2 (0) | 2025.02.24 |
---|---|
[백준 C++] 11726 : 2×n 타일링 (0) | 2025.02.23 |
[백준 C++] 9095 : 1, 2, 3 더하기 (0) | 2025.02.22 |
[백준 C++] 2579 : 계단 오르기 (0) | 2025.02.22 |
[백준 C++] 1620: 나는야 포켓몬 마스터 이다솜 (0) | 2025.02.21 |
@NiffJB :: 개발하는 니프
CSE & GAME 개발 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 부탁드립니다!