https://www.acmicpc.net/problem/9375
9375번: 패션왕 신해빈
첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다.
www.acmicpc.net
풀이 과정
옷을 입는 경우의 수를 구하는 문제이다. 단, 알몸만 아니면 되므로 종류 별 가짓수 + 1 을 해줘서 아무것도 입지 않았을 경우를 추가해준다. 모두 곱해한 다음 알몸인 경우를 생각해 1을 빼주면 값이 나온다. map을 이용해 해당 유형의 옷이 들어오면 갯수를 증가시켰고, 맵에 모든 값들에 1을 더해 곱하고 1을 빼서 정답을 출력했다.
느낀 점
map에서 전체 요소에 접근할 때 iterator와 auto를 이용해 접근하여 용이했다. 또 항상 테스트 케이스마다 값을 초기화 해주자.
#include<bits/stdc++.h>
using namespace std;
int n, T, ret;
string temp1, temp2;
map<string, int> clo_info;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
//테스트 케이스
cin >> T;
for (int t = 1; t <= T; t++) {
//초기화
ret = 1;
clo_info.clear();
//입력
cin >> n;
for (int i = 0; i < n; i++) {
cin >> temp1 >> temp2;
clo_info[temp2]++;
}
//map을 완전 탐색하며 ret 계산
for (auto i = clo_info.begin(); i != clo_info.end(); i++) {
ret *= (i->second + 1);
}
//예외 경우의 수 처리
ret -= 1;
//출력
cout << ret << "\n";
}
return 0;
}
'알고리즘 : C++ > BaekJoon' 카테고리의 다른 글
백준 1940번 - 주몽 (0) | 2023.05.19 |
---|---|
백준 1213번 - 팰린드롬 만들기 (0) | 2023.05.19 |
백준 1620번 - 나는야 포켓몬 마스터 이다솜 (0) | 2023.05.19 |
백준 2559번 - 수열 (1) | 2023.05.19 |
백준 9996번 - 한국이 그리울 땐 서버에 접속하지 (0) | 2023.05.19 |