백준/구현

[백준 9375번 / C++] 패션왕

배발자 2022. 1. 18.
반응형
 

<map> 자료구조

*헤더로 을 갖는다. 은 key 와 value 의 쌍으로 이루어진 균형 이진 트리이다. key 를 기준으로 사전순으로 정렬되어 있기 때문에 검색 속도가 빠르다. 바로 map 의 쓰임을 알아보자. string s= "my name is m

baebalja.tistory.com


조건은 자신의 가지고 있는 의상으로 입을 수 있는 모든 경우의 수를 구하라는 것이다. 

만약 안경이 3개가 있고 바지가 3벌이 있다. 이때 구할 수 있는 경우의 수는 

 

(안경 안쓸 때 ,  안경1,  안경2, 안경3) ->  총 4가지 

(바지 안입을 때, 바지1, 바지2, 바지3) -> 총 4가지 

 

근데 여기서 알몸이 아닌 상태여야 하기 때문에 마지막에 -1 을 해줘야한다. 

 

여기서 map 을 활용하여 의상 종류를 키값으로 갖는 벨류값을 하나씩 증가하여 같은 종류의 의상 개수를 확인할 수 있다. 

#include <iostream>
#include <map>
#include <algorithm>
using namespace std; 
int main() {
	int n; cin >> n; 	
	for (int i = 0; i < n; i++) {
		int nn; cin >> nn; 
		map<string, int> m;
		for (int j = 0; j < nn; j++) {
			string s1; cin >> s1; 
			string s2; cin >> s2; 		
			m[s2]++; 
		}
		int sum = 1; 
		for (auto x : m) {		
			sum *= x.second + 1; 
		}
		cout << sum - 1 << "\n"; 
	}
}
반응형

댓글