{"data":{"site":{"siteMetadata":{"title":"HOME | blackpudding","subtitle":"고생했어. 오늘도.","copyright":"© All rights reserved.","author":{"name":"William JO","github":"blackpudding96"},"disqusShortname":"blackpudding","url":"https://blackpudding.netlify.com"}},"markdownRemark":{"id":"a3cff5d0-9eff-5e2e-aa85-088cc1c920d1","html":"<h1>9375번 : 패션왕 신해빈</h1>\n<p>👉 <a href=\"https://www.acmicpc.net/problem/9375\">문제 바로가기</a></p>\n<h2>배경 지식</h2>\n<ul>\n<li><code class=\"language-text\">이항 계수(Binomial coefficient)</code> : 주어진 크기 집합에서 원하는 개수만큼 <strong>순서없이</strong> 뽑는 조합의 가짓 수</li>\n</ul>\n<h2>푼 방법</h2>\n<p>이번 문제도 이항 계수 (조합) 관련 문제이다.</p>\n<p>한 의상 종류에서 나오는 경우의 수는 <strong>“각각의 의상을 선택할 경우 + 아무것도 선택하지 않을 경우”</strong> 이다. 이렇게 경우의 수를 구할 수 있는 이유는 다음과 같은 조건들이 문제에서 주어졌기 때문이다.</p>\n<ol>\n<li>같은 종류의 의상은 하나만 입을 수 있다.</li>\n<li>같은 이름을 가진 의상은 존재하지 않는다.</li>\n</ol>\n<p><strong>각각의 의상 종류에서 위와같이 경우의 수를 구하고, 서로 곱해준다.</strong> 여기서 끝난걸까? 그렇지 않다. <strong>구해진 전체 경우의 수에서 문제의 조건처럼 알몸인 경우(모든 의상 종류에서 의상을 선택하지 않을 경우)를 빼줘야 한다.</strong></p>\n<hr>\n<p>&#x3C;예제>  </p>\n<ul>\n<li>headgear x 2 => (headgear1을 선택할 경우 + headgear2를 선택할 경우) + 아무것도 선택 안할 경우 = 2 + 1 = 3가지  </li>\n<li>eyewear x 2 => (eyewear1을 선택할 경우 + eyewear2를 선택할 경우) + 아무것도 선택 안할 경우 = 2 + 1 = 3가지   </li>\n<li>face x 1 => (face1을 선택할 경우) + 아무것도 선택 안할 경우 = 1 + 1 = 2가지<br>\n※ 의상 이름은 생략 (계산에 영향을 주지 않음)</li>\n</ul>\n<p>=> <strong>(2+1) x (2+1) x (1+1) - 1</strong> = <strong>3C1 x 3C1 x 2C1 - 1</strong> = <strong>18 - 1</strong> = <strong>17(가지의 경우의 수)</strong></p>\n<h2>내 정답 코드 (C++)</h2>\n<div class=\"gatsby-highlight\" data-language=\"c\"><pre class=\"language-c\"><code class=\"language-c\"><span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;iostream></span></span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;string></span></span>\n<span class=\"token macro property\">#<span class=\"token directive keyword\">include</span> <span class=\"token string\">&lt;map></span></span>\n\n<span class=\"token keyword\">int</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>ios<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span><span class=\"token function\">sync_with_stdio</span><span class=\"token punctuation\">(</span>false<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> \n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout<span class=\"token punctuation\">.</span><span class=\"token function\">tie</span><span class=\"token punctuation\">(</span><span class=\"token constant\">NULL</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">int</span> n<span class=\"token punctuation\">;</span>\n\t\n\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> n<span class=\"token punctuation\">;</span>\n\t\n\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> n<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>i<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>map<span class=\"token operator\">&lt;</span>std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>string<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span><span class=\"token operator\">></span> wear<span class=\"token punctuation\">;</span>\n\t\t<span class=\"token keyword\">int</span> num_wear<span class=\"token punctuation\">;</span>\n\t\t\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> num_wear<span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;</span> num_wear<span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>j<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>string wear_name<span class=\"token punctuation\">,</span> wear_type<span class=\"token punctuation\">;</span>\n\t\t\t\n\t\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cin <span class=\"token operator\">>></span> wear_name <span class=\"token operator\">>></span> wear_type<span class=\"token punctuation\">;</span>\n\t\t\t\n\t\t\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>wear<span class=\"token punctuation\">.</span><span class=\"token function\">find</span><span class=\"token punctuation\">(</span>wear_type<span class=\"token punctuation\">)</span> <span class=\"token operator\">!=</span> wear<span class=\"token punctuation\">.</span><span class=\"token function\">end</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token comment\">// 의상 종류가 map에 존재한다면</span>\n\t\t\t\twear<span class=\"token punctuation\">[</span>wear_type<span class=\"token punctuation\">]</span> <span class=\"token operator\">+</span><span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n\t\t\t<span class=\"token keyword\">else</span> <span class=\"token comment\">// 의상 종류가 존재하지 않는다면</span>\n\t\t\t\twear<span class=\"token punctuation\">[</span>wear_type<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t\t\n\t\t<span class=\"token keyword\">int</span> result <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>map<span class=\"token operator\">&lt;</span>std<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>string<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span><span class=\"token operator\">></span><span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>iterator iter <span class=\"token operator\">=</span> wear<span class=\"token punctuation\">.</span><span class=\"token function\">begin</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t\t\n\t\t<span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">;</span> iter <span class=\"token operator\">!=</span> wear<span class=\"token punctuation\">.</span><span class=\"token function\">end</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token operator\">++</span>iter<span class=\"token punctuation\">)</span>\n\t\t\tresult <span class=\"token operator\">*</span><span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>iter<span class=\"token operator\">-></span>second <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 각각의 의상을 선택할 경우 + 아무것도 선택 안할 경우</span>\n\t\t\n\t\tstd<span class=\"token punctuation\">:</span><span class=\"token punctuation\">:</span>cout <span class=\"token operator\">&lt;&lt;</span> result <span class=\"token operator\">-</span> <span class=\"token number\">1</span> <span class=\"token operator\">&lt;&lt;</span> <span class=\"token string\">'\\n'</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 알몸(?)인 경우 빼기</span>\n\t<span class=\"token punctuation\">}</span>\n    \n    <span class=\"token keyword\">return</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>","fields":{"tagSlugs":["/tags/백준/","/tags/algorithm/"],"slug":"/posts/baekjoons/9375/"},"frontmatter":{"title":"[백준] 9375 : 패션왕 신해빈","tags":["백준","Algorithm"],"date":"2020-03-21","description":"백준 9375번 문제 : 패션왕 신해빈"}}},"pageContext":{"slug":"/posts/baekjoons/9375/"}}