9375 패션왕 전해빈

phoenixKim·2022년 6월 30일
0

백준 알고리즘

목록 보기
32/174
post-thumbnail

최근 풀이 : 240111

: 생각을 더 못해서 틀림.

  • 한 종류의 옷만 있을 경우, 어떻게 처리해야할지 생각을 못함.
#include <iostream>
using namespace std;
#include <string>

#include <vector>
#include <limits.h>
#include <algorithm>
#include <map>
#include <future>
#include <thread>
#include <numeric>
#include <stack>
#include <queue>
#include <memory>
#include <set>
#include <string>
#include <stack>
#include <mutex>
#include <ostream>



int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	

	// 한 번 입었던 옷의 조합은 절대 입지 않음. 

	int testCnt;
	
	cin >> testCnt;

	int n;
	for (int i = 0; i < testCnt; ++i)
	{
		cin >> n;
		
		// 의상의 이름과 의상의 종류가 공백으로 구분되면서 입력
		// 같은 이름을 가진 의상은 없음.
		// 알몸이 아닌 상태로 의상을 입는 경우의 수
		
		map<string, int> clothes;
		for (int j = 0; j < n; ++j)
		{
			// 전체 헤드기어 수 + 전체 아이웨어 수 
			// + 2 * 1 
			// 한가지만 입을 경우 : 각 종류의 사이즈만 큼 합 누적
			// 조합 만드는 경우는 곱하기 처리 하자. 
			string s1, s2;
			cin >> s1 >> s2;
			clothes[s2]++;
		}

		int sum = 0;
		int temp = 0;
		for (auto &iter : clothes)
		{
			// 조합 처리하는 방법을 어떻게 계산할까? 
			sum += iter.second;
			temp++;
		}

		int johap = 1;
		if (temp >= 2)
		{
			for (auto &iter : clothes)
			{
				johap *= iter.second;
			}
		}
		else
		{
			johap = 0;
		}

		cout << sum + johap << endl;

		// f1 ,f2, f3 , e1 ,e2 ,e3
		// face : 1개 선택 eyebrow 0개 선택 - > 3
		// face : 0개 선택 eyebrow 1개 선택 -> 3
		// face : 1개 선택 eyebrow 1개 선택 -> 9 

	}



}


경우의 수

: 알아야 할점.
헤드기어 2개
아이웨어 1개 일 경우 나올 수 있는 경우의 수는?

  • 해당 의상 선택 안함이라는 경우의 수가 모든 의상에 하나씩 추가해야 함.

헤드기어 : a,b
아이웨어 : A
헤드기어 아이웨어 아무것도 선택 안함 / a / b / A / a A / b A 총 6개이다.
이게 나올수 있게 하기 위해서는 각각의 종류에다가 "없음" 을 더해줘야 함.

  • 이렇게 생각하자.

    헤드기어 종류 : a,b , 선택안함. -> 총 3개
    아이웨어 종류 : A , 선택안함.-> 총 2개
    1.헤드기어 선택 안함 , 아이웨어 선택 안함.
    2.헤드기어 a , 아이웨어 선택 안함. /
    3.헤드기어 b , 아이웨어 선택 안함./
    4.헤드기어 선택 안함, 아이웨어 A /
    5.헤드기어 a , 아이웨어 A /
    6.헤드기어 b , 아이웨어 A /
    총 6개이다.

  • 그런데 문제에서 모든 의상 선택 안함은 없애야 한다고 하니까

  • 위의 조건으로 진행한다면 map<string ,int> clothes 이고
    2번째 케이스를 진행한다면, second는 3이지만, 아무것도 선택 안함 조건이 추가되므로,
    4가 됨.

  • 마지막에 계산할 때 누적 곱셈 처리하는 1 * 4
    그리고 -1 처리하면 됨. -> 3

  • 1번 케이스라고 한다면, headgear는 3 이고, eyewear 는 2 이고
    누적 곱 진행하면 1 3 2
    그리고 -1 처리하면 5

  • 결론
    : 3 * 2 => 총 6개인데
    문제에서는 알몸, 즉 아무것도 선택안한거를 제외해야 하므로 -1 해주자.
profile
🔥🔥🔥

0개의 댓글

관련 채용 정보