본문 바로가기
문제 풀이/백준(BOJ)

[C++] 백준 9375번 : 패션왕 문희조

by 희조당 2021. 7. 19.
728x90

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을 해준 것이 정답이다.

+1은 해당 종류의 의상을 안 입을 경우이고 -1은 모두 안 입을 경우이다.

예를 들어 안경 2, 상의 2, 바지 3이면 (2 + 1)(2 + 1)(3 + 1) - 1 이 정답이라는 것이다.

그렇다면 옷의 이름은 그렇게 중요하지 않다는 의미이고 STL 컨테이너를 이용해서 옷의 종류에 따른 개수를 저장하면 된다!

 느낀 점

확실히 수학적인 부분에 약한 모습을 보이는 것 같다. 많이 접해보지 못해서 그런 것일까? 또, 굳이 이 문제에서 맵을 사용했을 필요는 없어 보인다. 다만 코드는 많이 간결해 보인다.

 코드

#include <iostream>
#include <string>
#include <map>

using namespace std;

int t, n;
string name, tag;

int main() {
	cin >> t;
	while (t--) {
		map<string, int> m;
		cin >> n;

		while (n--) {
			cin >> name >> tag;
			if (m.find(tag) == m.end())
				m.insert(make_pair(tag, 1));
			else m[tag]++;
		}

		int ans = 1;
		for (auto i : m)
			ans *= (i.second + 1);

		cout << ans - 1 << "\n";
	}
}

 

댓글