{"componentChunkName":"component---src-templates-blog-post-js","path":"/problem-solve/릿코드(leetcode)---221.-maximal-square/","result":{"data":{"site":{"siteMetadata":{"title":"cckn's Devlog","author":"박대성","siteUrl":"https://cckn.dev","comment":{"disqusShortName":"","utterances":"cckn/devlog"},"sponsor":{"buyMeACoffeeId":""}}},"markdownRemark":{"id":"6fc09e91-5eff-5d3c-89de-27d84b4726b4","excerpt":"링크 Maximal Square  가장 큰 로 이루어진 정사각형의 크기를 반환하는 문제 풀이  재귀적으로 해결 이전에 파악한 사각형에서 대각선 아래의 요소를 확인하고 해당 요소의 위와 왼쪽 요소를 개 만큼 확인한다. 확인이 되지 않으면 그 전 크기를 반환한다.","html":"<p><a href=\"https://leetcode.com/problems/maximal-square/\">링크</a></p>\n<h2 id=\"maximal-square\" style=\"position:relative;\"><a href=\"#maximal-square\" aria-label=\"maximal square permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Maximal Square</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 420px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 82%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAQCAIAAACZeshMAAAACXBIWXMAAA7DAAAOwwHHb6hkAAACxklEQVQozy1Tf5OiOBDl+3+T26mau63b++NqztmrmZJ1dVYFVFRERRTCjwgihCSA2TfOdFFUV6f7db/OixaGYRRFlNLD4eB5XpIkaZrudjvf9+HEcbzdboMgQAIhxHXdj+TT6ZRlmYYDKWWe5+fzGZVVVRVFAUT8cSyEAGhd1wCCD3TOOXxEkKOh4HK5jEaj6/ValqVhGL1eDxEgDodDNEEq4g9fHuCcKT0ej4+PjzjFCO+dlVJARWekAhLNozguUc/YrZEn369lneZUtMILj6Ll9EK55GCh2baNAVC2WCxM00ziOMrz/fMz+/Z3O/6lXgfD2ZeBGq3VatpOdPsPU5nr21pv9CmfaugOGljAB8lzmu6jSJmmiqJdREQlTWVxVe83Xte0t5dXIeTBPdSqNjtDwz5BybIsFIO2vVj8Pxgo21ZpOpnPrrRYqLlQYvTzrZGy0/Wa81/DN0TM1tSwTHk3cEB/yTm73djwJ9tuWde2rBnVw7zOBJc1q8ref/W7J9M6NVpDW61WaI6B4YB2Rml8vZKnp3AySYoLJfQ57u3JLqN5GATkrz9JFOU03wTORIw/x14ul/hj7OB49MB5PlNpMlsvWV7O1ZwrPp1M26bpfuiM15ZhCcUtjP2xMEiquBs0dTqflWWpOF4dfXblMzUDw/Vs3cpGvfSlbJy5c1+YqaEMPRlj0CN8VpYXIXK9LweD9uQrZ/9G/nWUSxTxO999++qrE7lFy+795jTINbsbKuFDp5eicG27MIxu4yjHdcwfbrPzbwev84bhyL/5+FzheomnQXQQ43g8Lu+GtfX7fdSDy3ddX202NKVN0+ovOm4kjRISkKd/nj7lCXl1XQdt5ncDFtQLQYOIt9vlWUZI2DQNUtu2hZbLqlw7a9nIkIQa7hady7I6BQFol1XFWL33PIDCwyx4kh9vA9TAC0MBF88pjpPfiKNl/0Wll60AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 4\"\n        title=\"picture 4\"\n        src=\"/static/45669fb2ece99450296425e5c2a84b8c/d10fb/1620.png\"\n        srcset=\"/static/45669fb2ece99450296425e5c2a84b8c/5a46d/1620.png 300w,\n/static/45669fb2ece99450296425e5c2a84b8c/d10fb/1620.png 420w\"\n        sizes=\"(max-width: 420px) 100vw, 420px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>가장 큰 <code class=\"language-text\">1</code>로 이루어진 정사각형의 크기를 반환하는 문제</p>\n<h3 id=\"풀이\" style=\"position:relative;\"><a href=\"#%ED%92%80%EC%9D%B4\" aria-label=\"풀이 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>풀이</h3>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 726px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 23%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAIAAADKYVtkAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA2klEQVQY012Ny07DMBBF/f//wRJQhZDYlUV3PNRnRFVAShNNRdIQ1x47tscPkkaIirOYxZ25c1j25bn2MZC1Nv0S4zCX4BdAsiNnLRH1iQ/prfJZFZ4LAk5sthPFEW2nEDH9MbRf9/p+g7eLfqPH15rSppQp0eEolqVm8K1OQnZn/pkb6a5e9N0KP2sT/GBWlNbghMR34I9bZIjiAMA5vzTHc7uV3dNHO50XVaucNX0SYtrWLgP+sKqv5ydmjMnzvGmaS/MIkTNKQLnvb5xzY+ghV9PJbnIzW9c/hlca2RVvzLAAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"picture 5\"\n        title=\"picture 5\"\n        src=\"/static/47219daffe3d5b3059ad77e3d69d7e66/f8067/1624.png\"\n        srcset=\"/static/47219daffe3d5b3059ad77e3d69d7e66/5a46d/1624.png 300w,\n/static/47219daffe3d5b3059ad77e3d69d7e66/0a47e/1624.png 600w,\n/static/47219daffe3d5b3059ad77e3d69d7e66/f8067/1624.png 726w\"\n        sizes=\"(max-width: 726px) 100vw, 726px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<ul>\n<li>\n<p>재귀적으로 해결</p>\n<ul>\n<li>이전에 파악한 사각형에서 대각선 아래<code class=\"language-text\">(x+1, y+1)</code>의 요소를 확인하고 해당 요소의 위와 왼쪽 요소를 <code class=\"language-text\">depth</code>개 만큼 확인한다.</li>\n<li>확인이 되지 않으면 그 전 크기를 반환한다.</li>\n</ul>\n</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"ts\"><pre class=\"language-ts\"><code class=\"language-ts\"><span class=\"token keyword\">function</span> <span class=\"token function\">maximalSquare</span><span class=\"token punctuation\">(</span>matrix<span class=\"token operator\">:</span> <span class=\"token builtin\">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 operator\">:</span> <span class=\"token builtin\">number</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">const</span> m <span class=\"token operator\">=</span> matrix<span class=\"token punctuation\">.</span>length\n  <span class=\"token keyword\">const</span> n <span class=\"token operator\">=</span> matrix<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>length\n  <span class=\"token keyword\">let</span> max <span class=\"token operator\">=</span> <span class=\"token number\">0</span>\n\n  <span class=\"token keyword\">const</span> getSize <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>x<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">,</span> y<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">,</span> depth<span class=\"token operator\">:</span> <span class=\"token builtin\">number</span><span class=\"token punctuation\">)</span><span class=\"token operator\">:</span> <span class=\"token builtin\">number</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>x <span class=\"token operator\">>=</span> m <span class=\"token operator\">||</span> y <span class=\"token operator\">>=</span> n<span class=\"token punctuation\">)</span> <span class=\"token keyword\">return</span> depth\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>matrix<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span> <span class=\"token operator\">!==</span> <span class=\"token string\">'1'</span><span class=\"token punctuation\">)</span> <span class=\"token keyword\">return</span> depth\n\n    <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> depth <span class=\"token operator\">+</span> <span class=\"token number\">1</span><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>matrix<span class=\"token punctuation\">[</span>x<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>y <span class=\"token operator\">-</span> i<span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">'0'</span> <span class=\"token operator\">||</span> matrix<span class=\"token punctuation\">[</span>x <span class=\"token operator\">-</span> i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>y<span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">'0'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">return</span> depth\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n\n    <span class=\"token keyword\">return</span> <span class=\"token function\">getSize</span><span class=\"token punctuation\">(</span>x <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> y <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> depth <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span>\n  <span class=\"token punctuation\">}</span>\n\n  <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</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> matrix<span class=\"token punctuation\">.</span>length<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\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">let</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> matrix<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> j<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>matrix<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">===</span> <span class=\"token string\">'1'</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        max <span class=\"token operator\">=</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">max</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> max<span class=\"token punctuation\">)</span>\n        <span class=\"token keyword\">const</span> size <span class=\"token operator\">=</span> <span class=\"token function\">getSize</span><span class=\"token punctuation\">(</span>i<span class=\"token punctuation\">,</span> j<span class=\"token punctuation\">,</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span>\n        max <span class=\"token operator\">=</span> Math<span class=\"token punctuation\">.</span><span class=\"token function\">max</span><span class=\"token punctuation\">(</span>max<span class=\"token punctuation\">,</span> size <span class=\"token operator\">*</span> size<span class=\"token punctuation\">)</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">return</span> max\n<span class=\"token punctuation\">}</span></code></pre></div>","frontmatter":{"title":"릿코드(Leetcode) - 221. Maximal Square","date":"March 14, 2021"}}},"pageContext":{"slug":"/problem-solve/릿코드(leetcode)---221.-maximal-square/","previous":{"fields":{"slug":"/problem-solve/릿코드(leetcode)---200.-number-of-islands/"},"frontmatter":{"title":"릿코드(Leetcode) - 200. Number of Islands","category":"problem-solve","draft":false}},"next":{"fields":{"slug":"/devops/마이크로서비스-아키텍처에서의-메세지큐의-필요성/"},"frontmatter":{"title":"(번역)마이크로서비스 아키텍처에서의 메세지큐의 필요성","category":"devops","draft":false}}}},"staticQueryHashes":["3128451518","521680639"]}