{"componentChunkName":"component---src-templates-post-template-jsx","path":"/algo/posts/2021-03-19--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":"0cbb9885-f88c-5fb9-aef0-28e1846dbddb","html":"<h2>문제</h2>\n<ul>\n<li>두 배열의 값을 중복 없이 나열,</li>\n</ul>\n<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/7b0bf9878623241187967ecbe65d4b4b/b6529/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: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 20.833333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAABJ0AAASdAHeZh94AAAAxElEQVQY00VQWxKEIAzz/reTFaioFNAZHwt6hGzR3dmPTJqkH2kbQz1a1aEzFi9tse4Hcjlx5Iz9nXFU5IK3oHoPF7i0wsYVxAvUmKCGCAoLGnIDtCX0w4g6D5MHx4SJw80/hDQ/HGfEtMD5gH4K8KInAY0MFr9xzsFaC0skTGhbBaUUXl0Hrc2Tia+1hjEGJHskV/V1X65iZswpYd83nGdBE0KEF5OlUWXvvbSIiAL+6jvzfOu/z0jSuubbtqHIm67rwgfW5yDOiTwoZgAAAABJRU5ErkJggg=='); 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/7b0bf9878623241187967ecbe65d4b4b/d9199/001-01.png\"\n        srcset=\"/devHistoryBlog/static/7b0bf9878623241187967ecbe65d4b4b/8ff5a/001-01.png 240w,\n/devHistoryBlog/static/7b0bf9878623241187967ecbe65d4b4b/e85cb/001-01.png 480w,\n/devHistoryBlog/static/7b0bf9878623241187967ecbe65d4b4b/d9199/001-01.png 960w,\n/devHistoryBlog/static/7b0bf9878623241187967ecbe65d4b4b/b6529/001-01.png 1049w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\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\">public</span> <span class=\"token keyword\">class</span> <span class=\"token class-name\">MergeNames</span> <span class=\"token punctuation\">{</span>\n    \n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">uniqueNames</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names1<span class=\"token punctuation\">,</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names2<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">throw</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">UnsupportedOperationException</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Waiting to be implemented.\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    \n    <span class=\"token keyword\">public</span> <span class=\"token keyword\">static</span> <span class=\"token keyword\">void</span> <span class=\"token function\">main</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> args<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names1 <span class=\"token operator\">=</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 string\">\"Ava\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Emma\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Olivia\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names2 <span class=\"token operator\">=</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 string\">\"Olivia\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Sophia\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Emma\"</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n        <span class=\"token class-name\">System</span><span class=\"token punctuation\">.</span>out<span class=\"token punctuation\">.</span><span class=\"token function\">println</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">.</span><span class=\"token function\">join</span><span class=\"token punctuation\">(</span><span class=\"token string\">\", \"</span><span class=\"token punctuation\">,</span> <span class=\"token class-name\">MergeNames</span><span class=\"token punctuation\">.</span><span class=\"token function\">uniqueNames</span><span class=\"token punctuation\">(</span>names1<span class=\"token punctuation\">,</span> names2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// should print Ava, Emma, Olivia, Sophia</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<p>\n  <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/35a31/001-02.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: 960px; margin-left: auto; margin-right: auto;\"\n  >\n    <span\n      class=\"gatsby-resp-image-background-image\"\n      style=\"padding-bottom: 22.916666666666668%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAABJ0AAASdAHeZh94AAAAxklEQVQY05WP207DMBBE8/9/BzwgITWXpkobx/GtcZPGjQ92EPACQox0JGt2vZopOjEglWZMiFEzJMQg6YVgWRbmed7x3u9oY+lEmkvFqZdM04RzDpP8/C6UGrhaizUG7yz+6lBScr70bNtGCAF/u5EVYyQ8HtzXwJr85b5+7azJi3GjeD28UdcNZVVzKKudsqo4Hlva9kTdNDw9v6BSg3zwLxWjVimuwaSUmfzxo4LBWrd7Whu67pwqfyf9if0g/9RvKT/9dz8MgsFXxKy7AAAAAElFTkSuQmCC'); 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 02\"\n        title=\"\"\n        src=\"/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/d9199/001-02.png\"\n        srcset=\"/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/8ff5a/001-02.png 240w,\n/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/e85cb/001-02.png 480w,\n/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/d9199/001-02.png 960w,\n/devHistoryBlog/static/c79573f3280e7354d0cbbafeb366fe34/35a31/001-02.png 1028w\"\n        sizes=\"(max-width: 960px) 100vw, 960px\"\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\">public</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> <span class=\"token function\">uniqueNames</span><span class=\"token punctuation\">(</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names1<span class=\"token punctuation\">,</span> <span class=\"token class-name\">String</span><span class=\"token punctuation\">[</span><span class=\"token punctuation\">]</span> names2<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\n    <span class=\"token class-name\">Set</span><span class=\"token generics\"><span class=\"token punctuation\">&lt;</span><span class=\"token class-name\">String</span><span class=\"token punctuation\">></span></span> uniqueNameSet <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">HashSet</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 keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">,</span> name1Len <span class=\"token operator\">=</span> names1<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">,</span> name2Len <span class=\"token operator\">=</span> names2<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">,</span> loopLen <span class=\"token operator\">=</span> <span class=\"token class-name\">Math</span><span class=\"token punctuation\">.</span><span class=\"token function\">max</span><span class=\"token punctuation\">(</span>name1Len<span class=\"token punctuation\">,</span> name2Len<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        i<span class=\"token operator\">&lt;</span> loopLen<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>name1Len <span class=\"token operator\">></span> i<span class=\"token punctuation\">)</span> uniqueNameSet<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>names1<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>name2Len <span class=\"token operator\">></span> i<span class=\"token punctuation\">)</span> uniqueNameSet<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span>names2<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</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> uniqueNameSet<span class=\"token punctuation\">.</span><span class=\"token function\">stream</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toArray</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 operator\">::</span><span class=\"token keyword\">new</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h2>배웠다</h2>\n<ul>\n<li>두 수의 크기를 비교할 때 삼항 연산자를 사용했었는데, Math.max() 를 사용하여 간단하게 처리할 수 있다.</li>\n<li>Set 자료구조<br>\n— HashSet은 객체의 hashCode() 를 이용하여 저장되어 있는 객체들의 해시 코드와 비교 후(중복 확인) 저정한다.</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>HashSet</td>\n<td>순서가 필요없는 데이터를 hash table에 저장. Set 중에 가장 성능이 좋음</td>\n</tr>\n<tr>\n<td>TreeSet</td>\n<td>저장된 데이터의 값에 따라 정렬됨. red-black tree 타입으로 값이 저장. HashSet보다 성능이 느림</td>\n</tr>\n<tr>\n<td>LinkedHashSet</td>\n<td>연결된 목록 타입으로 구현된 hash table에 데이터 저장. 저장된 순서에 따라 값이 정렬. 셋 중 가장 느림</td>\n</tr>\n</tbody>\n</table>","fields":{"tagSlugs":["/tags/arrays/"],"slug":"/algo/posts/2021-03-19--001"},"frontmatter":{"title":"[TESTDOME] Merge Names","tags":["Arrays"],"date":"2021-03-19","description":"Arrays, 배열"}}},"pageContext":{"slug":"/algo/posts/2021-03-19--001"}},"staticQueryHashes":[]}