{"componentChunkName":"component---src-templates-post-template-jsx","path":"/algo/posts/2021-03-24--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"e3eb1bfd-ef3f-5917-bba1-910e992a90d0","html":"<h2>문제</h2>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/a89599687d43fb8ffd054ae3e39d6a62/636c2/001-01.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n  \n  <span\n    class=\"gatsby-resp-image-wrapper\"\n    style=\"position: relative; display: block;  max-width: 911px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 56.25%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAABJ0AAASdAHeZh94AAABcElEQVQoz5VT23KCQAzlR1ql9YIClTuiqPWCojjMqKi9TB/60P//hNNkEaudOtqHM5vNJmeT7Flpvv9CtPmEEsxR82eot+MznPrYvgZJH6QwRitYk02O8QZ2tCVkMIYrAWe6gz3JiHSOR2eCihv9iao3hRSmH+gs3+EQiRPt4FKyN9vDX7zCne2IbCvgko/9fBGT8yVevD+C89QwgcSBnCiCDpUV1ZrjtSCz6IxjOIn3TFz4OI7HVYxEalNSq7OA6sfQqaW7ZhdlrY+y2oP89Cza+A+kVneJhhOhbk1ghCm0YAH2sV01xyKoGPipffFRVJ/Ktcao2xHMXgo9SCBrPZSaIVU4uJnoSKhRmzWqRCFCtu+VjiArNbqQ9R/Cm1vWOwkUZ4qKORLtivkRZL2PB2N4taLqrw6k/HUzmKP1UQL5K2dCRqxLY7gWe7YL2EJm2eF8JVTSZNmIA9YarV78giB5O4g4/x2FJC79HiU4938DT81znqMzF60AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n    >\n      <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"001 01\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/a89599687d43fb8ffd054ae3e39d6a62/636c2/001-01.png\"\n        srcset=\"/devHistoryBlog/static/a89599687d43fb8ffd054ae3e39d6a62/8ff5a/001-01.png 240w,\n/devHistoryBlog/static/a89599687d43fb8ffd054ae3e39d6a62/e85cb/001-01.png 480w,\n/devHistoryBlog/static/a89599687d43fb8ffd054ae3e39d6a62/636c2/001-01.png 911w\"\n        sizes=\"(max-width: 911px) 100vw, 911px\"\n      />\n    </span>\n  </span>\n  \n  </a>\n    </p>\n<ul>\n<li>주어진 코드</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">class</span> <span class=\"token class-name\">Solution</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">int</span> <span class=\"token function\">solution</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> clothes<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">int</span> answer <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n        <span class=\"token keyword\">return</span> answer<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h2>결과 및 풀이</h2>\n<ul>\n<li>결과 </li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">테스트 1 〉\t통과 (0.09ms, 53MB)\n테스트 2 〉\t통과 (0.09ms, 53MB)\n테스트 3 〉\t통과 (0.06ms, 52.2MB)\n테스트 4 〉\t통과 (0.08ms, 53.3MB)\n테스트 5 〉\t통과 (0.06ms, 51.9MB)\n테스트 6 〉\t통과 (0.07ms, 52.7MB)\n테스트 7 〉\t통과 (0.10ms, 53.3MB)\n테스트 8 〉\t통과 (0.09ms, 53MB)\n테스트 9 〉\t통과 (0.05ms, 52.4MB)\n테스트 10 〉\t통과 (0.07ms, 52.4MB)\n테스트 11 〉\t통과 (0.07ms, 52MB)\n테스트 12 〉\t통과 (0.07ms, 52.6MB)\n테스트 13 〉\t통과 (0.10ms, 53.3MB)\n테스트 14 〉\t통과 (0.07ms, 53.3MB)\n테스트 15 〉\t통과 (0.06ms, 53.8MB)\n테스트 16 〉\t통과 (0.05ms, 52.9MB)\n테스트 17 〉\t통과 (0.09ms, 52.9MB)\n테스트 18 〉\t통과 (0.06ms, 52.6MB)\n테스트 19 〉\t통과 (0.06ms, 52.5MB)\n테스트 20 〉\t통과 (0.06ms, 52.6MB)\n테스트 21 〉\t통과 (0.06ms, 54.4MB)\n테스트 22 〉\t통과 (0.06ms, 52.3MB)\n테스트 23 〉\t통과 (0.06ms, 52.4MB)\n테스트 24 〉\t통과 (0.06ms, 53.3MB)\n테스트 25 〉\t통과 (0.07ms, 53.5MB)\n테스트 26 〉\t통과 (0.09ms, 52.5MB)\n테스트 27 〉\t통과 (0.09ms, 52.3MB)\n테스트 28 〉\t통과 (0.07ms, 52MB)</code></pre></div>\n<ul>\n<li>\n<p>풀이</p>\n<ul>\n<li>해당 문제는 경우의 수 문제이다.</li>\n<li>A집합의 n개에서 나올 수 있는 부분 집합의 수는 n+1 이다. (n개 + 선택하지 않았을 경우 1)</li>\n<li>A집합 n개, B집합 m개에서 나올 수 있는 부분 집합의 수는 (n+1)*(m+1)</li>\n<li>모두를 선택하지 않는 경우는 없다고 문제에 명시되어 있으니 -1</li>\n<li>즉, {(n+1)<em>(m+1)</em>…*(k+1)}-1</li>\n</ul>\n</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token annotation punctuation\">@Test</span>\n<span class=\"token keyword\">void</span> 위장<span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">Assert</span><span class=\"token punctuation\">.</span><span class=\"token function\">assertEquals</span><span class=\"token punctuation\">(</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> 위장<span class=\"token class-name\">Solution</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"yellowhat\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"headgear\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"bluesunglasses\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"eyewear\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"green_turban\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"headgear\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token class-name\">Assert</span><span class=\"token punctuation\">.</span><span class=\"token function\">assertEquals</span><span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> 위장<span class=\"token class-name\">Solution</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">new</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">{</span><span class=\"token punctuation\">{</span><span class=\"token string\">\"crowmask\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"face\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"bluesunglasses\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"face\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span><span class=\"token string\">\"smoky_makeup\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"face\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token keyword\">int</span> 위장<span class=\"token class-name\">Solution</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> clothes<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token class-name\">Map</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">Integer</span><span class=\"token punctuation\">></span></span> clothesTypes <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">HashMap</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token punctuation\">></span></span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    \n    <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> clothe <span class=\"token operator\">:</span> clothes<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token class-name\">String</span> type <span class=\"token operator\">=</span> clothe<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>clothesTypes<span class=\"token punctuation\">.</span><span class=\"token function\">containsKey</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        clothesTypes<span class=\"token punctuation\">.</span><span class=\"token function\">put</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">,</span> clothesTypes<span class=\"token punctuation\">.</span><span class=\"token function\">get</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">)</span><span class=\"token operator\">+</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n        clothesTypes<span class=\"token punctuation\">.</span><span class=\"token function\">put</span><span class=\"token punctuation\">(</span>type<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token keyword\">int</span> caseOfClothes <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token class-name\">Map<span class=\"token punctuation\">.</span>Entry</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">Integer</span><span class=\"token punctuation\">></span></span> entry <span class=\"token operator\">:</span> clothesTypes<span class=\"token punctuation\">.</span><span class=\"token function\">entrySet</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      caseOfClothes <span class=\"token operator\">*=</span> <span class=\"token punctuation\">(</span>entry<span class=\"token punctuation\">.</span><span class=\"token function\">getValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token keyword\">return</span> caseOfClothes<span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h2>배웠다</h2>\n<ul>\n<li>스트림을 잘 쓴 예제가 있었다.</li>\n<li>공부 좀 해야겠네..</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"java\"><pre class=\"language-java\"><code class=\"language-java\"><span class=\"token keyword\">return</span> <span class=\"token class-name\">Arrays</span><span class=\"token punctuation\">.</span><span class=\"token function\">stream</span><span class=\"token punctuation\">(</span>clothes<span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">collect</span><span class=\"token punctuation\">(</span><span class=\"token function\">groupingBy</span><span class=\"token punctuation\">(</span>p <span class=\"token operator\">-></span> p<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token function\">mapping</span><span class=\"token punctuation\">(</span>p <span class=\"token operator\">-></span> p<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> <span class=\"token function\">counting</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">values</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">stream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span>\n        <span class=\"token punctuation\">.</span><span class=\"token function\">collect</span><span class=\"token punctuation\">(</span><span class=\"token function\">reducing</span><span class=\"token punctuation\">(</span><span class=\"token number\">1L</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">)</span> <span class=\"token operator\">-></span> x <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>y <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">intValue</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span></code></pre></div>","fields":{"tagSlugs":["/tags/hash/"],"slug":"/algo/posts/2021-03-24--001"},"frontmatter":{"title":"[PROGRAMMERS] 위장","tags":["Hash"],"date":"2021-03-24","description":"Hash"}}},"pageContext":{"slug":"/algo/posts/2021-03-24--001"}},"staticQueryHashes":[]}