<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>승열의 프로그래밍 시네마</title>
    <link>https://mark-theater.tistory.com/</link>
    <description>코드 유랑자 승열의 프로그래밍 일지를 남기는 공간입니다.
</description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 08:08:01 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>코드 유랑자 승열</managingEditor>
    <image>
      <title>승열의 프로그래밍 시네마</title>
      <url>https://tistory1.daumcdn.net/tistory/7307843/attach/9b60cf18c268414cb709e57c15b54dda</url>
      <link>https://mark-theater.tistory.com</link>
    </image>
    <item>
      <title>LeetCode 1448. Count Good Nodes in Binary Tree</title>
      <link>https://mark-theater.tistory.com/377</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;1448. Count Good Nodes in Binary Tree&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1670&quot; data-origin-height=&quot;1766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dC4plM/dJMb996f4JO/CNLrDIXXZ0lWCXvll0lvr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dC4plM/dJMb996f4JO/CNLrDIXXZ0lWCXvll0lvr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dC4plM/dJMb996f4JO/CNLrDIXXZ0lWCXvll0lvr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdC4plM%2FdJMb996f4JO%2FCNLrDIXXZ0lWCXvll0lvr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1670&quot; height=&quot;1766&quot; data-origin-width=&quot;1670&quot; data-origin-height=&quot;1766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The requirements of this problems are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;A node is called good if its value is the largest on the path from the root to that node.&lt;/li&gt;
&lt;li&gt;Return the number of good nodes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satifsy these requirments, I used a preorder traversal with a stack.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, initialize &lt;code&gt;stack&lt;/code&gt; as a list containing &lt;code&gt;root&lt;/code&gt; and &lt;code&gt;root.val&lt;/code&gt; and set &lt;code&gt;good&lt;/code&gt; as 0.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Each element in the &lt;code&gt;stack&lt;/code&gt; stores the current node and the maximum value seen so far on its path.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While &lt;code&gt;stack&lt;/code&gt; is not empty,do the following steps:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Pop the last &lt;code&gt;node&lt;/code&gt; and &lt;code&gt;maximum&lt;/code&gt; from &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the current value of the node is greater or equal to &lt;code&gt;maximum&lt;/code&gt;, increase &lt;code&gt;good&lt;/code&gt; by 1 and update &lt;code&gt;maximum&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the node has a right child, append it with maximum to &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the node has a left child, append it with maximum to &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By pushing the right child first, the left subtree is processed first.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;This keeps the comparison consistent with a preorder traversal.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of the loop, return &lt;code&gt;good&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;class Solution(object):
    def goodNodes(self, root):
        stack = [(root, root.val)]
        good = 0

        while stack:
            node, maximum = stack.pop()

            if node.val &amp;gt;= maximum:
                good += 1
                maximum = node.val


            if node.right:
                stack.append((node.right, maximum))
            if node.left:
                stack.append((node.left, maximum))

        return good&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769346198970&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/brE5no/dJMb85WNBX4/mkZND4hmL8pjMbKvvF4xF0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/n5YWm/dJMb81GRwIc/AQIa8UqLsp6WPnQvZfeGuK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/brE5no/dJMb85WNBX4/mkZND4hmL8pjMbKvvF4xF0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/n5YWm/dJMb81GRwIc/AQIa8UqLsp6WPnQvZfeGuK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/377</guid>
      <comments>https://mark-theater.tistory.com/377#entry377comment</comments>
      <pubDate>Sun, 25 Jan 2026 22:03:27 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 872. Leaf-Similar Trees</title>
      <link>https://mark-theater.tistory.com/376</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;872. Leaf-Similar Trees&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;1774&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pOCYi/dJMcafZGDVM/9wybrftkcKFwPz6MFHmWk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pOCYi/dJMcafZGDVM/9wybrftkcKFwPz6MFHmWk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pOCYi/dJMcafZGDVM/9wybrftkcKFwPz6MFHmWk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpOCYi%2FdJMcafZGDVM%2F9wybrftkcKFwPz6MFHmWk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1438&quot; height=&quot;1774&quot; data-origin-width=&quot;1438&quot; data-origin-height=&quot;1774&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return &lt;code&gt;True&lt;/code&gt; if the leaf of sequences of &lt;code&gt;root1&lt;/code&gt; and &lt;code&gt;root2&lt;/code&gt; are the same otherwise return &lt;code&gt;False&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this requirement, I used a preorder traversal with a stack.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since we need to process two binary trees, I created a helper function getLeaves.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, initialize &lt;code&gt;stack&lt;/code&gt; as a list containing &lt;code&gt;root&lt;/code&gt;, and set &lt;code&gt;leaves&lt;/code&gt; as an empty list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If root is None, return leaves because the tree is empty.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While &lt;code&gt;stack&lt;/code&gt;is not empty, do the following steps:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Pop the last node from &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the current node has no left and right children, append its value to &lt;code&gt;leaves&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Otherwise, if the node has a right child, append it to &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the node has a left child, append it to &lt;code&gt;stack&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By pushing the right child first, the left subtree is processed first.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This keeps the leaf order consistent with a preorder traversal.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of the loop, return the leaves.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Outside of &lt;code&gt;getLeaves&lt;/code&gt;, call it for both trees and compare the results.&lt;br /&gt;If both leaf lists are the same, return &lt;code&gt;True&lt;/code&gt; otherwise return &lt;code&gt;False&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;class Solution(object):
    def leafSimilar(self, root1, root2):
        def getLeaves(root):
            stack = [root]
            leaves = []
            if not stack:
                return leaves

            while stack:
                node = stack.pop()
                if not node.left and not node.right:
                    leaves.append(node.val)
                else:
                    if node.right:
                        stack.append(node.right)
                    if node.left:
                        stack.append(node.left)

            return leaves

        tree1 = getLeaves(root1)
        tree2 = getLeaves(root2)
        return tree1 == tree2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769261308145&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/v7vsp/dJMb9iaLsk1/kQJ8PqIco6viFBqqPHRk9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bu0e08/dJMb86OV6Tz/3XdIgaLwKxHLfpt49adofk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/v7vsp/dJMb9iaLsk1/kQJ8PqIco6viFBqqPHRk9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bu0e08/dJMb86OV6Tz/3XdIgaLwKxHLfpt49adofk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/376</guid>
      <comments>https://mark-theater.tistory.com/376#entry376comment</comments>
      <pubDate>Sat, 24 Jan 2026 22:28:33 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 104. Maximum Depth of Binary Tree</title>
      <link>https://mark-theater.tistory.com/375</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;104. Maximum Depth of Binary Tree&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1766&quot; data-origin-height=&quot;1698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JI1LT/dJMcacom7nD/TmXP0MSKe0Lo60nzNyLMv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JI1LT/dJMcacom7nD/TmXP0MSKe0Lo60nzNyLMv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JI1LT/dJMcacom7nD/TmXP0MSKe0Lo60nzNyLMv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJI1LT%2FdJMcacom7nD%2FTmXP0MSKe0Lo60nzNyLMv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1766&quot; height=&quot;1698&quot; data-origin-width=&quot;1766&quot; data-origin-height=&quot;1698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return the maximum depth of given binary tree.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this requirement, I used level-order-traversal with a queue.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, it &lt;code&gt;root&lt;/code&gt; is None, return 0 because the tree is empty.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Initialize &lt;code&gt;value&lt;/code&gt; as a list containing &lt;code&gt;root&lt;/code&gt;, and set &lt;code&gt;depth&lt;/code&gt; to 0.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The list &lt;code&gt;value&lt;/code&gt; stores all nodes at the current level.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;When &lt;code&gt;value&lt;/code&gt; becomes empty, it means all nodes have been processed.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While &lt;code&gt;value&lt;/code&gt; is not empty, do the following steps:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Increase &lt;code&gt;depth&lt;/code&gt; by 1.&lt;/li&gt;
&lt;li&gt;Store the current length of &lt;code&gt;value&lt;/code&gt; in &lt;code&gt;level&lt;/code&gt; which represents how many nodes exist at the current depth.&lt;/li&gt;
&lt;li&gt;Repeat the folowing stepts &lt;code&gt;level&lt;/code&gt; times:
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Pop the first node from &lt;code&gt;value&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the node has left child, append it to &lt;code&gt;value&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If the node has right child, append it to &lt;code&gt;value&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This way, each iteration of the &lt;code&gt;while&lt;/code&gt; loop processes exactly one level of the tree.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When the loop ends, return &lt;code&gt;depth&lt;/code&gt; as the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;crmsh&quot;&gt;&lt;code&gt;class Solution(object):
    def maxDepth(self, root):
        if root is None:
            return 0

        value = [root]
        depth = 0

        while value:
            depth += 1
            level = len(value)

            for i in range(level):
                node = value.pop(0)

                if node.left:
                    value.append(node.left)
                if node.right:
                    value.append(node.right)
        return depth&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769260232147&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/v7vsp/dJMb9iaLsk1/kQJ8PqIco6viFBqqPHRk9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bu0e08/dJMb86OV6Tz/3XdIgaLwKxHLfpt49adofk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/v7vsp/dJMb9iaLsk1/kQJ8PqIco6viFBqqPHRk9k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bu0e08/dJMb86OV6Tz/3XdIgaLwKxHLfpt49adofk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/375</guid>
      <comments>https://mark-theater.tistory.com/375#entry375comment</comments>
      <pubDate>Sat, 24 Jan 2026 22:10:35 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 2130. Maximum Twin Sum of a Linked List</title>
      <link>https://mark-theater.tistory.com/374</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;2130. Maximum Twin Sum of a Linked List&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;1862&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SrmFj/dJMb99SIw4p/SgsaKkecTrkE7S1yDfjfl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SrmFj/dJMb99SIw4p/SgsaKkecTrkE7S1yDfjfl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SrmFj/dJMb99SIw4p/SgsaKkecTrkE7S1yDfjfl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSrmFj%2FdJMb99SIw4p%2FSgsaKkecTrkE7S1yDfjfl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1640&quot; height=&quot;1862&quot; data-origin-width=&quot;1640&quot; data-origin-height=&quot;1862&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;The linked list has an even legnth.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;i&lt;/code&gt;th node is paired with the &lt;code&gt;(length-1-i)&lt;/code&gt;th node.&lt;/li&gt;
&lt;li&gt;Return the maximum sum among all twin pairs.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used a two-pointer approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, I split the problem into three steps.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Find the middle nodes of the list.&lt;/li&gt;
&lt;li&gt;Reverse the second half of the list.&lt;/li&gt;
&lt;li&gt;Compare the two halves node by node and track the maximum sum.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To find the middle, I use &lt;code&gt;slow&lt;/code&gt; and &lt;code&gt;fast&lt;/code&gt; pointer.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;slow&lt;/code&gt; starts as &lt;code&gt;head&lt;/code&gt; and moves single step at a time.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fast&lt;/code&gt; starts as &lt;code&gt;head&lt;/code&gt; and moves two steps at a time.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When &lt;code&gt;fast&lt;/code&gt; reaches the end, &lt;code&gt;slow&lt;/code&gt; points to the middle of the list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To reverse the second half, initialize three pointers.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;prev&lt;/code&gt; starts as None.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rev&lt;/code&gt; starts as &lt;code&gt;slow&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ahead&lt;/code&gt; is used to store the next node during iteration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;During reverse is like below.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Store &lt;code&gt;rev.next&lt;/code&gt; in &lt;code&gt;ahead&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Change &lt;code&gt;rev.next&lt;/code&gt; to point to &lt;code&gt;prev&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Move &lt;code&gt;prev&lt;/code&gt; to &lt;code&gt;rev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Move &lt;code&gt;rev&lt;/code&gt; to &lt;code&gt;ahead&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Repeat until the second half is fully reversed.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, &lt;code&gt;prev&lt;/code&gt; points to the head of the reversed half.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Now, simply compare the two halves.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In each iteration, add &lt;code&gt;prev.val&lt;/code&gt; and &lt;code&gt;head.val&lt;/code&gt; and update when &lt;code&gt;result&lt;/code&gt; is smaller than the sum.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of the loop, return the &lt;code&gt;result&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;
class Solution(object):
    def pairSum(self, head):

        slow = fast = head
        result = 0

        while fast:
            fast = fast.next.next
            slow = slow.next

        prev = None
        rev = slow

        while rev:
            ahead = rev.next
            rev.next = prev
            prev = rev
            rev = ahead

        while prev:
            temp = prev.val+head.val
            if temp &amp;gt; result:
                result = temp
            prev = prev.next
            head = head.next

        return result 
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769157136816&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ck6N3v/dJMb9kTXb6T/mTxI7aXB9k969GIiJOQpdK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/JaYM7/dJMb8Z3lsiP/lXDYciU7NtZxFSkI8wSVaK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ck6N3v/dJMb9kTXb6T/mTxI7aXB9k969GIiJOQpdK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/JaYM7/dJMb8Z3lsiP/lXDYciU7NtZxFSkI8wSVaK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/374</guid>
      <comments>https://mark-theater.tistory.com/374#entry374comment</comments>
      <pubDate>Fri, 23 Jan 2026 17:33:28 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 206. Reverse Linked List</title>
      <link>https://mark-theater.tistory.com/373</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;206. Reverse Linked List&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return the reversed linked list.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this problem, I used a two-pointer approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, to reverse the list, at least two nodes are nedded.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;So if &lt;code&gt;head&lt;/code&gt; is None or &lt;code&gt;head.next&lt;/code&gt; is None, return &lt;code&gt;head&lt;/code&gt; directly.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In the main logic, I initialize the two pointers &lt;code&gt;prev&lt;/code&gt; and &lt;code&gt;ahead&lt;/code&gt;.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;prev&lt;/code&gt; starts as None, because the first node will point to None after reversing.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ahead&lt;/code&gt; starts at &lt;code&gt;head.next&lt;/code&gt; which stores the next node before the link is changed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I use while loop.&lt;br /&gt;Since &lt;code&gt;ahead&lt;/code&gt; always represent the next node of &lt;code&gt;head&lt;/code&gt;, when &lt;code&gt;ahead&lt;/code&gt; reaches None, this means &lt;code&gt;head&lt;/code&gt; is pointing to the last node.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To reverse the list, the key step is to change &lt;code&gt;head.next&lt;/code&gt; to point to &lt;code&gt;prev&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, move the pointers.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Move &lt;code&gt;prev&lt;/code&gt; to &lt;code&gt;head&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Move &lt;code&gt;head&lt;/code&gt; to &lt;code&gt;ahead&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Move &lt;code&gt;ahead&lt;/code&gt; to &lt;code&gt;ahead.next&lt;/code&gt;for the next iteration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After the loop, when I return &lt;code&gt;head&lt;/code&gt;, it just return last node.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The problem is, at the end of the iteration, &lt;code&gt;head&lt;/code&gt; points last node and I forgot to connect to &lt;code&gt;prev&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;So I set &lt;code&gt;head.next = prev&lt;/code&gt; to complete the reversal.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Actually, I misunderstood the role of head at first.&lt;br /&gt;I thought it always represented the first node, but it is also just a pointer that moves through the list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;class Solution(object):
    def reverseList(self, head):
        &quot;&quot;&quot;
        :type head: Optional[ListNode]
        :rtype: Optional[ListNode]
        &quot;&quot;&quot;
        if not head or not head.next:
            return head

        prev = None
        ahead = head.next

        while ahead:
            head.next = prev
            prev = head
            head = ahead
            ahead = ahead.next
        head.next = prev

        return head&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769086723664&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/njonG/dJMb886240p/TLGE2bEAajNbbDb90cY0r0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Z8N2x/dJMb83ScW6H/Y4kkRYl7qYzpBb15K43eIK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/njonG/dJMb886240p/TLGE2bEAajNbbDb90cY0r0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Z8N2x/dJMb83ScW6H/Y4kkRYl7qYzpBb15K43eIK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/373</guid>
      <comments>https://mark-theater.tistory.com/373#entry373comment</comments>
      <pubDate>Thu, 22 Jan 2026 21:59:08 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 328. Odd Even Linked List</title>
      <link>https://mark-theater.tistory.com/372</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;328. Odd Even Linked List&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;1670&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cE7pII/dJMcahJYy6E/zjhqTlgLiKZNsDS5q66gxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cE7pII/dJMcahJYy6E/zjhqTlgLiKZNsDS5q66gxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cE7pII/dJMcahJYy6E/zjhqTlgLiKZNsDS5q66gxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE7pII%2FdJMcahJYy6E%2FzjhqTlgLiKZNsDS5q66gxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1880&quot; height=&quot;1670&quot; data-origin-width=&quot;1880&quot; data-origin-height=&quot;1670&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Seperate the linked list into odd and even positions.&lt;/li&gt;
&lt;li&gt;After seperating them, place the odd group first and then even group after it.&lt;/li&gt;
&lt;li&gt;Return the reordered list.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used the two-pointer approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, to seperate off and even positions, we need at least two nodes.&lt;br /&gt;So if &lt;code&gt;head&lt;/code&gt; is None or &lt;code&gt;head.next&lt;/code&gt; is None, return &lt;code&gt;head&lt;/code&gt; directly.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In the main logic, I initialize &lt;code&gt;odd&lt;/code&gt;, &lt;code&gt;even&lt;/code&gt;, and &lt;code&gt;even_head&lt;/code&gt;.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;odd&lt;/code&gt; starts at &lt;code&gt;head&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;even&lt;/code&gt; starts at &lt;code&gt;head.next&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;even_head&lt;/code&gt; stores the first node of the even group, so that I can connect the odd group to the even group at the end.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;During grouping, the next node of &lt;code&gt;odd&lt;/code&gt; should be the next odd node, and the next node of &lt;code&gt;even&lt;/code&gt; should be the next even node.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;So I reconnect the links by alternating the pointers:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;odd.next&lt;/code&gt; is connected to the next odd node &lt;code&gt;even.next&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;even.next&lt;/code&gt; is connected to the next even node &lt;code&gt;odd.next&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By reapeating this process, all nodes are grouped into the odd list and the even list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I use a &lt;code&gt;while&lt;/code&gt; loop for thos.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since the even group ends first, I stop when &lt;code&gt;even&lt;/code&gt; is None or &lt;code&gt;even.next&lt;/code&gt; is None.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Finally, to combine the two groups by connect &lt;code&gt;odd.next&lt;/code&gt; to &lt;code&gt;even_head&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Then return &lt;code&gt;head&lt;/code&gt; as the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;xquery&quot;&gt;&lt;code&gt;class Solution(object):
    def oddEvenList(self, head):

        if not head or not head.next:
            return head

        odd = head
        even_head = even = head.next

        while even and even.next:
            odd.next = even.next
            odd = odd.next

            even.next = odd.next
            even = even.next

        odd.next = even_head
        return head&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1768999183114&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cVR6aU/dJMb8SpBXqw/6QY1FYaj3H7gpQwamR4ROK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/c5egzR/dJMb8YpPqSB/49pRkMCwcl3eiMwiKo4dW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cVR6aU/dJMb8SpBXqw/6QY1FYaj3H7gpQwamR4ROK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/c5egzR/dJMb8YpPqSB/49pRkMCwcl3eiMwiKo4dW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/372</guid>
      <comments>https://mark-theater.tistory.com/372#entry372comment</comments>
      <pubDate>Wed, 21 Jan 2026 21:39:45 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 2095. Delete the Middle Node of a Linked List</title>
      <link>https://mark-theater.tistory.com/371</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Delete the Middle Node of a Linked List&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Problem&lt;/h1&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;You are given the head of a linked list. Delete the middle node, and return the head of the modified linked list.

The middle node of a linked list of size n is the &amp;lfloor;n / 2&amp;rfloor;th node from the start using 0-based indexing, where &amp;lfloor;x&amp;rfloor; denotes the largest integer less than or equal to x.

    For n = 1, 2, 3, 4, and 5, the middle nodes are 0, 1, 1, 2, and 2, respectively.



Example 1:

Input: head = [1,3,4,7,1,2,6]
Output: [1,3,4,1,2,6]
Explanation:
The above figure represents the given linked list. The indices of the nodes are written below.
Since n = 7, node 3 with value 7 is the middle node, which is marked in red.
We return the new list after removing this node. 

Example 2:

Input: head = [1,2,3,4]
Output: [1,2,4]
Explanation:
The above figure represents the given linked list.
For n = 4, node 2 with value 3 is the middle node, which is marked in red.

Example 3:

Input: head = [2,1]
Output: [2]
Explanation:
The above figure represents the given linked list.
For n = 2, node 1 with value 1 is the middle node, which is marked in red.
Node 0 with value 2 is the only node remaining after removing node 1.



Constraints:

    The number of nodes in the list is in the range [1, 105].
    1 &amp;lt;= Node.val &amp;lt;= 105

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Delete the middle node using 0-based indexing.&lt;/li&gt;
&lt;li&gt;Return the modified linked list after removing the middle node.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used a two-pointer approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, initialize three pointers : &lt;code&gt;left&lt;/code&gt;, &lt;code&gt;right&lt;/code&gt; and &lt;code&gt;prev&lt;/code&gt;, all pointing to &lt;code&gt;head&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Using the two-pointer, when tthe &lt;code&gt;left&lt;/code&gt; moves to the next node, the &lt;code&gt;right&lt;/code&gt; moves two steps at a time.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Therefore, when &lt;code&gt;right&lt;/code&gt; reaches the end of the linked list, the &lt;code&gt;left&lt;/code&gt; is located at the middle node.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;During the iteration, &lt;code&gt;prev&lt;/code&gt; always keeps tracking just before &lt;code&gt;left&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After the end of the loop, &lt;code&gt;left&lt;/code&gt; points the middle node and &lt;code&gt;prev.next&lt;/code&gt; points to &lt;code&gt;left&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By setting &lt;code&gt;prev.next = left.next&lt;/code&gt;, the middle node is skipped and removed from the linked list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since a linked list is connected through &lt;code&gt;next&lt;/code&gt; references, once the link is changed, the removed node is no longer reachable and will be deleted by garbage collector.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the list contains only one node or is empty, return &lt;code&gt;None&lt;/code&gt; directly.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;class Solution(object):
    def deleteMiddle(self, head):
        left = head
        right = head
        prev = head

        if not head or not head.next:  
            return None

        while right and right.next:
            prev = left
            left = left.next
            right = right.next.next

        prev.next = left.next

        return head
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/371</guid>
      <comments>https://mark-theater.tistory.com/371#entry371comment</comments>
      <pubDate>Sat, 17 Jan 2026 00:17:14 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 649. Dota2 Senate</title>
      <link>https://mark-theater.tistory.com/370</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;649. Dota2 Senate&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Problem&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2168&quot; data-origin-height=&quot;1568&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eDH7zo/dJMcagKZMgs/AlbWF8GVLjrpuM7ngF05G1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eDH7zo/dJMcagKZMgs/AlbWF8GVLjrpuM7ngF05G1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eDH7zo/dJMcagKZMgs/AlbWF8GVLjrpuM7ngF05G1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeDH7zo%2FdJMcagKZMgs%2FAlbWF8GVLjrpuM7ngF05G1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2168&quot; height=&quot;1568&quot; data-origin-width=&quot;2168&quot; data-origin-height=&quot;1568&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Solution&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;The senate is represesnted as a string consisting of &lt;code&gt;R&lt;/code&gt; and &lt;code&gt;D&lt;/code&gt;, which represent &lt;code&gt;Radiant&lt;/code&gt; and &lt;code&gt;Dire&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Each senator can ban one opponent senator in order.&lt;/li&gt;
&lt;li&gt;The process continues until only one group remains.&lt;/li&gt;
&lt;li&gt;Return the group that finally left.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used queue-based approach without importing any external libraries.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, I separate the senators into two lists, one for &lt;code&gt;Radiant&lt;/code&gt; and one for &lt;code&gt;Dire&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Using &lt;code&gt;enumerate&lt;/code&gt;, I store the index of each senator in the list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After storing all senators, I initialize &lt;code&gt;idx&lt;/code&gt; as &lt;code&gt;0&lt;/code&gt; and start comparing the senators.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While &lt;code&gt;idx&lt;/code&gt; is smaller than the length of one of the lists, I compare &lt;code&gt;r[idx]&lt;/code&gt; and &lt;code&gt;d[idx]&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If &lt;code&gt;r[idx]&lt;/code&gt; is smaller, this means the Radiant senator acts first and ban the Dire senator.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, the Radiant senator will appear again in the next round, so I append &lt;code&gt;r[idx] + len(senate)&lt;/code&gt; ro the Radiant list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If &lt;code&gt;d[idx]&lt;/code&gt; is smaller, the same process is applied to the Dire list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After each comparison, increase &lt;code&gt;idx&lt;/code&gt; by &lt;code&gt;1&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When &lt;code&gt;idx&lt;/code&gt; reaches the length of one of the lists, this means that group has no more senators to compare.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, the group with the larger list survives and is returned as the final result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;class Solution(object):
    def predictPartyVictory(self, senate):
        r = []
        d = []

        for i, j in enumerate(senate):
            if j == &quot;R&quot;:
                r.append(i)
            else:
                d.append(i)

        idx = 0
        while idx &amp;lt; len(r) and idx &amp;lt; len(d):
            if r[idx] &amp;lt; d[idx]:
                r.append(r[idx] + len(senate))
            else:
                d.append(d[idx] + len(senate))
            idx += 1

        return &quot;Radiant&quot; if len(r) &amp;gt; len(d) else &quot;Dire&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1768047582683&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nNFqR/hyZRpE2Wv7/hkBSM039tLm8Asq0NdXcf1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/m4ans/hyZRl3IRb2/oi8swGAUIgqyxMHacE8kHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nNFqR/hyZRpE2Wv7/hkBSM039tLm8Asq0NdXcf1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/m4ans/hyZRl3IRb2/oi8swGAUIgqyxMHacE8kHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/370</guid>
      <comments>https://mark-theater.tistory.com/370#entry370comment</comments>
      <pubDate>Sat, 10 Jan 2026 21:07:13 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 933. Number of Recent Calls</title>
      <link>https://mark-theater.tistory.com/369</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;933. Number of Recent Calls&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;vhdl&quot;&gt;&lt;code&gt;You have a RecentCounter class which counts the number of recent requests within a certain time frame.

Implement the RecentCounter class:

    RecentCounter() Initializes the counter with zero recent requests.
    int ping(int t) Adds a new request at time t, where t represents some time in milliseconds, and returns the number of requests that has happened in the past 3000 milliseconds (including the new request). Specifically, return the number of requests that have happened in the inclusive range [t - 3000, t].

It is guaranteed that every call to ping uses a strictly larger value of t than the previous call.



Example 1:

Input
[&quot;RecentCounter&quot;, &quot;ping&quot;, &quot;ping&quot;, &quot;ping&quot;, &quot;ping&quot;]
[[], [1], [100], [3001], [3002]]
Output
[null, 1, 2, 3, 3]

Explanation
RecentCounter recentCounter = new RecentCounter();
recentCounter.ping(1);     // requests = [1], range is [-2999,1], return 1
recentCounter.ping(100);   // requests = [1, 100], range is [-2900,100], return 2
recentCounter.ping(3001);  // requests = [1, 100, 3001], range is [1,3001], return 3
recentCounter.ping(3002);  // requests = [1, 100, 3001, 3002], range is [2,3002], return 3



Constraints:

    1 &amp;lt;= t &amp;lt;= 109
    Each test case will call ping with strictly increasing values of t.
    At most 104 calls will be made to ping.

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this probem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Initialize the counter with zero recent requests.&lt;/li&gt;
&lt;li&gt;Add a new request at time &lt;code&gt;t&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Return the number of requests within the inclusive range &lt;code&gt;[t - 3000, 3]&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used a queue-based approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;I do not use any external libraries to solve problems&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, the &lt;code&gt;RecentCounter&lt;/code&gt; class must be initialized, so I create a queue &lt;code&gt;q&lt;/code&gt; in the &lt;code&gt;__init__&lt;/code&gt; method.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I initialize &lt;code&gt;q&lt;/code&gt; as a list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Although it is possible to import &lt;code&gt;collections&lt;/code&gt; and use &lt;code&gt;deque&lt;/code&gt;, I choose to use a list to solve the problem without impoting any external libraries.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When the program starts, &lt;code&gt;ping&lt;/code&gt; is called one by one.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Each incomming time &lt;code&gt;t&lt;/code&gt; is appended to the list &lt;code&gt;q&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since append always adds elements in order, and the problem gurantees that &lt;code&gt;t&lt;/code&gt; is strictly increasing, smaller ping values are always stored at the front of the list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While the first element of &lt;code&gt;q&lt;/code&gt; is smaller than &lt;code&gt;t - 3000&lt;/code&gt;, it is no loger valid, so I remove it from the queue.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After removing all invalid values, the remaining elements in &lt;code&gt;q&lt;/code&gt; represent the number of recent calls.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;According to the requirements, I return the length of &lt;code&gt;q&lt;/code&gt;, not the queue itself.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;class RecentCounter(object):

    def __init__(self):
        self.q = []

    def ping(self, t):
        self.q.append(t)
        while self.q[0] &amp;lt; t - 3000:
            self.q.pop(0)

        return len(self.q)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767939806183&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxUOpP/hyZQROY2aZ/NGMWd88JL7JxeSVphpzp61/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/c60WKW/hyZRb2rR7E/QkwThoRpzqigxdBVMe8b41/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxUOpP/hyZQROY2aZ/NGMWd88JL7JxeSVphpzp61/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/c60WKW/hyZRb2rR7E/QkwThoRpzqigxdBVMe8b41/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/369</guid>
      <comments>https://mark-theater.tistory.com/369#entry369comment</comments>
      <pubDate>Fri, 9 Jan 2026 15:23:37 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 394. Decode String</title>
      <link>https://mark-theater.tistory.com/368</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;394. Decode String&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Given an encoded string, return its decoded string.

The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer.

You may assume that the input string is always valid; there are no extra white spaces, square brackets are well-formed, etc. Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k. For example, there will not be input like 3a or 2[4].

The test cases are generated so that the length of the output will never exceed 105.



Example 1:

Input: s = &quot;3[a]2[bc]&quot;
Output: &quot;aaabcbc&quot;

Example 2:

Input: s = &quot;3[a2[c]]&quot;
Output: &quot;accaccacc&quot;

Example 3:

Input: s = &quot;2[abc]3[cd]ef&quot;
Output: &quot;abcabccdcdcdef&quot;



Constraints:

    1 &amp;lt;= s.length &amp;lt;= 30
    s consists of lowercase English letters, digits, and square brackets '[]'.
    s is guaranteed to be a valid input.
    All the integers in s are in the range [1, 300].

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Value of &lt;code&gt;s&lt;/code&gt; is made of the &lt;code&gt;k[string]&lt;/code&gt; format.&lt;/li&gt;
&lt;li&gt;Decode the string by multiplying string &lt;code&gt;k&lt;/code&gt; times.&lt;/li&gt;
&lt;li&gt;Return final decoded string.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this requirements, I used a stack approach with multiple lists.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The elements of &lt;code&gt;s&lt;/code&gt; are digits, characters and brackets.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, while iterating though the string, append each element to the result list as long as the element is not a closing bracket.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;ex)
s = &quot;21[abc]3[cd]ef&quot;
result = [&quot;2&quot;, &quot;1&quot;, &quot;[&quot;, &quot;a&quot; , &quot;b&quot;, &quot;c&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Next, when a closing bracket is encountered, move characters from &lt;code&gt;result&lt;/code&gt; to the &lt;code&gt;chars&lt;/code&gt; list while &lt;code&gt;result[-1] != &quot;[&quot;&lt;/code&gt;, and pop each character from &lt;code&gt;result&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;ex)
s = &quot;21[abc]3[cd]ef&quot;
result = [&quot;2&quot;, &quot;1&quot;, &quot;[&quot;]
chars = [&quot;c&quot;, &quot;b&quot;, &quot;a&quot;]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since the stack stores elements in reverse order, reverse &lt;code&gt;chars&lt;/code&gt; to restore the correct order.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Afther that, pop the opening bracket.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Then, while &lt;code&gt;result&lt;/code&gt; is not empty and &lt;code&gt;result[-1].isdigit()&lt;/code&gt; is true, build the digit string using &lt;code&gt;str_num = result.pop() + str_num&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The reason why adding digits this way is that stack pops elements in reverse order.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;For example, &lt;code&gt;21&lt;/code&gt; is stored as &lt;code&gt;&quot;2&quot;&lt;/code&gt; then &lt;code&gt;&quot;1&quot;&lt;/code&gt;, so &lt;code&gt;&quot;1&quot;&lt;/code&gt; is popped first.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;ex)
s = &quot;21[abc]3[cd]ef&quot;
result = []
chars = [&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]
str_num = '21'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Convert &lt;code&gt;str_num&lt;/code&gt; into an integer and multiply the decoded string.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Using &lt;code&gt;''.join(chars) * num&lt;/code&gt; , the string &lt;code&gt;&quot;abc&quot;&lt;/code&gt; is repeated &lt;code&gt;21&lt;/code&gt; times and appended to &lt;code&gt;result&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;makefile&quot;&gt;&lt;code&gt;ex)
result = [&quot;abc&quot;, &quot;abc&quot;...]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After finishing the iteration, return the final decoded string.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;class Solution(object):
    def decodeString(self, s):
        result = []
        for i in s:
            if i != &quot;]&quot;:
                result.append(i)
            else:
                char = []
                while result[-1] != &quot;[&quot;:
                    char.append(result.pop())
                char.reverse()
                result.pop()

                str_num = ''
                while result and result[-1].isdigit():
                    str_num = result.pop() + str_num

                num = int(str_num)if str_num else 1
                temp = ''.join(char) * num
                for i in temp:
                    result.append(i)

        return ''.join(result)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767789243328&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKgbew/hyZRcfGYpL/rUCpQKRPaWuNOx7fnGKQ2k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/d0KxYz/hyZQ6s0uRl/nyeji2BiEdOmjJKRMm9EMK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKgbew/hyZRcfGYpL/rUCpQKRPaWuNOx7fnGKQ2k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/d0KxYz/hyZQ6s0uRl/nyeji2BiEdOmjJKRMm9EMK/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/368</guid>
      <comments>https://mark-theater.tistory.com/368#entry368comment</comments>
      <pubDate>Wed, 7 Jan 2026 21:34:19 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 2352. Equal Row and Column Pairs</title>
      <link>https://mark-theater.tistory.com/367</link>
      <description>&lt;h1&gt;2352. Equal Row and Column Pairs&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Given a 0-indexed n x n integer matrix grid, return the number of pairs (ri, cj) such that row ri and column cj are equal.

A row and column pair is considered equal if they contain the same elements in the same order (i.e., an equal array).



Example 1:

Input: grid = [[3,2,1],[1,7,6],[2,7,7]]
Output: 1
Explanation: There is 1 equal row and column pair:
- (Row 2, Column 1): [2,7,7]

Example 2:

Input: grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]]
Output: 3
Explanation: There are 3 equal row and column pairs:
- (Row 0, Column 0): [3,1,2,2]
- (Row 2, Column 2): [2,4,2,2]
- (Row 3, Column 2): [2,4,2,2]



Constraints:

    n == grid.length == grid[i].length
    1 &amp;lt;= n &amp;lt;= 200
    1 &amp;lt;= grid[i][j] &amp;lt;= 105

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return the number of paris &lt;code&gt;(r[i], c[j]&lt;/code&gt; such that row &lt;code&gt;r[i]&lt;/code&gt; and column &lt;code&gt;c[j]&lt;/code&gt; are equal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this requirement, I used hashmap and tuple approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In order to use a value as a key in hashmap, the value must be immutable.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, each row is converted into a tuple and used as a key.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, iterate through the grid and store each row as a tuple in the hashmap, while countind its frequency,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, iterate through each column.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;For each columm, create a tuple using &lt;code&gt;grid[i][j]&lt;/code&gt; for all rows &lt;code&gt;i&lt;/code&gt;, and check whether this tuple exists in the row hashmap.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The reason for seperating row and column iteration is that, in a single loop, it is not possivle to construct a full column array directly.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Using seperate loops makes it easier to build row and column tuples correctly.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of iteration, return the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;maxima&quot;&gt;&lt;code&gt;class Solution(object):
    def equalPairs(self, grid):
        n = len(grid)
        row = {}
        result = 0

        for i in range(n):
            key = tuple(grid[i])
            row[key] = row.get(key, 0) + 1

        for j in range(n):
            key = tuple(grid[i][j] for i in range(n))
            result += row.get(key, 0)

        return result&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767596545607&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CFGlP/hyZQ3CMk6u/dqkn1UWuPOj2okxDksUSNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/dCwGEA/hyZQ9bUY5Y/Lw6VoMelHBgiFUPrP4Fhk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CFGlP/hyZQ3CMk6u/dqkn1UWuPOj2okxDksUSNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/dCwGEA/hyZQ9bUY5Y/Lw6VoMelHBgiFUPrP4Fhk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/367</guid>
      <comments>https://mark-theater.tistory.com/367#entry367comment</comments>
      <pubDate>Mon, 5 Jan 2026 16:02:50 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1657. Determine if Two Strings Are Close</title>
      <link>https://mark-theater.tistory.com/366</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;1657. Determine if Two Strings Are Close&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Two strings are considered close if you can attain one from the other using the following operations:

    Operation 1: Swap any two existing characters.
        For example, abcde -&amp;gt; aecdb
    Operation 2: Transform every occurrence of one existing character into another existing character, and do the same with the other character.
        For example, aacabb -&amp;gt; bbcbaa (all a's turn into b's, and all b's turn into a's)

You can use the operations on either string as many times as necessary.

Given two strings, word1 and word2, return true if word1 and word2 are close, and false otherwise.



Example 1:

Input: word1 = &quot;abc&quot;, word2 = &quot;bca&quot;
Output: true
Explanation: You can attain word2 from word1 in 2 operations.
Apply Operation 1: &quot;abc&quot; -&amp;gt; &quot;acb&quot;
Apply Operation 1: &quot;acb&quot; -&amp;gt; &quot;bca&quot;

Example 2:

Input: word1 = &quot;a&quot;, word2 = &quot;aa&quot;
Output: false
Explanation: It is impossible to attain word2 from word1, or vice versa, in any number of operations.

Example 3:

Input: word1 = &quot;cabbba&quot;, word2 = &quot;abbccc&quot;
Output: true
Explanation: You can attain word2 from word1 in 3 operations.
Apply Operation 1: &quot;cabbba&quot; -&amp;gt; &quot;caabbb&quot;
Apply Operation 2: &quot;caabbb&quot; -&amp;gt; &quot;baaccc&quot;
Apply Operation 2: &quot;baaccc&quot; -&amp;gt; &quot;abbccc&quot;



Constraints:

    1 &amp;lt;= word1.length, word2.length &amp;lt;= 105
    word1 and word2 contain only lowercase English letters.

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;It is possible to swap any two existing characters.&lt;/li&gt;
&lt;li&gt;It is possible to change occurrence of one existing character into another existing character.&lt;/li&gt;
&lt;li&gt;Return &lt;code&gt;True&lt;/code&gt; when the two strings are same after iteration of these two operations.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used a hashmap approach (Python discription).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, to check whether both strings contain the same set of characters, convert each string to a set and compare each other.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, count the frequency of each characters in both strings.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the sorted frequency values of the two strings are the same, return &lt;code&gt;true&lt;/code&gt; otherwise, return &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;class Solution(object):
    def closeStrings(self, word1, word2):
        if set(word1) != set(word2):
            return False

        freq1 = {}
        freq2 = {}

        for i in word1:
            freq1[i] = freq1.get(i, 0) + 1

        for i in word2:
            freq2[i] = freq2.get(i, 0) + 1

        return sorted(freq1.values()) == sorted(freq2.values())&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Alternatively, without explictly using a loop to count frequencies, we can directly create sorted frequency lists.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;class Solution(object):
    def closeStrings(self, word1, word2):
        if set(word1) != set(word2):
            return False

        freq1 = sorted([word1.count(i) for i in set(word1)])
        freq2 = sorted([word2.count(i) for i in set(word2)])
        return freq1 == freq2
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767593288467&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/CFGlP/hyZQ3CMk6u/dqkn1UWuPOj2okxDksUSNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/dCwGEA/hyZQ9bUY5Y/Lw6VoMelHBgiFUPrP4Fhk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/CFGlP/hyZQ3CMk6u/dqkn1UWuPOj2okxDksUSNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/dCwGEA/hyZQ9bUY5Y/Lw6VoMelHBgiFUPrP4Fhk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/366</guid>
      <comments>https://mark-theater.tistory.com/366#entry366comment</comments>
      <pubDate>Mon, 5 Jan 2026 15:07:37 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1207. Unique Number of Occurrences</title>
      <link>https://mark-theater.tistory.com/365</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Unique Number of Occurrences&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Given an array of integers arr, return true if the number of occurrences of each value in the array is unique or false otherwise.



Example 1:

Input: arr = [1,2,2,1,1,3]
Output: true
Explanation: The value 1 has 3 occurrences, 2 has 2 and 3 has 1. No two values have the same number of occurrences.

Example 2:

Input: arr = [1,2]
Output: false

Example 3:

Input: arr = [-3,0,1,-3,1,1,1,-3,10,0]
Output: true



Constraints:

    1 &amp;lt;= arr.length &amp;lt;= 1000
    -1000 &amp;lt;= arr[i] &amp;lt;= 1000

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return &lt;code&gt;true&lt;/code&gt; if the number of occurrences of each value in the array is &lt;b&gt;Unique&lt;/b&gt;, otherwise return &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy this problem, I used a hashmap approach(Python dictionary).&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, iterate through the array and count the frequency of each number.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The statement &lt;code&gt;result[i] = result.get(i,0) + 1&lt;/code&gt; means: for key &lt;code&gt;i&lt;/code&gt;, get the current value if it exists, otherwise use &lt;code&gt;0&lt;/code&gt; as the default value, and then add 1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To determine whether the frequencies are unique, use set and compare each value.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the same value already exists in the set, return &lt;code&gt;False&lt;/code&gt;.&lt;br /&gt;Otherwise, add the value to the set and continue.&lt;br /&gt;If the iteration finishes without duplication, return &lt;code&gt;True&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution(object):
    def uniqueOccurrences(self, arr):
        result = {}

        for i in arr:
            result[i] = result.get(i, 0) + 1

        setarr = set()
        for i in result.values():
            if i in setarr:
                return False
            setarr.add(i)
        return True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Alternatively, without using iteration through set, we can compare the length of &lt;code&gt;result.values()&lt;/code&gt; and a&lt;code&gt;set(result.values())&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since set removes duplicate values, if both lengths are the same, it means all the occurrences each values are unique.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution(object):
    def uniqueOccurrences(self, arr):
        result = {}

        for i in arr:
            result[i] = result.get(i, 0) + 1

        values = result.values()
        return len(values) == len(set(values))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1767425899793&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxT0Wk/hyZPManhqk/dmgJXcHOCOhbtaGSwkxp0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Jbakt/hyZQ39U4Yp/E8PUr488dStz6KuVIWFAD1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxT0Wk/hyZPManhqk/dmgJXcHOCOhbtaGSwkxp0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Jbakt/hyZQ39U4Yp/E8PUr488dStz6KuVIWFAD1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/365</guid>
      <comments>https://mark-theater.tistory.com/365#entry365comment</comments>
      <pubDate>Sat, 3 Jan 2026 16:38:24 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1004. Max Consecutive Ones III</title>
      <link>https://mark-theater.tistory.com/364</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Max Consecutive Ones III&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Given a binary array nums and an integer k, return the maximum number of consecutive 1's in the array if you can flip at most k 0's.



Example 1:

Input: nums = [1,1,1,0,0,0,1,1,1,1,0], k = 2
Output: 6
Explanation: [1,1,1,0,0,1,1,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.

Example 2:

Input: nums = [0,0,1,1,0,0,1,1,1,0,1,1,0,0,0,1,1,1,1], k = 3
Output: 10
Explanation: [0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1]
Bolded numbers were flipped from 0 to 1. The longest subarray is underlined.



Constraints:

    1 &amp;lt;= nums.length &amp;lt;= 105
    nums[i] is either 0 or 1.
    0 &amp;lt;= k &amp;lt;= nums.length

&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return the maximum number of consecutive &lt;code&gt;1&lt;/code&gt;s.&lt;/li&gt;
&lt;li&gt;It is allowed to flip &lt;code&gt;0&lt;/code&gt; to &lt;code&gt;1&lt;/code&gt; at most &lt;code&gt;k&lt;/code&gt; times.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I used a two-pointer and sliding window approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, move the right pointer and check the value.&lt;br /&gt;If the value is &lt;code&gt;0&lt;/code&gt;, decrease &lt;code&gt;k&lt;/code&gt;.&lt;br /&gt;When &lt;code&gt;k&lt;/code&gt; becomes smaller than &lt;code&gt;0&lt;/code&gt;, move the left pointer until &lt;code&gt;k&lt;/code&gt; becomes &lt;code&gt;0&lt;/code&gt; again.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of each iteration, caculate the window size, which represents the numver of consecutive elements in the current window.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If this value is larger than the current result, update the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Whe the right pointer reaches the end of the array, return the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;class Solution(object):
    def longestOnes(self, nums, k):
        left = result = 0
        for right in range(len(nums)):
            if nums[right] == 0:
                k -= 1
            while k &amp;lt; 0:
                if nums[left] == 0:
                    k += 1
                left += 1
            count = right - left + 1
            if result &amp;lt; count:
                result = count
        return result&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/364</guid>
      <comments>https://mark-theater.tistory.com/364#entry364comment</comments>
      <pubDate>Wed, 31 Dec 2025 20:59:49 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1456. Maximum Number of Vowels in a Substring of Given Length</title>
      <link>https://mark-theater.tistory.com/363</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Maximum Number of Vowels in a Substring of Given Length&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Given a string s and an integer k, return the maximum number of vowel letters in any substring of s with length k.

Vowel letters in English are 'a', 'e', 'i', 'o', and 'u'.



Example 1:

Input: s = &quot;abciiidef&quot;, k = 3
Output: 3
Explanation: The substring &quot;iii&quot; contains 3 vowel letters.

Example 2:

Input: s = &quot;aeiou&quot;, k = 2
Output: 2
Explanation: Any substring of length 2 contains 2 vowels.

Example 3:

Input: s = &quot;leetcode&quot;, k = 3
Output: 2
Explanation: &quot;lee&quot;, &quot;eet&quot; and &quot;ode&quot; contain 2 vowels.



Constraints:

    1 &amp;lt;= s.length &amp;lt;= 105
    s consists of lowercase English letters.
    1 &amp;lt;= k &amp;lt;= s.length

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return maximum number of volwel letters in any substring &lt;code&gt;s&lt;/code&gt; with length &lt;code&gt;k&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This problem can be solved simply using a sliding window approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, set the initial substring &lt;code&gt;s[:k]&lt;/code&gt; and count how many characters are vowels.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If a character is in &lt;code&gt;vowels&lt;/code&gt;, increase the count.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;After checking the first window, set this value as &lt;code&gt;max_count&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the count is equal to &lt;code&gt;k&lt;/code&gt;, which means already maximum value, return &lt;code&gt;k&lt;/code&gt; immediately.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, move the sliding window.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When &lt;code&gt;s[i]&lt;/code&gt; is a vowel, increase the count.&lt;br /&gt;When &lt;code&gt;s[i - k]&lt;/code&gt;is a vowel, decrease the count.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of each iteration, compare the current count with &lt;code&gt;max_count&lt;/code&gt; and update it if the current count if greater.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At last, return &lt;code&gt;max_count&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;class Solution(object):
    def maxVowels(self, s, k):
        count = max_count = 0
        vowels = set(&quot;aeiou&quot;)

        for i in s[:k]:
            if i in vowels:
                count += 1

        max_count = count
        if count == k:
            return k

        for i in range(k, len(s)):
            if s[i] in vowels:
                count += 1
            if s[i - k] in vowels:
                count -= 1

            if count &amp;gt; max_count:
                max_count = count
                if count == k:
                    return k

        return max_count &lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767092084010&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dufUvF/hyZQIw9XvH/A0pJhBQljGQCdixHpDHp11/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/mNNra/hyZPRoUPer/Mgm1kAentjRHoLJaAvzHJk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dufUvF/hyZQIw9XvH/A0pJhBQljGQCdixHpDHp11/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/mNNra/hyZPRoUPer/Mgm1kAentjRHoLJaAvzHJk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/363</guid>
      <comments>https://mark-theater.tistory.com/363#entry363comment</comments>
      <pubDate>Tue, 30 Dec 2025 19:54:46 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 643. Maximum Average Subarray I</title>
      <link>https://mark-theater.tistory.com/362</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Maximum Average Subarray I&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;You are given an integer array nums consisting of n elements, and an integer k.

Find a contiguous subarray whose length is equal to k that has the maximum average value and return this value. Any answer with a calculation error less than 10-5 will be accepted.



Example 1:

Input: nums = [1,12,-5,-6,50,3], k = 4
Output: 12.75000
Explanation: Maximum average is (12 - 5 - 6 + 50) / 4 = 51 / 4 = 12.75

Example 2:

Input: nums = [5], k = 1
Output: 5.00000



Constraints:

    n == nums.length
    1 &amp;lt;= k &amp;lt;= n &amp;lt;= 105
    -104 &amp;lt;= nums[i] &amp;lt;= 104

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Find the maximum average value of a subbarray with length &lt;code&gt;k&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The return type must be a float.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;First Attempt:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy the requirements, I first used a simple loop with slicing.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;By using slicing, it is possible to calculate sum of values from index &lt;code&gt;i&lt;/code&gt; to &lt;code&gt;i + k&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since the subarray length is fixed to &lt;code&gt;k&lt;/code&gt;, the loop runs &lt;code&gt;len(nums) - k + 1&lt;/code&gt; times.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Because I am using python, this returns same type which is integer when both types are integers so I converted &lt;code&gt;k&lt;/code&gt; to &lt;code&gt;float&lt;/code&gt; to get a float result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;class Solution(object):
    def findMaxAverage(self, nums, k):
        result = float('-inf')
        length = len(nums) - k + 1
        for i in range(length):
            end = i + k
            result = max((sum(nums[i:end]) / float(k)),result)
        return result
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Second Attempt:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;However, the first approach is inefficient because slicing and summing are repeated every time.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To optimize this, I used a sliding window approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, calculate the sum of the first &lt;code&gt;k&lt;/code&gt; number of elements.&lt;br /&gt;Then, while moving the window, subtract the first value of previous window and add the next value.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since the divisor &lt;code&gt;k&lt;/code&gt; is always the same, the division is performed only once at the end.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;class Solution(object):
    def findMaxAverage(self, nums, k):
        first = sum(nums[:k])
        result = first

        for i in range(k,len(nums)):
            first += nums[i] - nums[i-k]
            result = max(result, first)
        return result / float(k)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767087976338&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dufUvF/hyZQIw9XvH/A0pJhBQljGQCdixHpDHp11/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/mNNra/hyZPRoUPer/Mgm1kAentjRHoLJaAvzHJk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dufUvF/hyZQIw9XvH/A0pJhBQljGQCdixHpDHp11/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/mNNra/hyZPRoUPer/Mgm1kAentjRHoLJaAvzHJk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/362</guid>
      <comments>https://mark-theater.tistory.com/362#entry362comment</comments>
      <pubDate>Tue, 30 Dec 2025 18:46:18 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1679. Max Number of K-Sum Pairs</title>
      <link>https://mark-theater.tistory.com/361</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Max Number of K-Sum Pairs&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;You are given an integer array nums and an integer k.

In one operation, you can pick two numbers from the array whose sum equals k and remove them from the array.

Return the maximum number of operations you can perform on the array.



Example 1:

Input: nums = [1,2,3,4], k = 5
Output: 2
Explanation: Starting with nums = [1,2,3,4]:
- Remove numbers 1 and 4, then nums = [2,3]
- Remove numbers 2 and 3, then nums = []
There are no more pairs that sum up to 5, hence a total of 2 operations.

Example 2:

Input: nums = [3,1,3,4,3], k = 6
Output: 1
Explanation: Starting with nums = [3,1,3,4,3]:
- Remove the first two 3's, then nums = [1,4,3]
There are no more pairs that sum up to 6, hence a total of 1 operation.



Constraints:

    1 &amp;lt;= nums.length &amp;lt;= 105
    1 &amp;lt;= nums[i] &amp;lt;= 109
    1 &amp;lt;= k &amp;lt;= 109

&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Count the maximum number of pairs in the array which sum of two numbers equals &lt;code&gt;k&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unsophisticate approach for this problem is using the two-pointer method.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First, sort the array so that we can compare sum with &lt;code&gt;k&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While left pointer and right pointer move toward each other, calculate the sum of the two value and compare it with &lt;code&gt;k&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;If the sum is eqaul to &lt;code&gt;k&lt;/code&gt;, increase result count and move both pointers.&lt;br /&gt;Otherwise, due to the sum value, if the value is smaller than &lt;code&gt;k&lt;/code&gt; move left pointer and in other case move right pointer.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of the loop, return final result value.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;class Solution(object):
    def maxOperations(self, nums, k):
        nums.sort()
        left = result = 0
        right = len(nums)-1

        while left &amp;lt; right:
            sum_now = nums[left] + nums[right]
            if sum_now == k:
                result += 1
                left += 1
                right -= 1
            elif sum_now &amp;lt; k:
                left += 1
            else:
                right -= 1
        return result&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/361</guid>
      <comments>https://mark-theater.tistory.com/361#entry361comment</comments>
      <pubDate>Tue, 30 Dec 2025 17:18:30 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 11. Container With Most Water</title>
      <link>https://mark-theater.tistory.com/360</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Container With Most Water&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;ou are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]).

Find two lines that together with the x-axis form a container, such that the container contains the most water.

Return the maximum amount of water a container can store.

Notice that you may not slant the container.



Example 1:

Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

Example 2:

Input: height = [1,1]
Output: 1



Constraints:

    n == height.length
    2 &amp;lt;= n &amp;lt;= 105
    0 &amp;lt;= height[i] &amp;lt;= 104
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of the problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;The array contains heights of vertical lines.&lt;/li&gt;
&lt;li&gt;Return the maximum amount of water a container can store.&lt;/li&gt;
&lt;li&gt;The time complexixy should not be &lt;code&gt;O(n^2)&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This Problem can be solved using the two-pointer approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The amount of water is calculated as &lt;b&gt;height x width&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In this array, the height comes from the values of the two pointer, and the width is the distance between the left and right pointers.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Since the water cannot be stored higher than the shorter line, the height is determined by the smaller value between two pointers.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Using the height, calculate the current area.&lt;br /&gt;If this area is larger than the stored value, update the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, move the pointer with the smaller height and repeat this process until the two pointers meet. Then return the final result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;class Solution(object):
    def maxArea(self, height):
        left = result = 0
        right = len(height) - 1

        while left &amp;lt; right:
            if height[left] &amp;lt; height[right]:
                water = height[left] * (right - left)
                result = max(water, result)
                left += 1
            else:
                water = height[right] * (right - left)
                result = max(water, result)
                right -= 1
        return result&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/360</guid>
      <comments>https://mark-theater.tistory.com/360#entry360comment</comments>
      <pubDate>Mon, 29 Dec 2025 17:16:39 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 382. Is Subsequence</title>
      <link>https://mark-theater.tistory.com/359</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Is Subsquence&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Given two strings s and t, return true if s is a subsequence of t, or false otherwise.

A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e., &quot;ace&quot; is a subsequence of &quot;abcde&quot; while &quot;aec&quot; is not).



Example 1:

Input: s = &quot;abc&quot;, t = &quot;ahbgdc&quot;
Output: true

Example 2:

Input: s = &quot;axc&quot;, t = &quot;ahbgdc&quot;
Output: false



Constraints:

    0 &amp;lt;= s.length &amp;lt;= 100
    0 &amp;lt;= t.length &amp;lt;= 104
    s and t consist only of lowercase English letters.


Follow up: Suppose there are lots of incoming s, say s1, s2, ..., sk where k &amp;gt;= 109, and you want to check one by one to see if t has its subsequence. In this scenario, how would you change your code?&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirement of this problem is as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Return &lt;code&gt;true&lt;/code&gt; if &lt;code&gt;s&lt;/code&gt; is a &lt;b&gt;subsequence&lt;/b&gt; of &lt;code&gt;t&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This problem can be solved using a single loop.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While iterating through the elements of &lt;code&gt;t&lt;/code&gt;, compare each element with the current element of &lt;code&gt;s&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When both elements match, increase the &lt;code&gt;checked&lt;/code&gt; count.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At the end of the loop, if the &lt;code&gt;checked&lt;/code&gt; count is the same as the length of string &lt;code&gt;s&lt;/code&gt;, return &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;class Solution(object):
    def isSubsequence(self, s, t):
        checked = 0
        
        for char in t:
            if checked &amp;lt; len(s) and char == s[checked]:
                checked += 1
        
        return checked == len(s)&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/359</guid>
      <comments>https://mark-theater.tistory.com/359#entry359comment</comments>
      <pubDate>Mon, 29 Dec 2025 16:30:43 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 283. Move Zeros</title>
      <link>https://mark-theater.tistory.com/358</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Move Zeroes&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.

Note that you must do this in-place without making a copy of the array.



Example 1:

Input: nums = [0,1,0,3,12]
Output: [1,3,12,0,0]

Example 2:

Input: nums = [0]
Output: [0]



Constraints:

    1 &amp;lt;= nums.length &amp;lt;= 104
    -231 &amp;lt;= nums[i] &amp;lt;= 231 - 1


Follow up: Could you minimize the total number of operations done?&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Move all &lt;code&gt;0&lt;/code&gt; to the end of array.&lt;/li&gt;
&lt;li&gt;Solve this probelm &lt;b&gt;in-place&lt;/b&gt;, without creating an additional array.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, I decided to overwrite only the non-zero numbers.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At first, I tried slove using swapping.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;While iterating throught the array, when I found a &lt;code&gt;0&lt;/code&gt;, I searched for the next non-zero element and swapped their positions, then continued this process.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;However, the biggest problem with this approach was &lt;b&gt;time complexity&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Because this method does not immediately move &lt;code&gt;0&lt;/code&gt;s to the end, when the size of &lt;code&gt;nums&lt;/code&gt; becomes largem it ends up doing too many repeated swaps, which makes it inefficient.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, I chose a simpler approach.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I overwrite the array by placing all non-zero numbers at the front.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After that, based of the length of the array, I filled left of the positions with &lt;code&gt;0&lt;/code&gt;s.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1766992086165&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution(object):
    def moveZeroes(self, nums):
        notzero = 0

        for i in range(len(nums)):
            if nums[i] != 0:
                nums[notzero] = nums[i]
                notzero += 1

        while notzero &amp;lt; len(nums):
            nums[notzero] = 0
            notzero += 1&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/358</guid>
      <comments>https://mark-theater.tistory.com/358#entry358comment</comments>
      <pubDate>Mon, 29 Dec 2025 16:08:11 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 443. String Compression</title>
      <link>https://mark-theater.tistory.com/357</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;String compression&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Given an array of characters chars, compress it using the following algorithm:

Begin with an empty string s. For each group of consecutive repeating characters in chars:

    If the group's length is 1, append the character to s.
    Otherwise, append the character followed by the group's length.

The compressed string s should not be returned separately, but instead, be stored in the input character array chars. Note that group lengths that are 10 or longer will be split into multiple characters in chars.

After you are done modifying the input array, return the new length of the array.

You must write an algorithm that uses only constant extra space.

Note: The characters in the array beyond the returned length do not matter and should be ignored.



Example 1:

Input: chars = [&quot;a&quot;,&quot;a&quot;,&quot;b&quot;,&quot;b&quot;,&quot;c&quot;,&quot;c&quot;,&quot;c&quot;]
Output: Return 6, and the first 6 characters of the input array should be: [&quot;a&quot;,&quot;2&quot;,&quot;b&quot;,&quot;2&quot;,&quot;c&quot;,&quot;3&quot;]
Explanation: The groups are &quot;aa&quot;, &quot;bb&quot;, and &quot;ccc&quot;. This compresses to &quot;a2b2c3&quot;.

Example 2:

Input: chars = [&quot;a&quot;]
Output: Return 1, and the first character of the input array should be: [&quot;a&quot;]
Explanation: The only group is &quot;a&quot;, which remains uncompressed since it's a single character.

Example 3:

Input: chars = [&quot;a&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;,&quot;b&quot;]
Output: Return 4, and the first 4 characters of the input array should be: [&quot;a&quot;,&quot;b&quot;,&quot;1&quot;,&quot;2&quot;].
Explanation: The groups are &quot;a&quot; and &quot;bbbbbbbbbbbb&quot;. This compresses to &quot;ab12&quot;.



Constraints:

    1 &amp;lt;= chars.length &amp;lt;= 2000
    chars[i] is a lowercase English letter, uppercase English letter, digit, or symbol.

&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key requirements of this problem are as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Count consecutive reapeating characters and overwrite the result in the original array.&lt;/li&gt;
&lt;li&gt;The count must be stored as individual characters.&lt;/li&gt;
&lt;li&gt;Return the total length of the compressed array.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To satisfy these requirements, the solution modifies the input &lt;code&gt;chars&lt;/code&gt;array in place without using any additional data structure.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There fore, two pointers are used : &lt;code&gt;read&lt;/code&gt; and &lt;code&gt;write&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While iterating through the array, the &lt;code&gt;read&lt;/code&gt; pointer counts how many times the same character appears consecutively.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Once the end of a group is reached, the character is written to &lt;code&gt;chars[write]&lt;/code&gt;, and the &lt;code&gt;write&lt;/code&gt;pointer is incremented.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After all characters have been processed, the value of &lt;code&gt;write&lt;/code&gt; represents the length of the compressed array.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution(object):
    def compress(self, chars):
        write = read = 0
        n = len(chars)

        while read &amp;lt; n:
            char = chars[read]
            count = 0

            while read &amp;lt; n and chars[read] == char:
                read += 1
                count += 1

            chars[write] = char
            write += 1

            if count &amp;gt; 1:
                for digit in str(count):
                    chars[write] = digit
                    write += 1

        return write&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/357</guid>
      <comments>https://mark-theater.tistory.com/357#entry357comment</comments>
      <pubDate>Fri, 26 Dec 2025 21:00:12 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 334. Increating Triplet Subsequence</title>
      <link>https://mark-theater.tistory.com/356</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Increating Triplet Subsequence&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Given an integer array nums, return true if there exists a triple of indices (i, j, k) such that i &amp;lt; j &amp;lt; k and nums[i] &amp;lt; nums[j] &amp;lt; nums[k]. If no such indices exists, return false.



Example 1:

Input: nums = [1,2,3,4,5]
Output: true
Explanation: Any triplet where i &amp;lt; j &amp;lt; k is valid.

Example 2:

Input: nums = [5,4,3,2,1]
Output: false
Explanation: No triplet exists.

Example 3:

Input: nums = [2,1,5,0,4,6]
Output: true
Explanation: One of the valid triplet is (1, 4, 5), because nums[1] == 1 &amp;lt; nums[4] == 4 &amp;lt; nums[5] == 6.



Constraints:

    1 &amp;lt;= nums.length &amp;lt;= 5 * 105
    -231 &amp;lt;= nums[i] &amp;lt;= 231 - 1


Follow up: Could you implement a solution that runs in O(n) time complexity and O(1) space complexity?&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Due to the time complexity requirement, using a double which is the easiest way would be too slow.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;So instead, I tried to solve it in one pass by tracking two numbers: &lt;code&gt;first&lt;/code&gt; and &lt;code&gt;second&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I initialized them with a very large value (like &lt;code&gt;max(nums)&lt;/code&gt;) so they can easily be updated.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;While scanning the array, if the current number is smaller than or equal to &lt;code&gt;first&lt;/code&gt;, override &lt;code&gt;first&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Otherwise, if it is smaller than or equal to &lt;code&gt;second&lt;/code&gt;, override &lt;code&gt;second&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If the current number is larger than both &lt;code&gt;first&lt;/code&gt; and &lt;code&gt;second&lt;/code&gt;, that means I found an increasing triplet.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At first, I use &lt;code&gt;max(nums)&lt;/code&gt; for initialization, but &lt;code&gt;max&lt;/code&gt; also read all the list once so the time compleity becomes &lt;code&gt;O(2n)&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, I use &lt;code&gt;float('inf')&lt;/code&gt; to avoid extra pass.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1767426173312&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution(object):
    def increasingTriplet(self, nums):
        first = second = float('inf')

        for i in nums:
            if first &amp;gt;= i:
                first = i
            elif second &amp;gt;= i:
                second = i
            else:
                return True
        return False&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1767426177553&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxT0Wk/hyZPManhqk/dmgJXcHOCOhbtaGSwkxp0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Jbakt/hyZQ39U4Yp/E8PUr488dStz6KuVIWFAD1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxT0Wk/hyZPManhqk/dmgJXcHOCOhbtaGSwkxp0k/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/Jbakt/hyZQ39U4Yp/E8PUr488dStz6KuVIWFAD1/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/356</guid>
      <comments>https://mark-theater.tistory.com/356#entry356comment</comments>
      <pubDate>Fri, 26 Dec 2025 19:26:16 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 238. Product of Array Except Self</title>
      <link>https://mark-theater.tistory.com/355</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Product of Array Except Self&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i].

The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.

You must write an algorithm that runs in O(n) time and without using the division operation.



Example 1:

Input: nums = [1,2,3,4]
Output: [24,12,8,6]

Example 2:

Input: nums = [-1,1,0,-3,3]
Output: [0,0,9,0,0]



Constraints:

    2 &amp;lt;= nums.length &amp;lt;= 105
    -30 &amp;lt;= nums[i] &amp;lt;= 30
    The input is generated such that answer[i] is guaranteed to fit in a 32-bit integer.



Follow up: Can you solve the problem in O(1) extra space complexity? (The output array does not count as extra space for space complexity analysis.)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;What this problem requires are:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Multiply all other nums in nums array without itself in loop&lt;/li&gt;
&lt;li&gt;Time complexity must be O(n)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At first, the problem just requires multiply all the numbers except itself.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;However, doing this with a loop would clearly takesO(n&amp;sup2;) time.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After I check the hint and it mentioned:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;Think how you can efficiently utilize prefix and suffix products to calculate the product of all elements except self for each index. Can you pre-compute the prefix and suffix products in linear time to avoid redundant calculations?&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Then I realize that for each index, what is really need is multiply left and right side of specific number.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;So, I decided to calculate the product of all elements from left to right first.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;One import detail was to hangle the first and last index.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is no value before and after first and last index, i replace as 1.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;class Solution(object):
    def productExceptSelf(self, nums):
        n = len(nums)
        result = [1]* n

        prefix = 1
        for i in range(n):
            result[i] = prefix
            prefix *= nums[i]

        suffix = 1
        for i in range(n -1, -1, -1):
            result[i] *= suffix
            suffix *= nums[i]

        return result&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1766729590460&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&quot; data-og-description=&quot;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/xihLY/hyZPHlUqpi/oZHPlpKQygWmHo010T0g40/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bzpLvJ/hyZP6UlDP6/bAeTNAki6AJVI4fRf6SvOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/xihLY/hyZPHlUqpi/oZHPlpKQygWmHo010T0g40/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215,https://scrap.kakaocdn.net/dn/bzpLvJ/hyZP6UlDP6/bAeTNAki6AJVI4fRf6SvOk/img.png?width=1200&amp;amp;height=600&amp;amp;face=975_135_1048_215');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - K-MarkLee/LeetCode-Practice: A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of LeetCode questions to ace the coding interview! - Created using [LeetHub 2.0](https://github.com/maitreya2954/LeetHub-2.0-Firefox) - K-MarkLee/LeetCode-Practice&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/355</guid>
      <comments>https://mark-theater.tistory.com/355#entry355comment</comments>
      <pubDate>Fri, 26 Dec 2025 15:30:35 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 605.Can Place Flowers</title>
      <link>https://mark-theater.tistory.com/354</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Can Place Flowers&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in adjacent plots.

Given an integer array flowerbed containing 0's and 1's, where 0 means empty and 1 means not empty, and an integer n, return true if n new flowers can be planted in the flowerbed without violating the no-adjacent-flowers rule and false otherwise.



Example 1:

Input: flowerbed = [1,0,0,0,1], n = 1
Output: true

Example 2:

Input: flowerbed = [1,0,0,0,1], n = 2
Output: false



Constraints:

    1 &amp;lt;= flowerbed.length &amp;lt;= 2 * 104
    flowerbed[i] is 0 or 1.
    There are no two adjacent flowers in flowerbed.
    0 &amp;lt;= n &amp;lt;= flowerbed.length
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Solution&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;First Attempt:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The initial idea was as follows:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Identify segments of consecutive &lt;code&gt;0&lt;/code&gt;s in the flowerbed.&lt;/li&gt;
&lt;li&gt;Since flowers cannot be planted in adjacent plots, cacluate the number of connected &lt;code&gt;0&lt;/code&gt;s and determine whether &lt;code&gt;n&lt;/code&gt; flowers can be planted.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;What I tried was to count the number of connected &lt;code&gt;0&lt;/code&gt;s in the flowerbed and return &lt;code&gt;true&lt;/code&gt; when the count was greater than or equal to &lt;code&gt;(n * 2) - n&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The issue with this approach were:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; First, it did not properly handle dege plots.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; Second, it did not update the flowerbed after planting a new flower.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Second Attempt:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In the second approach, I compared the left and right plots for each position.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;For edge cases, I handled them seperatly.&lt;/p&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;class Solution(object):
    def canPlaceFlowers(self, flowerbed, n):
        count = 0
        for i in range(len(flowerbed)):
            if flowerbed[i] == 0:
                left = (i == 0 or flowerbed[i-1] == 0)
                right = (i == len(flowerbed) - 1 or flowerbed[i+1] == 0)

                if left and right:
                    flowerbed[i] = 1
                    count += 1

        return count &amp;gt;= n&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/354</guid>
      <comments>https://mark-theater.tistory.com/354#entry354comment</comments>
      <pubDate>Wed, 24 Dec 2025 20:39:24 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1071. Greatest Common Divisor of Strings</title>
      <link>https://mark-theater.tistory.com/353</link>
      <description>&lt;h1 style=&quot;text-align: center;&quot;&gt;Greatest Common Divisor of Strings&lt;/h1&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;GCD / Euclidean Algorithm&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Problem&lt;/h2&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;For two strings s and t, we say &quot;t divides s&quot; if and only if s = t + t + t + ... + t + t (i.e., t is concatenated with itself one or more times).

Given two strings str1 and str2, return the largest string x such that x divides both str1 and str2.



Example 1:

Input: str1 = &quot;ABCABC&quot;, str2 = &quot;ABC&quot;

Output: &quot;ABC&quot;

Example 2:

Input: str1 = &quot;ABABAB&quot;, str2 = &quot;ABAB&quot;

Output: &quot;AB&quot;

Example 3:

Input: str1 = &quot;LEET&quot;, str2 = &quot;CODE&quot;

Output: &quot;&quot;

Example 4:

Input: str1 = &quot;AAAAAB&quot;, str2 = &quot;AAA&quot;

Output: &quot;&quot;​​​​​​​



Constraints:

    1 &amp;lt;= str1.length, str2.length &amp;lt;= 1000
    str1 and str2 consist of English uppercase letters.

&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1&gt;Solution&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;First Attempt:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This problem requires two main steps.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Check whether two strings share a repeating pattern.&lt;/li&gt;
&lt;li&gt;Find the smallest possible pattern that can generate both strings.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The key idea that if two strings are made from the same pattern,changing the order of concatenation should not change the result.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Therefore, &lt;code&gt;str1+str2 != str2+str1&lt;/code&gt; can filter out strings that do not share same pattern.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;To find the smallest possible pattern in these two strings, we use the greatest common divisor of the lengths of the two strings.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This is done using the Euclidean Algorithm, which repeatedly calculates remainders until the second value becomes zero.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The remaining value is the greatest common divisor.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution(object):
    def gcdOfStrings(self, str1, str2):
        if str1 + str2 != str2 + str1:
            return  &quot;&quot;

        def gcd(a,b):
            while b:
                a, b = b , a % b
            return a

        length = gcd(len(str1), len(str2))
        return str1[:length]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/353</guid>
      <comments>https://mark-theater.tistory.com/353#entry353comment</comments>
      <pubDate>Tue, 23 Dec 2025 21:13:50 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 383. Ransom Note</title>
      <link>https://mark-theater.tistory.com/352</link>
      <description>&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;Ransome Note&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Brute force / Counter&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Problem:&lt;/h3&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Given two strings ransomNote and magazine, return true if ransomNote can be constructed by using the letters from magazine and false otherwise.

Each letter in magazine can only be used once in ransomNote.



Example 1:

Input: ransomNote = &quot;a&quot;, magazine = &quot;b&quot;
Output: false

Example 2:

Input: ransomNote = &quot;aa&quot;, magazine = &quot;ab&quot;
Output: false

Example 3:

Input: ransomNote = &quot;aa&quot;, magazine = &quot;aab&quot;
Output: true



Constraints:

    1 &amp;lt;= ransomNote.length, magazine.length &amp;lt;= 105
    ransomNote and magazine consist of lowercase English letters.&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Try:&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;First Try: Brute force&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I tried to extract each character from &lt;code&gt;ransomNote&lt;/code&gt; and compare it with the characters in &lt;code&gt;magazine&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When a character from &lt;code&gt;ransomNote&lt;/code&gt; matches one in &lt;code&gt;magazine&lt;/code&gt;, I replace specific character from &lt;code&gt;margazine&lt;/code&gt; and override it.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If all characters from &lt;code&gt;ransomNote&lt;/code&gt; are sucessfully matched and covers by &lt;code&gt;magazine&lt;/code&gt;, returns &lt;code&gt;True&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Otherwise, it returns &lt;code&gt;False&lt;/code&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-- However, this attempt has a time complexity if &lt;b&gt;O(N x M)&lt;/b&gt; , and it can be optimized.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        for char in ransomNote:
            if char in magazine:
                magazine = magazine.replace(char, &quot;&quot;, 1)
            else:
                return False

        return True&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Second Try: Hash Map&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I find the method to solve this problem by &lt;code&gt;HashMap&lt;/code&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A dictionary is used to store all the characters from &lt;code&gt;magazine&lt;/code&gt; and count the amount.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Each characters in &lt;code&gt;ransomNote&lt;/code&gt; is compared againse the dictionary.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;If the character exists, decrease its count in the dictionary.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When all characters in &lt;code&gt;randomNote&lt;/code&gt; are successfully processed, the function returns &lt;code&gt;True&lt;/code&gt;;&lt;br /&gt;otherwise, it returns &lt;code&gt;False&lt;/code&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        magazine_counts = {}

        for char in magazine:
            if char in magazine_counts:
                magazine_counts[char] += 1 
            else:
                magazine_counts[char] = 1

        for char in ransomNote:
            if char not in magazine_counts or magazine_counts[char] &amp;lt;= 0:
                return False
            magazine_counts[char] -= 1

        return True&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Third Try: List&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a similar method that solves this problem using a &lt;b&gt;list&lt;/b&gt; .&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;by using the &lt;code&gt;ord&lt;/code&gt;function, each character in &lt;code&gt;magazine&lt;/code&gt; is mapped to an index and the restore the count by&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;frequency of chatacter.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Each character in &lt;code&gt;ransomNote&lt;/code&gt; is then processed same way.&lt;/p&gt;
&lt;pre class=&quot;vbnet&quot;&gt;&lt;code&gt;class Solution(object):
    def canConstruct(self, ransomNote, magazine):
        counts = [0] * 26

        for char in magazine:
            counts[ord(char) - ord('a')] += 1

        for char in ransomNote:
            index = ord(char) - ord('a')

            if counts[index] == 0:
                return False

            counts[index] -= 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/LeetCode-Practice&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/LeetCode-Practice&lt;/a&gt;&lt;/p&gt;</description>
      <category>코딩테스트/LeetCode</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/352</guid>
      <comments>https://mark-theater.tistory.com/352#entry352comment</comments>
      <pubDate>Tue, 23 Dec 2025 18:24:43 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (대표값2)</title>
      <link>https://mark-theater.tistory.com/351</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 2587번 문제&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;대표값2&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2330&quot; data-origin-height=&quot;1560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HVoM4/dJMb9LYgNKI/xAVGLcVLKWyeA0UgjdGQVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HVoM4/dJMb9LYgNKI/xAVGLcVLKWyeA0UgjdGQVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HVoM4/dJMb9LYgNKI/xAVGLcVLKWyeA0UgjdGQVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHVoM4%2FdJMb9LYgNKI%2FxAVGLcVLKWyeA0UgjdGQVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2330&quot; height=&quot;1560&quot; data-origin-width=&quot;2330&quot; data-origin-height=&quot;1560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 다섯번째 줄 까지 각 N의 인풋을 가지고 평균과 중앙값을 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제에서 생각해야할 점은 딱 2가지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평균, 중앙값 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이 문제가 각 줄이 랜덤하게 설정이 되어있다면 말이 다르겠지만, 현재로써는 무조건 5개의 숫자만이 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 이를 그저 리스트로 받고 리스트의 sum에 5를 나누게 되면 이는 평균이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중앙값은 조금 다르다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중앙값의 경우에는 2가지의 조건이 필요한데 이는 숫자의 갯수에 따라 달라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 현재는 5개의 인풋이 고정된 상태이기 때문에, 정렬 후 리스트의 2번째 인덱스의 값을 불러오면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1760657036692&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
L = list(map(int,sys.stdin.read().strip().split()))

print(f&quot;{sum(L)//5}\n{sorted(L)[2]}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2587.%E2%80%85%EB%8C%80%ED%91%9C%EA%B0%922&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2587.%E2%80%85%EB%8C%80%ED%91%9C%EA%B0%922&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/351</guid>
      <comments>https://mark-theater.tistory.com/351#entry351comment</comments>
      <pubDate>Fri, 17 Oct 2025 08:26:39 +0900</pubDate>
    </item>
    <item>
      <title>구름 프로펙트 TIL (2025.10.16)</title>
      <link>https://mark-theater.tistory.com/350</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;실수를 반복하지 말자&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소감&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 긴 하루가 지나갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 많이 팀원들에게 부끄러운 시간을 가져서 개인적으로는 많이 힘들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회의를 맡아 녹음하고 정리하기로 했는데 두번씩이나 녹음을 하지 못하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 강사님 피드백시간에는 팀장님이 어느정도 녹음을 하셔서 다행이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하루가 멀다 할수록 공부할 거리가 늘고... 나의 실력은 점점 바닥을 드러내고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도... 열심히 하고싶고 해보고 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 사실은 상세 기능 명세서에 대해서 마무리 작업을 하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MVP개발을 이제 ai에게 맡기고 우리는 빠르게 최적화로 넘어가려고 플랜을 세우다 보니까&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디테일하게 기능 명세서를 하고 난 다음에 개발을 넘어가는 것이 매우 좋겠다고 의견이 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 이 중에서는 검색쪽을 2차 3차때 최적화 하지 않을가 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오후의 일이지만, 강사님께서는 내가 자바를 지금 배우고 있는 입장에서 es로 바로 하기에는 좀 많이 무리가 있지 않겠냐 해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL혹은 MariaDB로 MVP를 하고 2차 3차 가서 최적화를 하는 것도 좋을것 같다고 하셧다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오전에는 내가 이전에 사용했던 anima라는 툴을 사용해서 무신사의 페이지를 클론코딩하여 프론트로 치환도 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 사실 이 툴을 보고 좀더 일정을 빠르게 가져가려고 했다. 프론트에 시간을 많이 쏟지 않고 백엔드 개발도 빠르게 ai를 사용해서 처리한다면 최적화에 시간을 더 많이 사용 할 수 있지 않을가 했기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오후에는 erd를 작성하기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 초반까지는 너무 디테일하게 erd를 잡을 생각을 계속해서 머리가 아팠는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 그 이유도 있지만, 내가 erd에 대한 전반적인 이해도가 너무 많이 떨어지는 것 도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 identifying도 몰랐도 종속성이나 pk니 fk니 들어는 봣지만 정확하게 명확하게 할 줄 몰랏다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 지금도 마찬가지 이지만 현재시점에서는 어떻게든 나의 파트를 마무리 하긴 했다. (정확한지는 모르겠다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하면할수록 해야할게 많고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그만큼 집중도 안되고 우선순위도 못잡고 하다보니까&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 꼭해야 할 일도 못한것 같아서 매우 아쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회의 녹음은 내가 담당을 맡아서 한다고 하고 나머지는 솔찍히 다른분께 양해를 구하고 하는 편이 좋을거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>TIL and WIL/TIL</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/350</guid>
      <comments>https://mark-theater.tistory.com/350#entry350comment</comments>
      <pubDate>Thu, 16 Oct 2025 22:04:29 +0900</pubDate>
    </item>
    <item>
      <title>구름 프로펙트 TIL (25.10.15)</title>
      <link>https://mark-theater.tistory.com/349</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;매일 매일 새로운 도전의 시작&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소감&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘도 또 하나의 도전이 생기는것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 지금까지 해온것은 파이썬 기반으로한 프로그래밍 언어였는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 springboot 즉 자바 기반을 사용하여 프로젝트를 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2달 남짓한 시간에 새로운 언어로 고도화까지 해야한다고 생각하니 눈앞이 막막하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 집도 가까운데 하루종일 하다보면 어떻게 잘 되지 않을가 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 drf배울때도 그랬지만, 강의가 5시간이라도 하다보면 10시간 15시간 이렇게 지나가는거같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열심히 해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘 한 일&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 기능명세서를 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각의 파트를 나눠서 기능명세서를 작성을 했고, MVP를 구별했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 이때, 회원관리를 맡았는데 사실 이 부분에 대해서는 고도화 할 수 있는 부분이 없어서 따른 메인 파트를 맡아야 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 내가 좀 생각한 부분은 AI를 어떻게든 사용하고자 했지만, 문제는 데이터이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이커머셜에서의 추천 시스템을 구현을 해보려고 해도, 실제의 데이터가 없는 상태에서의 구현은 어불성설이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러한 고로 새로운 다른 메인 파트를 찾아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마도 내가 생각하는것은 제품관리 및 리뷰 쪽이며 이에 고도화를 하게 된다면 카테고리나 검색쪽이 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 데이터에서 카테고리분류나 검색에서 고도화를 하기위에서 어떤 데이터를 참조할건지 테이블이나 기술등 알고리즘으로 최적화를 깊게 팔 수 있는것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지는 일부의 데이터. 즉 몇십개 만큼의 테스트만 해왔었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제는 내가 직접 대규모 트레픽처리를 한다고 가정을 하고 테스트를 하고 고도화를 해야하기 떄문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 상황에서 파이썬이 굉장히 불리 한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 최적화를 한다면 몇만건 이렇게 들어와 버린다면 생각보다 시간이 오래 걸릴 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 실제 서비스시, 시간이 너무 오래 걸린다면 사용자의 이탈을 야기하기 때문에, 이는 문제가 많다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 것들을 2달동안 배우면서 한층 성장해나가겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;회고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘의 회고는 나의 목표를 두개씩이나 이루지 못 한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 코테풀기. (코테를 풀 시간이 좀 없었는데 내일부터는 오전에 와서 코테 한문제 먼저 시작하는걸로 해보겠다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 제일 마지막으로 나가기.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번은 큰 이유는 없다만 오늘은 조금 이르게 집에 가서 하고 싶은 맘이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재시간 22시 오늘은 이만 마무리 하도록 하겠다.&lt;/p&gt;</description>
      <category>TIL and WIL/TIL</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/349</guid>
      <comments>https://mark-theater.tistory.com/349#entry349comment</comments>
      <pubDate>Wed, 15 Oct 2025 21:57:02 +0900</pubDate>
    </item>
    <item>
      <title>구름 프로펙트 TIL (25.10.14 - D+1)</title>
      <link>https://mark-theater.tistory.com/348</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;타협하지말고 욕심을 부리자&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 구름 프로펙트의 첫날이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OT를 진행했고, 기본적인 프로펙트 2개월간의 진행에 대한 설명이 주를 이뤘으며, 과정중 지원을 받을 수 있는 부분과,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의사항등을 안내받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 변경점이 있다면, 지금껏 사용하던 윈도우 랩탑을 벗어나 맥을 사용한다는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 기능개발에서 만족하는 기존의 방식에서는 크게 상관이 없지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육과정내의 배포에 따른 최적화를 할 때, 사용하는 프로그램이나 시스템적인 테스트를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우에서는 아무리 최적화를 하고 해도, 배포환경인 aws에서는 리눅스 기반으로 많이 다를것이라는 의견.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러하여 맥을 사용하면 거의 동일한 환경에서의 패키지관리와 배포설정을 가능케 하여 좀더 최적화를 할 수 있다는 의견으로 맥을 처음 접하게됬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 맥을 쓰는것만으로도 머리가 아플 만큼 쉽지않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;오늘한 것&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;1. 프로젝트 러프 도메인 토론&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트의 도메인을 이커머셜로 지정. 이는 큰 범위에서 팀원들의 각각 원하는 바를 전부 담을 수 있을거 같고, 백엔드에 조금 더 치중된 개발의 선호가 기존 이커머셜의 클론코딩후 고도화를 할때 성능의 차이를 크게 느낄 수 있고 데이터를 모으기 쉬운 이커머셜로 선정함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 이에 ai쪽 기술을 사용하고 싶어 추천기능 및 요리를 입력하면 그에맞는 재료를 찾아주는등으로 아이디어를 냄.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추천기능으로 좁혀서 리서치를 진행했는데, 생각보다 딥해서 쉽지 않을 수 있겠다 생각.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;2. 새로 찾은 매니지먼트 툴 비교&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 알게된 superthread와 기존의 jira를 비교하여 어떤 걸 사용하면 좋을지 비교를 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 우리의 목표인 실전경험을 얻기 위해서는 실제로 기업들이나 실무에서 많이 사용하는 툴인 jira를 사용하는게 맞다는 리서치 결과.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유인 즉슨 superthread는 아직 신생 플랫폼으로 학습하고 참고할만한 데이터가 적다는점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;superthread가 추구하는 ai를 이용한 자동화는 우리 프로젝트의 목적과 엇나간다는점.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jira가 에자일 방법론에 따른 도구들을 완벽하게 지원하는 등의 이유로 jira를 설정하는게 맞다는 결론.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;회고&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각보다 프로펙트 2개월의 시간이 쉽지않을 것 같다는 생각을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 기능구현을 통해서 좀더 기능적으로 접근하고 이를 강화하는 정도에 머물것이라고 생각했지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 배포를 한다 가정하여 부하도 검사 및 최적화를 끝까지 딥게파서 수준을 올리는 것을 목표로 하는 것이었기에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신감은 박살이남.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이런편이 내가 프로펙트를 지원하게된 나의 객관적인 실력을 파악하게하고, 바쁘게 공부하고 치열하게 개발하는것이 나에게 도움이 될 것이라는 생각이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이에 나는 목표를 세웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로펙트 기간에서 할수 있는 최선을 다한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ai를 최소한으로 가져가면서 학습과 생산성 모두를 추구하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대한 남아서 마지막까지 하다 가며, 가장 처음으로와서 준비하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;1816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mYTuy/btsRaQdu2R8/IUqB9zeMOratjNt93YDV01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mYTuy/btsRaQdu2R8/IUqB9zeMOratjNt93YDV01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mYTuy/btsRaQdu2R8/IUqB9zeMOratjNt93YDV01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmYTuy%2FbtsRaQdu2R8%2FIUqB9zeMOratjNt93YDV01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;1816&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;1816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>TIL and WIL/TIL</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/348</guid>
      <comments>https://mark-theater.tistory.com/348#entry348comment</comments>
      <pubDate>Tue, 14 Oct 2025 21:08:17 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (수 정렬하기)</title>
      <link>https://mark-theater.tistory.com/347</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 2750번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수 정렬하기&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfEPkl/btsQ8rrUahV/6fLkS70fdTziGLreGFx3J0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfEPkl/btsQ8rrUahV/6fLkS70fdTziGLreGFx3J0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfEPkl/btsQ8rrUahV/6fLkS70fdTziGLreGFx3J0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfEPkl%2FbtsQ8rrUahV%2F6fLkS70fdTziGLreGFx3J0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1454&quot; height=&quot;754&quot; data-origin-width=&quot;1454&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫줄의 인풋값N은 아래에 나올 숫자들의 갯수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 첫줄N의 갯수만큼 있는 숫자를 한줄씩 크기 순서대로 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 사실 첫번째 인풋을 사용하지 않고도 풀 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;map으로 변수 지정할때, N, *M으로 하면 첫번째 값은 N으로 나머지는 전부 M으로 간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러면 자연스럽게 M에 N제외 모든 수가 들어가고, 이를 sort로 정렬한다.&lt;br /&gt;&lt;br /&gt;이때 num in M으로 반복하여 프린트를 하거나,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;print('\n'.join(map(str,M)))을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1760400087256&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
N, *M = map(int,sys.stdin.read().strip().split())

M.sort()

print('\n'.join(map(str,M)))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2750.%E2%80%85%EC%88%98%E2%80%85%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0&quot;&gt;Coding_Test/백준/Bronze/2750. 수 정렬하기 at main &amp;middot; K-MarkLee/Coding_Test &amp;middot; GitHub&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1760400109314&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/2750. 수 정렬하기 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2750.%E2%80%85%EC%88%98%E2%80%85%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2750.%E2%80%85%EC%88%98%E2%80%85%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sWeG9/hyZLcZIqoz/KMMknYMyNB2D9N52eSQsUk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bK3j0B/hyZKJ54l63/k36Rg9O7fJJL1hnSE6Q9XK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2750.%E2%80%85%EC%88%98%E2%80%85%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2750.%E2%80%85%EC%88%98%E2%80%85%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sWeG9/hyZLcZIqoz/KMMknYMyNB2D9N52eSQsUk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bK3j0B/hyZKJ54l63/k36Rg9O7fJJL1hnSE6Q9XK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/2750. 수 정렬하기 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/347</guid>
      <comments>https://mark-theater.tistory.com/347#entry347comment</comments>
      <pubDate>Tue, 14 Oct 2025 09:01:52 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (설탕배달)</title>
      <link>https://mark-theater.tistory.com/346</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 2839번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설탕배달&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzEtL7/btsQ9y4Us0x/ZzjAEaFnYKkLBN9aTDPgg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzEtL7/btsQ9y4Us0x/ZzjAEaFnYKkLBN9aTDPgg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzEtL7/btsQ9y4Us0x/ZzjAEaFnYKkLBN9aTDPgg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzEtL7%2FbtsQ9y4Us0x%2FZzjAEaFnYKkLBN9aTDPgg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1447&quot; height=&quot;944&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;944&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋 N은 무게이다. 이때, 3키로봉지와 5키로 봉지를 사용하여 최소갯수로 모든 무게를 담을 수 있을때, 그 최소갯수를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 만약 무게가 딱 떨어지지 않는다면 -1을 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제도 2가지 방법으로 풀 수 있을거 같은데 한개밖에 우선은 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 생각한 첫번째 방법은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무조건 최소값을 출력해야하니까 5키로 봉지에 최대한 담아야 한다는것을 이용해서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N을 무조건 5로 먼저 나눈다. divmod를 사용하면, 몫 과 나머지를 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 나머지가 0이면 몫을 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통은 나머지가 생길 것이다.&amp;nbsp;&lt;br /&gt;이때, 나머지가 3이 아닌 경우에는 5키로 봉지의 몫을 뺀다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 n이 16일때 5로 나누게 되면 3과 1이 나오는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 나머지가 1이니까 5x2로 하고 나머지를 6으로 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 그 나머지가 3의 배수면 카운트해서 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 5키로 봉지의 갯수가 0인데도 3의 배수가 아니라면 -1을 출력한다. (이는 5와 3으로 만들 수 없는 수)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각해보니 반복문을 사용할때는 i가 0부터 올라가는 편이 훨씬 사용하기가 편하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐면 5의 최대치에서부터 빼는것에는 5의 최대치를 미리 계산해야하기 때문.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 반복문 i 를 3에 곱한 후 divmode로 5로 나눴을때의 몫과 나머지를 사용하여 계산하는것으로 변경.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 틀려서 보니, i를 1부터 시작했다 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 생각해두고도 5의 배수로만 되있을 수 있는 수의 경우를 제거해버린 셈이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1760358022776&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
N = int(sys.stdin.read().strip())
result = -1
for i in range(N//3+1):
    a, b = divmod(N-3*i,5)
    if b == 0 :
        result = a+i
        break
print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행이 이번에는 44ms로 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/2839.%E2%80%85%EC%84%A4%ED%83%95%E2%80%85%EB%B0%B0%EB%8B%AC&quot;&gt;Coding_Test/백준/Silver/2839. 설탕 배달 at main &amp;middot; K-MarkLee/Coding_Test &amp;middot; GitHub&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1760358033303&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Silver/2839. 설탕 배달 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/2839.%E2%80%85%EC%84%A4%ED%83%95%E2%80%85%EB%B0%B0%EB%8B%AC&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/2839.%E2%80%85%EC%84%A4%ED%83%95%E2%80%85%EB%B0%B0%EB%8B%AC&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b66t4x/hyZLAfhLcl/oBKZL53k2773vX3BLc6ZU0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bGXl2f/hyZLxbM3NN/QgxJphDUiPd3GF8Knf8NqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/2839.%E2%80%85%EC%84%A4%ED%83%95%E2%80%85%EB%B0%B0%EB%8B%AC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/2839.%E2%80%85%EC%84%A4%ED%83%95%E2%80%85%EB%B0%B0%EB%8B%AC&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b66t4x/hyZLAfhLcl/oBKZL53k2773vX3BLc6ZU0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bGXl2f/hyZLxbM3NN/QgxJphDUiPd3GF8Knf8NqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Silver/2839. 설탕 배달 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/346</guid>
      <comments>https://mark-theater.tistory.com/346#entry346comment</comments>
      <pubDate>Mon, 13 Oct 2025 21:20:41 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (영화감독 숌)</title>
      <link>https://mark-theater.tistory.com/345</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 1436번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;영화감독 숌&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cafbg9/btsQ3ZW5hij/3M3ni8dsBtfiEZ9ojCKX30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cafbg9/btsQ3ZW5hij/3M3ni8dsBtfiEZ9ojCKX30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cafbg9/btsQ3ZW5hij/3M3ni8dsBtfiEZ9ojCKX30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcafbg9%2FbtsQ3ZW5hij%2F3M3ni8dsBtfiEZ9ojCKX30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1159&quot; height=&quot;852&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 입력값 N을 받았을때, 666이 들어가는 숫자를 작은순서대로 나열했을때의 N번째의 숫자를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 쉽게&amp;nbsp;&lt;br /&gt;666 &amp;gt; 1666 &amp;gt; 2666 &amp;gt; 3666&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 갈 것 같지만, 5666 이후는 6666 보다 6661 이 더 작기 때문에 서치를 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 계산을 하는건 잘 모르겠고, 브루탈 포스를 이용한다면, N은 10000보다 작거나 같은 자연수 이기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;result= []리스트를 만들어서 모든 666이 들어간 숫자를 1부터 10000까지 서치해서 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, N이 들어오면, result[n-1]을 출력하면 될 것같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 투포인터를 사용을 해봐도 좋을 듯 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 투포인터를 사용하면 범위 설정에 문제가 있다. 왜냐면 N이 10000이지 최대값이 100000이 아니기 때문.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 명백한 문제파악의 실수이다 ㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 투포인터를 사용하지 않고 그대로 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 1번 방식처럼 모든 숫자를 미리 넣고 N-1로 찾는게 아닌&lt;br /&gt;&lt;br /&gt;N-1 번 까지만 찾으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 조건을 넣어서 len(result) == N-1: break 하게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1759995543442&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
c, i = 0, 0
while c != n:
    if i%10 != 6:
        t = i*1000 + 666
        c += 1
    else:
        six, tmp = 1, i
        while tmp%10 == 6:
            six *= 10
            tmp //= 10
        
        for j in range(six):
            t = i*1000 + 666//six*six + j
            c += 1
            if c == n: break
    i += 1
print(t)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1436.%E2%80%85%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85%E2%80%85%EC%88%8C&quot;&gt;Coding_Test/백준/Silver/1436. 영화감독 숌 at main &amp;middot; K-MarkLee/Coding_Test &amp;middot; GitHub&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1759995561900&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Silver/1436. 영화감독 숌 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1436.%E2%80%85%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85%E2%80%85%EC%88%8C&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1436.%E2%80%85%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85%E2%80%85%EC%88%8C&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qs6FA/hyZKOERyso/MyFBDjJArKa7lPiPzWgA50/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bij72x/hyZLkJRJYu/MS2o9FW24d3EKJ1EckErpk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1436.%E2%80%85%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85%E2%80%85%EC%88%8C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1436.%E2%80%85%EC%98%81%ED%99%94%EA%B0%90%EB%8F%85%E2%80%85%EC%88%8C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qs6FA/hyZKOERyso/MyFBDjJArKa7lPiPzWgA50/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bij72x/hyZLkJRJYu/MS2o9FW24d3EKJ1EckErpk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Silver/1436. 영화감독 숌 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/345</guid>
      <comments>https://mark-theater.tistory.com/345#entry345comment</comments>
      <pubDate>Thu, 9 Oct 2025 16:39:20 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (체스판 다시 칠하기)</title>
      <link>https://mark-theater.tistory.com/344</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 1018번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;체스판 다시 칠하기&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;885&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chGuKX/btsQQnxIdEl/90kFbURYECyugbg3hQXlF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chGuKX/btsQQnxIdEl/90kFbURYECyugbg3hQXlF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chGuKX/btsQQnxIdEl/90kFbURYECyugbg3hQXlF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchGuKX%2FbtsQQnxIdEl%2F90kFbURYECyugbg3hQXlF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1190&quot; height=&quot;885&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;885&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ydxtT/btsQQhqIEL1/Icz99fYPElOSY9WDoRdKC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ydxtT/btsQQhqIEL1/Icz99fYPElOSY9WDoRdKC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ydxtT/btsQQhqIEL1/Icz99fYPElOSY9WDoRdKC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FydxtT%2FbtsQQhqIEL1%2FIcz99fYPElOSY9WDoRdKC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1158&quot; height=&quot;736&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋의 두 숫자는 n x m 사이즈의 입력값을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이때, n x m의 사이즈 중 8 x 8의 사이즈의 체스판을 필요로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이 8 x 8의 사이즈 중 가장 적게 색을 칠해야 하는 경우, 그 숫자를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제를 풀기 위해서는 2가지의 경우를 모두 체크해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나는 wb시작 그리고 다른 하나는 bw시작이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선은 먼저 각각wb와 bw의 리스트를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;WBWBWBWB&quot;&quot;BWBWBWBW&quot;을 x 4해서 wb를&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;BWBWBWBW&quot;&quot;WBWBWBWB&quot;를 x 4해서 bw를 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 인풋값을 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 온전하게 비교를 하기 위해 줄을 살려야 함으로&lt;br /&gt;인풋을 받을때는 N을 사용해서 list = [input() for _ in range(N)]으로 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 몇줄까지 받을지를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 8 x 8의 사이즈를 비교하는것이니, n과 m에 -7을 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스는 0 부터 라서 그렇다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 2중 반복문을 통해서 list[i][j] 일때, wb나 bw의 [i][j]를 검사한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 틀린 경우를 매개변수로 저장하고, 최대치와, wb그리고 bw를 비교 (min을 사용)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 최대치를 사용하는 이유는 글로벌로 저장해야하기 때문.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 i와 j를 좌표로 하면 문제가 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 풀다보니 생긴 문제가 i 와 j는 그저 8 x 8의 범위를 설정 한 것이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 그 8 x 8 범위 안에서의 좌표값을 따로 구해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 그럼 그 안에 2중 반복문을 한개 더 만들어야 함을 뜻한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x 와 y를 추가하여 list[x][y]와 wb그리고 bw와 비교를 해야 함이 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서도 단순하게 x와 y가 아니라 8 x 8의 좌표는 계속 움직일 테니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i+x와 j+y가 됨이 맞다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1759988713759&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

N, M = map(int,sys.stdin.readline().strip().split())
num = [sys.stdin.readline().strip() for _ in range(N)]

wb = [&quot;WBWBWBWB&quot;,&quot;BWBWBWBW&quot;]*4
bw = [&quot;BWBWBWBW&quot;,&quot;WBWBWBWB&quot;]*4
result = 64

for i in range(N-7):
    for j in range(M-7):
        wb_count = 0
        bw_count = 0
        for x in range(8):
            for y in range(8):
                if num[i+x][j+y] != wb[x][y]:
                    wb_count += 1
                if num[i+x][j+y] != bw[x][y]:
                    bw_count += 1
                    
        result = min(wb_count, bw_count, result)

print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1018.%E2%80%85%EC%B2%B4%EC%8A%A4%ED%8C%90%E2%80%85%EB%8B%A4%EC%8B%9C%E2%80%85%EC%B9%A0%ED%95%98%EA%B8%B0&quot;&gt;Coding_Test/백준/Silver/1018. 체스판 다시 칠하기 at main &amp;middot; K-MarkLee/Coding_Test &amp;middot; GitHub&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1759988929392&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Silver/1018. 체스판 다시 칠하기 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1018.%E2%80%85%EC%B2%B4%EC%8A%A4%ED%8C%90%E2%80%85%EB%8B%A4%EC%8B%9C%E2%80%85%EC%B9%A0%ED%95%98%EA%B8%B0&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1018.%E2%80%85%EC%B2%B4%EC%8A%A4%ED%8C%90%E2%80%85%EB%8B%A4%EC%8B%9C%E2%80%85%EC%B9%A0%ED%95%98%EA%B8%B0&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOBUGe/hyZKDQPp0C/D7g6uXrSh924zBmxeGcrNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bmlUy6/hyZKNlCgpr/mEFC1gMoOXKv4QyN9VF4p0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1018.%E2%80%85%EC%B2%B4%EC%8A%A4%ED%8C%90%E2%80%85%EB%8B%A4%EC%8B%9C%E2%80%85%EC%B9%A0%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/1018.%E2%80%85%EC%B2%B4%EC%8A%A4%ED%8C%90%E2%80%85%EB%8B%A4%EC%8B%9C%E2%80%85%EC%B9%A0%ED%95%98%EA%B8%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOBUGe/hyZKDQPp0C/D7g6uXrSh924zBmxeGcrNk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bmlUy6/hyZKNlCgpr/mEFC1gMoOXKv4QyN9VF4p0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Silver/1018. 체스판 다시 칠하기 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/344</guid>
      <comments>https://mark-theater.tistory.com/344#entry344comment</comments>
      <pubDate>Thu, 9 Oct 2025 14:48:54 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (수학은 비대면강의입니다)</title>
      <link>https://mark-theater.tistory.com/343</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;백준 19532번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수학은 비대면강의입니다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;898&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KjzrS/btsQQHadC9L/I7oNW6S9EMiTpRjWR3Aid0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KjzrS/btsQQHadC9L/I7oNW6S9EMiTpRjWR3Aid0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KjzrS/btsQQHadC9L/I7oNW6S9EMiTpRjWR3Aid0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKjzrS%2FbtsQQHadC9L%2FI7oNW6S9EMiTpRjWR3Aid0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1169&quot; height=&quot;898&quot; data-origin-width=&quot;1169&quot; data-origin-height=&quot;898&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 연립방정식이 존재하고 이 a,b,c,d,e,f에 맞는 숫자가 인풋으로 들어온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이때, 문제의 정답인 x와 y를 출력해라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 풀이 방법은 2개로 나뉠 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 항목 자체가 부르탈 포스 즉 모든 가능성을 탐색 하는것 이기 때문에 조건에 있는 -999에서 999 아래의 정수를 모두 대입해서 찾는것과, 다른 1개는 실제로 연립방적식의 풀이를 그대로 차용해서 푸는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간초가 1초이지만 범위가 -999 에서 999 이기 때문에 그렇게 많은 범위를 탐색하지 않아서 가능하지 않을가 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선은 연립방정식에 대해서 먼저 공부를 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저렇게 두 식이 존재하면 다른 하나의 식에서 x나 y를 가지고 하나의 식에 대입하여 x내지는 y를 특정하는 방식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번식을 사용해서 x를 구하면, x = c-by//a가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, dx+ey=f에 대입을 하자면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;d(c-by//2)+ey-f가 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dc-dby+eay=fa&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-dby+eay = fa-dc&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;y(-db+ea) = fa-dc&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 y = fa-dc // ea-db가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 x = c-by//a에 넣고 계산을 하게되면, 결국 x = ce-bf//ea-db가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용해서 x와 y를 구할 수 있고 아니면 그냥 -999에서 999까지의 모든 수를 넣었을때,&lt;br /&gt;ax+by=c 그리고 dx+ey=f에 해당하는 x와 y를 구한다. 이는 2중 루프로 n^2만큼 만 탐색하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 순차적 탐색 방법&lt;/p&gt;
&lt;pre id=&quot;code_1758866597690&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a,b,c,d,e,f = map(int,sys.stdin.read().strip().split())

for i in range(-999,1000):
    for j in range(-999,1000):
        if (a*i)+(b*j)==c and (d*i)+(e*j)==f:
            print(f&quot;{i} {j}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 식으로 계산 방법&lt;/p&gt;
&lt;pre id=&quot;code_1758866761869&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a,b,c,d,e,f = map(int,sys.stdin.read().strip().split())

print(f&quot;{((c*e)-(b*f))//((e*a)-(d*b))} {((f*a)-(d*c))//((e*a)-(d*b))}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/19532.%E2%80%85%EC%88%98%ED%95%99%EC%9D%80%E2%80%85%EB%B9%84%EB%8C%80%EB%A9%B4%EA%B0%95%EC%9D%98%EC%9E%85%EB%8B%88%EB%8B%A4&quot;&gt;Coding_Test/백준/Bronze/19532. 수학은 비대면강의입니다 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758866772575&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/19532. 수학은 비대면강의입니다 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/19532.%E2%80%85%EC%88%98%ED%95%99%EC%9D%80%E2%80%85%EB%B9%84%EB%8C%80%EB%A9%B4%EA%B0%95%EC%9D%98%EC%9E%85%EB%8B%88%EB%8B%A4&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/19532.%E2%80%85%EC%88%98%ED%95%99%EC%9D%80%E2%80%85%EB%B9%84%EB%8C%80%EB%A9%B4%EA%B0%95%EC%9D%98%EC%9E%85%EB%8B%88%EB%8B%A4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bFM2lH/hyZKfvbXQv/4RL9iKD6Xfi4q6LlRIwnKK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/xidT6/hyZKcd9LZV/LWA9UGAKkoqJVVAgcaCdW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/19532.%E2%80%85%EC%88%98%ED%95%99%EC%9D%80%E2%80%85%EB%B9%84%EB%8C%80%EB%A9%B4%EA%B0%95%EC%9D%98%EC%9E%85%EB%8B%88%EB%8B%A4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/19532.%E2%80%85%EC%88%98%ED%95%99%EC%9D%80%E2%80%85%EB%B9%84%EB%8C%80%EB%A9%B4%EA%B0%95%EC%9D%98%EC%9E%85%EB%8B%88%EB%8B%A4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bFM2lH/hyZKfvbXQv/4RL9iKD6Xfi4q6LlRIwnKK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/xidT6/hyZKcd9LZV/LWA9UGAKkoqJVVAgcaCdW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/19532. 수학은 비대면강의입니다 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/343</guid>
      <comments>https://mark-theater.tistory.com/343#entry343comment</comments>
      <pubDate>Fri, 26 Sep 2025 15:09:37 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 (탐색 범위 최적화)</title>
      <link>https://mark-theater.tistory.com/342</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 탐색 범위 최적화&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에 대해서 알아보자&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것은 이전 코딩테스트 문제의 풀이들을 보고 gpt와 공부를 통해 알게된점을 나열한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬의 탐색 범위&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서는 탐색을 하는 경우가 매우 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 한 값을 찾기위해서 모든 조건을 탐색하고, 조건을 위한 한 값을 찾기 위해 탐색을 하는 경우도 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 탐색은 탐색은 기본적으로 정직하게 조건에따라 실행횟수가 정해져 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 2중반복문의 탐색이라면, 각 반복문의 범위의 곱셈만큼 반복을 하게 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이때, 이 탐색의 범위를 줄일 수 있다면 어떨가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 파이썬 2231번 문제 분해합을 통해서 한번 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2231&quot;&gt;2231번: 분해합&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 자연수 N의 최소 생정자를 찾으면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자란, 특정숫자+ 그 숫자 의 각 자리의 합이 N이 되는 수를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 생성자가 123이라면, 123+1+2+3 즉 129가 자연수 N 이 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 모든 조건을 그대로 따라가게 된다면, 1부터 N의 범위 까지 숫자 하나씩 계산을 하면서 해당이 되면 출력을 하는 로직이 나올 것이다.&amp;nbsp; 만약 생성자가 없다면 0을 출력 하기에 최대 N까지의 반복을 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다른사람들의 풀이에는 이상한 로직을 보았는데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1부터 N까지가 아닌 1 혹은 N-53중 큰 수를 시작으로 하는 로직이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 이게 왜 이런지 이해할 수 없었고 찾아보기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;파이썬의 탐색 범위 최적화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 N-53은 탐색 범위 최적화 보다는 전체 프로세스의 최적화에 조금더 가깝다고 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 왜 N-53을 하는지 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이 문제 분해합에서는 생성자 라는 것을 찾아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자는 특정 숫자에 특정숫자의 모든 자리수의 합이 되야한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 이는 N = 특정숫자 + 특정숫자 자리수의 합 일때, N-특정숫자 자리수 = 특정숫자 가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i를 특정숫자, s(i)를 자리수의합이라고 한다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i+s(i)=N이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 s(i)의 최대치는 9 * d이다. 왜냐면 특정 자리수의 최대값은 결국 9이며 이때 자리수의 합을 곱하면 최대치의 특정수의 자리수의 합의 최대치가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 결국 i 가 99라고 가정했을때의 s(i)가 18이기 때문에&lt;br /&gt;i가 99가 아니라면, 즉 98이라면, N은 더 작아질 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐면, 이미 N에 최대치를 빼고 있는 상태에서 99가 아닌 98이 들어가면&amp;nbsp;&lt;br /&gt;i 에는 98+9+8 즉 116 이는 N이다.&lt;br /&gt;98 과 116-18 즉 97이된다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이는 i가 N이 되는 방식의 역이용인데, i + s(i)가 N이라 여기서 이미 최대치 즉 99라고 가정을 하고 N에 뺏기 때문에, 최대치가 아닌이상에야 점점 줄어들 수 밖에 없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 이는&amp;nbsp; i &amp;gt;= N-9d가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 즉 max(1,N-9d)를 하면 1과 N-9d중 더 큰 수를 고르게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이때 왜 -53을 쓰는지를 이야기해 주겟다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 N-9d를 하려면 새로운 개념인 d즉 len(input)을 해야한다. 그러기 때문에 최대치인 수6자리의 최대치인 53을 잡고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정을 하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 완벽한 최적화는 아니지만, N이 2자리수 이상이라면 어느정도 효과적으로 탐색의 범위를 지울 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 이 문제는 max (1, N-9d)에서 N까지 반복하게 되며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i+sum(map(int,str(i))) 가 N이면 이를 프린트 하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 최소부터 시작을 했기 때문에 가장먼저 나오는 수가 최소의 분해수이며 N을 넘어가게 되면 0을 프린트 하면된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758790919122&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
result = 0

for i in range(max(1, N - len(str(N)) * 9), N):
    s = i + sum(map(int, str(i)))
    if N == s:
        result = i
        break

print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>용어정리/Python</category>
      <category>백준 2231번</category>
      <category>분해합</category>
      <category>탐색의 최적화</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/342</guid>
      <comments>https://mark-theater.tistory.com/342#entry342comment</comments>
      <pubDate>Thu, 25 Sep 2025 18:02:36 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 (투 포인터)</title>
      <link>https://mark-theater.tistory.com/341</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 투 포인터 기법 에 대해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알아보자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;투 포인터&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;투 포인터는 각각 다른 스타트를 가진 두 지점에서 한 곳으로 점점 모이면서 탐색을 하는 기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 특정 문제에서 이 기법을 사용하여서 문제를 해결한 코드를 보고 이를 이해하며, 설명하고자 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 문제는 백준 2798번 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2798&quot;&gt;2798번: 블랙잭&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 이 문제를 풀기전에 투 포인터의 로직을 설명을 해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 투 포인터란 정렬 기준을 전재로 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1758594912084&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sorted_num = [1,2,3,4,5]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 정렬된 리스트가 존재할때, 하나의 포인트는 1, 또다른 포인트는 5 에서부터 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 포인트 1번은 sorted_num[0] 시작&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포인트 2번은 sorted_num[-1]에서 시작 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이유는 그 다음 로직때문에 존재하는데, 결국 탐색은 특정한 조건을 만족하기 위한 수 혹은 조건을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 결국 두 수로 인해서 생기는 조건을 만족하면 그 값을 저장하고 추가적인 로직을 통하여 정답을 도출한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 그저 예시로 두 숫자를 더했을때 조건 N을 만족해야한다고 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 N이 3이라고 생각해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 덧셈은 1+5가 될 것이다. 이때 6은 N보다 크다. 그렇다면 포인트 2번이 앞으로 전진한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이유는 정렬을 했기 때문에, 포인트 2번이 전진을 하면 즉 합이 작아질 것이고, 만약 N보다 작다면 포인트 1번을 전진해야 합이 커질 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 말하는 전진은 가운데 한 지점 즉 서로 교차하는 점까지의 전진을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 1+5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 1+4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 1+3&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 1+2&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 순으로 반복을 하며 N == pointer1 + pointer2 가 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 아래 처럼 구현 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1758595752012&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sorted_list = [1,2,3,4,5]
N = 3
pointer1 = 0
pointer2 = len(sorted_list)-1

while pointer1 &amp;lt; pointer2:
    num_sum = sorted_list[pointer1]+sorted_list[pointer2]
    if num_sum == N:
        print(sorted_list[pointer1],sorted_list[pointer2])
        break
    elif num_sum &amp;gt; N:
        pointer2 -= 1
    else:
        pointer1 += 1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 정확하게 1개의 조합만 찾는것이 아닌 조건문을 더 붙여서 break하지 않고 모든 조합을 찾거나 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 이용해서 백준 2798번 문제를 풀어보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 문제 블랙잭은 3가지 숫자의 조합을 찾아야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;249&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS2Ov7/btsQKLK6Gxf/rNrDgJF0d5f0mzedqjGiiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS2Ov7/btsQKLK6Gxf/rNrDgJF0d5f0mzedqjGiiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS2Ov7/btsQKLK6Gxf/rNrDgJF0d5f0mzedqjGiiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS2Ov7%2FbtsQKLK6Gxf%2FrNrDgJF0d5f0mzedqjGiiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1149&quot; height=&quot;249&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;249&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 투포인트에서 문제가 될 수있는게, 투 포인터는 현재의 개념으로는 2개의 각 포인터로 움직여서 탐색하는 것 인데, 어떻게 3숫자의 조합을 알 수 있느냐 라는 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 쉽게 해결이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이 문제의 아주 정직한 풀이 방식은 3중 반복문을 통하여 모든 조합을 찾는것 일것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 3중 반복문이 뭔지를 봐야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2중 반복문은 i가 특정 조건에 따라 증가할때 그 각 증가하는 숫자에서 j가 특정 조건에 따라 증가하며 더하거나 곱하거나 다른 작업을 하는 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 i가 1-3 까지이고 j가 1-5까지이면 i가 1인 경우에 j는 1-5까지 2인경우에도... 3인경우까지 j는 1-5를 이어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 투 포인터를 쓰는거는 2 수의 모든 조합 즉 2중 반복문을 뜻한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 첫번째 루프를 지정하고 그 안에서 투 포인트를 쓰면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이는 어디까지나 특정 조건을 맞추기 위함이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 2중 반복문 = 모든 조합을 찾음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;- 투 포인터 = 모든 조합을 찾지는 못함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면 투 포인터는 특정 조건에 맞을때 스킵을 하기 때문에 모든 조합을 찾기는 어렵다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이를 쓰는 이유는 특정조건에 맞는 모든 조합은 찾을 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 그러면 백준 2798번 블랙잭 문제를 풀어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 N과 M이 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;N은 숫자의 갯수이며, M은 특정 조건이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 N개의 숫자의 3가지 조합의 합에서 M과 같거나 가장 가까운 조합의 합을 구하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758599418553&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

N,M,*num_list=map(int,sys.stdin.read().strip().split())
result = 0
num_list.sort()

for i in range(N-2):
    pointer1 = i+1
    pointer2 = N-1
    
    while pointer1 &amp;lt; pointer2:
        sum_num = num_list[i]+num_list[pointer1]+num_list[pointer2]
        
        if sum_num &amp;lt;= M:
            if sum_num &amp;gt; result:
                result = sum_num
            pointer1 += 1
        else:
            pointer2 -= 1
            
        if result == M:
            print(result)
            sys.exit(0)
print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 풀면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 투 포인트란&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 조건을 만족하기까지 두개의 포인터를 각각 움직여 조합을 찾아내는것으로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 모든 조합을 찾을 수는 없지만, 조건을 만족하는 조합을 찾을 순 있으며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 불필요한 조합의 찾기를 최소화하여 탐색의 시간을 단축 시킬 수 있다.&lt;/p&gt;</description>
      <category>용어정리/Python</category>
      <category>탐색</category>
      <category>투 포니터</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/341</guid>
      <comments>https://mark-theater.tistory.com/341#entry341comment</comments>
      <pubDate>Tue, 23 Sep 2025 13:00:26 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (분해합)</title>
      <link>https://mark-theater.tistory.com/340</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준2231번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;분해합&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zlVZE/btsQKC1OdTI/hTguNnqhNRpgIIkYPZG4E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zlVZE/btsQKC1OdTI/hTguNnqhNRpgIIkYPZG4E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zlVZE/btsQKC1OdTI/hTguNnqhNRpgIIkYPZG4E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzlVZE%2FbtsQKC1OdTI%2FhTguNnqhNRpgIIkYPZG4E1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1185&quot; height=&quot;590&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 입력값을 받아서 최소 생성자를 구해라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(생성자는 어떠한 수와 1의 자리수의 합이 그 숫자가 되는 수를 의미 즉 예시의 245는 245+2+4+5 즉 256이다. 그러면 256의 생성자는 245인것이다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이때 생성자가 없다면 0을 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이... 문제는 시간의 문제인것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국에는 입력값의 자리수를 확인해서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 자리수의 모든 조합을 계산을 해보는 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 되면 타임아웃 하지 않을가 걱정이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 모든조합 을 다 계산하지 않고 문제를 풀기에는 아직은 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 특정 n*n의 조합일때, 각 조합의 combined_num과 sum(list)를 더해서 N일때의 최소수를 계속 업데이트 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 combined_num은 무작위조합의 리스트에 ''.join을 사용하여 합하고 int를 붙여 정수로 변경한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전제자체가 틀렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇자리 숫자인지 모르고 n*n을 하는게 문제였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러면 기하급수적으로 늘어날 뿐이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 O(n)의 방법을 써보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 1부터 N까지 숫자를 검증하는것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 되면 제일먼저 찾은 숫자가 최소숫자가 될것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 i를 1부터 N까지 반복, 이때, i + 각자리수 합해야하지 sum(map(int,str(i)))하면 되지 않을가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 i를 int로 분해한다음 합치는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때의 값이 N.이라면 print i 아니라면 반복.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 result = 0으로 하면 결국은 없다면 0이 출력될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758548477354&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;N = int(input())
result = 0

for i in range(1,N):
    sum_num = i + sum(map(int,str(i)))
    if sum_num == N:
        result = i
        break
        
print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2231.%E2%80%85%EB%B6%84%ED%95%B4%ED%95%A9&quot;&gt;Coding_Test/백준/Bronze/2231. 분해합 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/340</guid>
      <comments>https://mark-theater.tistory.com/340#entry340comment</comments>
      <pubDate>Mon, 22 Sep 2025 22:42:14 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (블랙잭)</title>
      <link>https://mark-theater.tistory.com/339</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 2798번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;블랙잭&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;916&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1bcB7/btsQEeuemIA/wjWAkdA1672fxzLn1g9grK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1bcB7/btsQEeuemIA/wjWAkdA1672fxzLn1g9grK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1bcB7/btsQEeuemIA/wjWAkdA1672fxzLn1g9grK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1bcB7%2FbtsQEeuemIA%2FwjWAkdA1672fxzLn1g9grK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1175&quot; height=&quot;916&quot; data-origin-width=&quot;1175&quot; data-origin-height=&quot;916&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구 사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 카드 개수 n과 최대숫자 m을 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. n개의 숫자중 3개를 더해 m과 가장 가까운 수를 출력해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 이 전 알고리즘에서 힌트를 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3숫자의 모든 조합 즉 모든 합을 찾아서 가장 큰 숫자만을 출력하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 방법이 2개가 존재한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 조합을 더해서 리스트에 append시킨 후, max로 최대 수 찾기.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문을 통해서 중간에 수 3개의 더함이 m과 동일하면 멈추기. 그렇지 않나면 result 변수를 설정하고 이게 새로운 덧샘보다 작아지면 업데이트 하기 로 구현 할 수 있을거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 이 조합을 어떻게 더하게 구현을 하느냐가 문제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반복문을 해서 3중으로 하면 되지 않을가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i는 n까지, j는 i+1부터 n까지 k는 j+1부터 n 까지 해서 인풋의 n개 숫자들을 리스트로 받아서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i인덱스 + j인덱스 + k인덱스 를 append하거나 올리는 방식으로.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 모든 조합을 찾는 것 보다 m과 동일 하면 중간에 멈추는게 맞다고 생각한다.&lt;/p&gt;
&lt;pre id=&quot;code_1758248296665&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
n,m = map(int,sys.stdin.readline().strip().split())
num = list(map(int,sys.stdin.readline().strip().split()))

result = 0
found = False

for i in range(n):
    if found:
        break
    for j in range(i+1,n):
        if found:
            break
        for k in range(j+1,n):
            sum = num[i]+num[j]+num[k]
            if sum == m:
                print(m)
                found = True
                break
            elif sum &amp;gt; result and sum &amp;lt;= m:
                result = sum
if not found:
    print(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 문제는 이렇게 하면 3중이기 때문에 break를 여러번 해줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 return을 써보면 어떨가?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수로 만들어서 중간에 값을 return하면 멈추는 성질을 이용해서 작성해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758248765890&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

def newblackjack(n,m,cards):
    final = 0
    for i in range(n):
        for j in range(i+1,n):
            for k in range(j+1,n):
                total = cards[i]+cards[j]+cards[k]
                if total == m:
                    return m
                elif total &amp;lt; m and total &amp;gt; final:
                    final = total
    return final
                
n,m,*cards = map(int,sys.stdin.read().strip().split())

print(newblackjack(n,m,cards))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD&quot;&gt;Coding_Test/백준/Bronze/2798. 블랙잭 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758248813102&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/2798. 블랙잭 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e3ipN/hyZJc786NA/fSpo40DI7u1gjnU1rWMC7k/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bmxtrm/hyZJpeykyf/2kEvgkdvNTbHtZlCkVEix0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e3ipN/hyZJc786NA/fSpo40DI7u1gjnU1rWMC7k/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bmxtrm/hyZJpeykyf/2kEvgkdvNTbHtZlCkVEix0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/2798. 블랙잭 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/339</guid>
      <comments>https://mark-theater.tistory.com/339#entry339comment</comments>
      <pubDate>Fri, 19 Sep 2025 11:29:01 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 점근적 표기 1)</title>
      <link>https://mark-theater.tistory.com/338</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준24313번 문제&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 점근적 표기 1&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBmbXv/btsQDJHAyMe/MpIWKph9QYdgcsgtofwKok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBmbXv/btsQDJHAyMe/MpIWKph9QYdgcsgtofwKok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBmbXv/btsQDJHAyMe/MpIWKph9QYdgcsgtofwKok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBmbXv%2FbtsQDJHAyMe%2FMpIWKph9QYdgcsgtofwKok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1049&quot; height=&quot;932&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 첫째 줄에 함수의 값 a1과 a0가 들어온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 둘째 줄에 c가 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 셋때 줄에 n0이 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 이때 빅 오 표기법의 증명을 만족하는지 확인하고 만족한다면 1을 아니면 0을 출력해라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅 오 표기법 정리한 것과 같이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f(n) = O(g(n))을 증명해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 f(n) &amp;lt;= c * g(n) 을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상수아래에 있을때 c*g(n)이 f(n)보다 크거나 같아야 범위 안에 있다고 볼 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 빅 오 표기법에 대해서 이해하기 쉽도록 만들어진&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 산수의 문제이지만 좀 어려워서 공부를 하고 이를 블로그에 정리를 하고 난 후에 문제를 푸는 중이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 간단한 산수 인것은 예제 아래에서 알 수 있었지만, 뭔가 이런게 아닌거같아서 찾아보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅오표기법 즉 시간복잡도 내지 다항식 등과 연관이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 문제에서는 함수 f(n) = a1n+a0이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 (a1*n0)+a0 &amp;lt;= n0*c를 하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1758180144652&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a1,a0,c,n0 = map(int,sys.stdin.read().strip().split())

if (a1*n0)+a0 &amp;lt;= n0*c :
    print(1)
else:
    print(0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;틀려서 알고 보니 빅 오 표기법에는 다른 조건도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a1 &amp;lt;= c라는 조건도 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 and를 통해서 조건을 추가하면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 악랄함은 빅 오 표기법을 모르면 풀 수가 없게 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매우 악랄하다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758180381985&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a1,a0,c,n0 = map(int,sys.stdin.read().strip().split())

if a1&amp;lt;=c and (a1*n0)+a0 &amp;lt;= n0*c :
    print(1)
else:
    print(0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/24313.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%A0%90%EA%B7%BC%EC%A0%81%E2%80%85%ED%91%9C%EA%B8%B0%E2%80%851&quot;&gt;Coding_Test/백준/Silver/24313. 알고리즘 수업 － 점근적 표기 1 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758180391501&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Silver/24313. 알고리즘 수업 － 점근적 표기 1 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/24313.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%A0%90%EA%B7%BC%EC%A0%81%E2%80%85%ED%91%9C%EA%B8%B0%E2%80%851&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/24313.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%A0%90%EA%B7%BC%EC%A0%81%E2%80%85%ED%91%9C%EA%B8%B0%E2%80%851&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MsQIj/hyZJtVkf0L/xgzu7kUJzIBtjRczW9bulK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/dGWiCy/hyZI7yRAuI/NWtrRo03jt9XMzNyAUVAz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/24313.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%A0%90%EA%B7%BC%EC%A0%81%E2%80%85%ED%91%9C%EA%B8%B0%E2%80%851&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Silver/24313.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%A0%90%EA%B7%BC%EC%A0%81%E2%80%85%ED%91%9C%EA%B8%B0%E2%80%851&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MsQIj/hyZJtVkf0L/xgzu7kUJzIBtjRczW9bulK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/dGWiCy/hyZI7yRAuI/NWtrRo03jt9XMzNyAUVAz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Silver/24313. 알고리즘 수업 － 점근적 표기 1 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/338</guid>
      <comments>https://mark-theater.tistory.com/338#entry338comment</comments>
      <pubDate>Thu, 18 Sep 2025 16:28:58 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 (빅 오 표기법)</title>
      <link>https://mark-theater.tistory.com/337</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 빅 오 표기법에 대해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알아보자&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;빅 오 표기법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅오 표기법이란 알고리즘의 증가 속도를 표현하는 수학적 표기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘의 시간복잡도 O(n) 를 표현하는 표기법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떠한 알고리즘에서 시간복잡도를 가지고 있을때 이를 식으로 표현한 것이며&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 증명을 통해서 이 알고리즘이 올바른지 파악을 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정확하게 빅 오 표기법이 뭔지 어떤일을 하는지는 아주 정확하게 이해를 하지못했지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 생각하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간복잡도는 n이 무한대로 늘어날때 가장 크게 작동하는 시간 즉 가장 많은 시간에 비중이 큰 값이 들어가는것이며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅 오 표기법은 이러한 알고리즘이 범위(허용가능한 범위 내의 시간의 효율성) 안에 있는지 증명하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅 오 증명은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f(n) = O(g(n))이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 동일하다 라기보다 f(n)의 식이 O(g(n))의 범위 안에 존재해야한다라는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 f(n)은 실질적 알고리즘의 다항식? 이며 g(n)은 기준이 되는 식? 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 기준은 f(n)에서 n이 무한대로 늘어났을때의 커지는 속도가 일정 기준이상이면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무 오래걸리기 때문에 g(n)이라는 기준을 잡고 이 보다는 커지면 안된다라는 기준선에 가깝다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 g(n)이라는 선을 넘었다고 해서 틀렸다는 것이 아닌 비효율적임을 증명하는 것인거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나 예를 들어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 + 1이라는 아주 간단한 풀이를 알고리즘에서 할 수 있다고 가정해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 g(n)은 1정도의 시간이 걸릴거라고 예상을 한다. 이는 기준치 일 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이떄 이 알고리즘은 1 + 1을 하기 위해서 간단한 덧셈이 아닌 1 + 1을 거의 증명하는 수준으로 막대한 계산을 해서 값을 도출해낸다고 생각해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 f(n) 에서의 시간이 10 이라고 한다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f(n) = O(g(n))에 위배가 된다. 그러면 이 알고리즘은 효율적이지 않다 라는걸 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 빅 오 표기법은 어떠한 알고리즘에 시간이 이정도 걸릴 것이다 라는걸 의미하는것이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 증명을 벗어나면 빅 오 표기법의 예상가능한 수치 (n이 무한대에 가깝다고 할때) 보다 훨씬 클것이며 즉 빅 오 표기법이랑 맞지 않음을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;++&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘 문제를 풀면서 안 새로운 사실인데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅오 표기법의 증명은 2개이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;f(n) =O(g(n))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 f(n) &amp;lt;=c*g(n)이다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 a1&amp;lt;=c라는 조건도 포함이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이떄의 a1은 함수(f(n)의 최고차항을 의미한다.&lt;/p&gt;</description>
      <category>용어정리/Python</category>
      <category>f(n)=O(g(n))</category>
      <category>빅 오 증명</category>
      <category>빅 오 표기법</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/337</guid>
      <comments>https://mark-theater.tistory.com/337#entry337comment</comments>
      <pubDate>Thu, 18 Sep 2025 16:08:47 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간6)</title>
      <link>https://mark-theater.tistory.com/336</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24267번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 6&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6HopT/btsQDengmgl/nQKFvSJ8bM6uYUW6u5Wowk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6HopT/btsQDengmgl/nQKFvSJ8bM6uYUW6u5Wowk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6HopT/btsQDengmgl/nQKFvSJ8bM6uYUW6u5Wowk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6HopT%2FbtsQDengmgl%2FnQKFvSJ8bM6uYUW6u5Wowk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1167&quot; height=&quot;836&quot; data-origin-width=&quot;1167&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항의 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋 n을 받은 알고리즘의 수행 횟수를 출력하시오.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이때, 수행 횟수를 다항식으로 치환했을때의 최고차항의 차수를 출력하시오. (다항식이 안되거나 최고차항의 차수가 3이 넘으면 4를 출력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제도 이전의 문제들과 같이 먼저 알고리즘을 파악해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 첫번째 반복문은 1 부터 n-2까지&lt;br /&gt;두번째 반복문은 첫번째 반복문에서 +1 부터 n-1까지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세번째 반복문은 두번째 반복문에서 +1부터 n까지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 알고리즘의 수행 방식은 수학을 잘 모르는 나의 입장에서는 조금 어려웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이제 설명을 해보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 이 문제는 조합을 생각하면 된다. 결국 1부터 n이라는 숫자 사이를 중복되지않고 모두 조합을 하면 된다.&amp;nbsp;&lt;br /&gt;이때 첫번쨰와 두번째 숫자는 n-2와 n-1이라는 제한이 있으므로&lt;br /&gt;n * (n-1) * (n-2) 가 모든 숫자들의 조합이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 중복이 되는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를들어서 이렇게 하게되면 조건에 맞지않고 중복이 생기는 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n을 임의의 숫자로 설정했을때 첫번째숫자가 1이고 두번째 숫자가 2이면 세번쨰 숫자는 3이다. 이것은 가장 초반의 조건이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 모든 숫자들의 조합에서는 이를 따지지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i가 1 j가 3 k가 2인 경우도 존재를 하기 때문에 이를 걸러줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 중복의 경우는 숫자의 선택지의 팩토리얼을 한 만큼 생긴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 3!인 6을 나눠야 한다. 이는 첫번쨰 자리에 올 경우 3개 두번쨰 자리에 올 경우 2개 세번쨰 자리에 올 경우 1개를 곱하는 것과 같기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 n* (n-1) * (n-2) // 3! 이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 다항식으로 나타내면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n&amp;sup3;-3n&amp;sup2;+2n // 6 이 된다. 그러면 최고차항의 차수는 3 이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758172855597&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
print(f&quot;{n*(n-1)*(n-2)//(3*2*1)}\n3&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24267.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%856&quot;&gt;Coding_Test/백준/Bronze/24267. 알고리즘 수업 － 알고리즘의 수행 시간 6 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758173273155&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/24267. 알고리즘 수업 － 알고리즘의 수행 시간 6 at main &amp;middot; K-MarkLee/Codi&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24267.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%856&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24267.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%856&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c37I22/hyZJv6FkFO/BwKPRgpNw61DZQKTVOV9h0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/H92M3/hyZJrwpfMT/c6fmVu41pUKAOwmYPrVMlK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24267.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%856&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24267.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%856&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c37I22/hyZJv6FkFO/BwKPRgpNw61DZQKTVOV9h0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/H92M3/hyZJrwpfMT/c6fmVu41pUKAOwmYPrVMlK/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/24267. 알고리즘 수업 － 알고리즘의 수행 시간 6 at main &amp;middot; K-MarkLee/Codi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/336</guid>
      <comments>https://mark-theater.tistory.com/336#entry336comment</comments>
      <pubDate>Thu, 18 Sep 2025 14:27:55 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간 5)</title>
      <link>https://mark-theater.tistory.com/335</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24266번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 5&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B4I8Z/btsQBCWar3Z/lKObKlMkgqCPn8KupARNHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B4I8Z/btsQBCWar3Z/lKObKlMkgqCPn8KupARNHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B4I8Z/btsQBCWar3Z/lKObKlMkgqCPn8KupARNHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB4I8Z%2FbtsQBCWar3Z%2FlKObKlMkgqCPn8KupARNHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1162&quot; height=&quot;833&quot; data-origin-width=&quot;1162&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래왁 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋이 알고리즘의 n으로 들어갔을때의 수행 횟수를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 수행 횟수를 다항식으로 나타낼때, 최고차항의 차수를 출력하라. (3이상이거나 없다면 4)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제도 이 전 문제들과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 알고리즘을 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 1부터 n까지를 3번 반복하는 3중 반복문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러면 코드 1 은 당연히 n의 3제곱 만큼 반복을 하게 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러하다면 당연하게도 f(n) = n&amp;sup3;가 될것이고 최고차항의 차수는 3이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758093788658&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;{int(input())**3}\n3&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24266.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%855&quot;&gt;Coding_Test/백준/Bronze/24266. 알고리즘 수업 － 알고리즘의 수행 시간 5 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758093998193&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/24266. 알고리즘 수업 － 알고리즘의 수행 시간 5 at main &amp;middot; K-MarkLee/Codi&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24266.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%855&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24266.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%855&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgT1mr/hyZJliqXNr/4ADkWMcpYJ9wksgOuhWE40/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/ybzkl/hyZJgJfKll/XRidoKPkq7tkZteR4Zmt6k/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24266.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%855&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24266.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%855&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgT1mr/hyZJliqXNr/4ADkWMcpYJ9wksgOuhWE40/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/ybzkl/hyZJgJfKll/XRidoKPkq7tkZteR4Zmt6k/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/24266. 알고리즘 수업 － 알고리즘의 수행 시간 5 at main &amp;middot; K-MarkLee/Codi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/335</guid>
      <comments>https://mark-theater.tistory.com/335#entry335comment</comments>
      <pubDate>Wed, 17 Sep 2025 16:26:38 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간 4)</title>
      <link>https://mark-theater.tistory.com/334</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24265번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 4&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biMdLg/btsQCMwyToM/UFm0kK0XzmmoiiZ0dJPqKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biMdLg/btsQCMwyToM/UFm0kK0XzmmoiiZ0dJPqKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biMdLg/btsQCMwyToM/UFm0kK0XzmmoiiZ0dJPqKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiMdLg%2FbtsQCMwyToM%2FUFm0kK0XzmmoiiZ0dJPqKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1214&quot; height=&quot;818&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;818&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋은 알고리즘의 n에 해당하며, 이때의 코드의 수행 횟수를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 수행 횟수를 다항식으로 나타냈을때, 최고차항의 차수를 출력한다. 이때 다항식이 안되거나 3보다 크다면 4를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 n&amp;sup2;에 비례하는 알고리즘이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알고리즘을 먼저 보자면,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 루프는 i 가 1부터 시작해서 n-1까지이며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 루프는 j 가 i+1부터 시작해서 n까지이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 i가 1일때, j는 2 부터 n까지 즉 반복 횟수는 n-1회.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i가 2면, j는 3부터 n 까지 즉 n-2회.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 결국 n-1회 까지 간다면, j는 n-1 부터 n까지 즉 1회가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 이 횟수는 1에서 n-1까지의 덧셈을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 k(k+1)/2 로 계산 할 수 있는데, 그러면 n(n-1)/2가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 식을 풀게되면 n&amp;sup2;-n/2 가 다항식이되고 최고차항은 n&amp;sup2; 즉 O(n&amp;sup2;)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758090057222&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;n = int(input())
print(f&quot;{n*(n-1)//2}\n2&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24265.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%854&quot;&gt;Coding_Test/백준/Bronze/24265. 알고리즘 수업 － 알고리즘의 수행 시간 4 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758090351550&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/24265. 알고리즘 수업 － 알고리즘의 수행 시간 4 at main &amp;middot; K-MarkLee/Codi&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24265.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%854&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24265.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%854&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fz326/hyZJmVUwwP/SEJP3ODGhZV29vXkB1Rfc1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/X8asQ/hyZJistsxM/McMtFVnTRJDuaxB3MApaf0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24265.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%854&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24265.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%854&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fz326/hyZJmVUwwP/SEJP3ODGhZV29vXkB1Rfc1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/X8asQ/hyZJistsxM/McMtFVnTRJDuaxB3MApaf0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/24265. 알고리즘 수업 － 알고리즘의 수행 시간 4 at main &amp;middot; K-MarkLee/Codi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/334</guid>
      <comments>https://mark-theater.tistory.com/334#entry334comment</comments>
      <pubDate>Wed, 17 Sep 2025 15:26:02 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간 3)</title>
      <link>https://mark-theater.tistory.com/333</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24264번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 3&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;821&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cECT1V/btsQAYEZLif/B9zNjQYP4pBS0XPRlbbZK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cECT1V/btsQAYEZLif/B9zNjQYP4pBS0XPRlbbZK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cECT1V/btsQAYEZLif/B9zNjQYP4pBS0XPRlbbZK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcECT1V%2FbtsQAYEZLif%2FB9zNjQYP4pBS0XPRlbbZK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;821&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;821&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋 n 이 들어갔을때의 알고리즘의 수행 횟수를 출력.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 수행 횟수를 다항식으로 표현했을때의 최고차항의 차수를 출력 (3보다 크거나 만들수 없다면 4를 출력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제입력 밑에 보면 나와있듯이 알고리즘의 수행 시간에 대해서 미리 알려주고 시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 알고리즘부터 파악해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자 이번에는 2중 루프인 것을 바로 알 수 있다. 이러면 보통 n^2만큼 반복을 하는것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세히 보면, sum에 이번에는 n번 반복할때, 1부터 n하나마다 1부터 n을 곱해서 sum에 더한다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 다항식은 f(n) = n&amp;sup2; 이 될것이고, 시간복잡도는 O(n&amp;sup2;)이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 최고차항의 차수는 2가 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758081234740&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;{int(input())**2}\n2&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제곱은 파이썬으로 **로 한다. 3*2 = 6 / 3**2 = 9&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24264.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%853&quot;&gt;Coding_Test/백준/Bronze/24264. 알고리즘 수업 － 알고리즘의 수행 시간 3 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/333</guid>
      <comments>https://mark-theater.tistory.com/333#entry333comment</comments>
      <pubDate>Wed, 17 Sep 2025 12:55:21 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간 2)</title>
      <link>https://mark-theater.tistory.com/332</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24263번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 2&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlnexU/btsQAnkhLPc/5mgkObJlpRykWkdiGDO7O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlnexU/btsQAnkhLPc/5mgkObJlpRykWkdiGDO7O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlnexU/btsQAnkhLPc/5mgkObJlpRykWkdiGDO7O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdlnexU%2FbtsQAnkhLPc%2F5mgkObJlpRykWkdiGDO7O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1195&quot; height=&quot;801&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋의 숫자는 주어진 알고리즘의 입력값이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 입력값을 받은 알고리즘의 수행횟수를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이 수행 횟수를 다항식으로 나타내었을때의 최고차항의 차수를 출력한다.(차수가 3보다 크거나 없으면 4를 출력)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 알고리즘을 봐야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 n번반복하는 루프안에 1부터 n의 모든 숫자를 더하는 알고리즘이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 당연하게도 다항식은 그냥 f(n) = n이고 시간복잡도는 몇번을 O(n)이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 최고차항은 1이된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;횟수는 루프이기 때문에 n번만큼 반복이니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 입력값을 프린트하고 1을 프린트 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758080417664&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(input());print(1)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1758080513574&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(f&quot;{input()}\n1&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 둘중에 아무거나 해도 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import sys 안쓴 이유는 인풋값이 1개이며 그냥 작은수 이다보니 굳이 라는 느낌이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24263.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%852&quot;&gt;Coding_Test/백준/Bronze/24263. 알고리즘 수업 － 알고리즘의 수행 시간 2 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758080549215&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/24263. 알고리즘 수업 － 알고리즘의 수행 시간 2 at main &amp;middot; K-MarkLee/Codi&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24263.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%852&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24263.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%852&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/faYqu/hyZI85uxJo/zWWOJRcyMHAPcjelBSwyL1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/dzb4OO/hyZINOj0vC/OctZaTmcK4GLaUYSgnXfH1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24263.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%852&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24263.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%852&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/faYqu/hyZI85uxJo/zWWOJRcyMHAPcjelBSwyL1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/dzb4OO/hyZINOj0vC/OctZaTmcK4GLaUYSgnXfH1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/24263. 알고리즘 수업 － 알고리즘의 수행 시간 2 at main &amp;middot; K-MarkLee/Codi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/332</guid>
      <comments>https://mark-theater.tistory.com/332#entry332comment</comments>
      <pubDate>Wed, 17 Sep 2025 12:42:29 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (알고리즘 수업 - 알고리즘의 수행 시간 1)</title>
      <link>https://mark-theater.tistory.com/331</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 24262번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알고리즘 수업 - 알고리즘의 수행 시간 1&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;765&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNEyUF/btsQCjtKQXX/L9Vobi77XPnREzKhVJOSg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNEyUF/btsQCjtKQXX/L9Vobi77XPnREzKhVJOSg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNEyUF/btsQCjtKQXX/L9Vobi77XPnREzKhVJOSg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNEyUF%2FbtsQCjtKQXX%2FL9Vobi77XPnREzKhVJOSg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1168&quot; height=&quot;765&quot; data-origin-width=&quot;1168&quot; data-origin-height=&quot;765&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋은 알고리즘의 반복 횟수이다. 이때 수행 횟수를 출력해라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이 수행횟수에 대한 다항식의 최고차항의 차수를 출력해라. 이때 다항식으로 나타내지 못하거나 최고차항의 수가 3보다 크면 4를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 시간복잡도를 알게 되면 매우 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 이유는 입력값이 얼마가 들어가던 주어진 알고리즘은 1번은 수행횟수만을 거친다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 항상 결과값은 1이며 O(1)의 최고차항은 0이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 입력값이 뭐가 되었던 간에 항상 1과 0이 출력되야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1758000940224&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(1); print(0)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24262.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%851&quot;&gt;Coding_Test/백준/Bronze/24262. 알고리즘 수업 － 알고리즘의 수행 시간 1 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758000956581&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/24262. 알고리즘 수업 － 알고리즘의 수행 시간 1 at main &amp;middot; K-MarkLee/Codi&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24262.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%851&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24262.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%851&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BKXco/hyZISvcMnk/DxDGTOGGX6RC2R8KVXJdz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bsrcQB/hyZIOsPbcP/tyRoHDxdJSoHwykfvHgnF1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24262.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%851&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/24262.%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%E2%80%85%EC%88%98%EC%97%85%E2%80%85%EF%BC%8D%E2%80%85%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%98%E2%80%85%EC%88%98%ED%96%89%E2%80%85%EC%8B%9C%EA%B0%84%E2%80%851&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BKXco/hyZISvcMnk/DxDGTOGGX6RC2R8KVXJdz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bsrcQB/hyZIOsPbcP/tyRoHDxdJSoHwykfvHgnF1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/24262. 알고리즘 수업 － 알고리즘의 수행 시간 1 at main &amp;middot; K-MarkLee/Codi&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/331</guid>
      <comments>https://mark-theater.tistory.com/331#entry331comment</comments>
      <pubDate>Tue, 16 Sep 2025 14:36:07 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 (시간복잡도 , 다항식, 최고차항)</title>
      <link>https://mark-theater.tistory.com/330</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 시간복잡도, 다항식, 최고차항&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;에 대해서 알아보자.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;시간복잡도&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간복잡도란 알고리즘에서 걸리는 시간을 계산하는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 대체로 어떤 알고리즘을 돌렸을때 걸리는 시간을 예상하는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 시간복잡도는 5개로 나누어서 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. O(1)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 이는 단 한번만 하는 일이라는 의미다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 값이 들어가도 1번만 계산을 하는 것이다. 예를들어 n이 100이든 10000이든 n+1의 값을 내는 알고리즘이 있다면 항상 시간복잡도는 O(1)인 것이다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. O(n)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 이는 n번 일을 해야한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 이는 반복문에서 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757997107873&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PrintN(n):
    for i in range(n):
        print(i)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 알고리즘이 있다면, 결국 n번만큼 반복을 하기 때문에 시간복잡도가 O(n)이 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. O(n&amp;sup2;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 이는 2중 n번의 일을 반복해야한다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 2중 반복문의 구조일때는 시간 복잡도가 O(n&amp;sup2;)이 되는것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1757997415659&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;PrintSum:
    for i in range(n):
        for j in range(n):
            print(i+j)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 2중으로 반복을 하게 된다면 n이 0 일때 그 반복문 안에서 n번 반복 할 것이고 이는 i가 n에 도달할때까지 즉 n x n의 횟수만큼 반복 하기에 시간복잡도가 O(n&amp;sup2;)이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. O(log n)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 이는 n에서 절반씩 나눠가며 찾는다는 의미이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이해는 하는데 정확하게 어디서 쓰일지는 잘 모르겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트에 숫자가 n만큼 있고 특정 숫자를 찾아야 한다. 이때의 log n 은 n/2를 하고 그 특정 숫자 보다 큰지 작은지를 보고 다시 작으면 작은쪽으로 /2 크면 큰쪽으로 /2를 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 n이 1000이라고 해보자. 3을 찾는다면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 중간인덱스 500은 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 중간인덱스 250은 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 중간인덱스 125는 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 중간인덱스 62는 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 중간인덱스 31은 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 중간인덱스 15는 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 중간인덱스 7은 3보다 크다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 중간인덱스 3은 3과 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 반 갈라서 계산하는것과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. O(2ⁿ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: 이는 n의 가능한 모든 조합 을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 솔찍히 정확하게 이해를 하지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 가능한 모든 조합 즉 부분집합을 탐색하는 경우인것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 n만큼의 리스트요소가 존재하면 빈집합과 1개인 집합의 조합부터 n개가 1개로 조합되어있는 것 까지 계산을 한다면 2ⁿ만큼의 갯수가 나 올 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예로 n이 3인경우를 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 빈집합 1개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 숫자가 1개씩 있는 집합 3개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 숫자가 2개씩 있는 집합 3개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 숫자가 3개씩 있는 집합 1개&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 8개가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 계산하는데 O(2ⁿ)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다항식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다항식은 어떠한 알고리즘의 실행 횟수를 식으로 나타낸 것을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 알고리즘이 위처럼 하나씩의 계산만 하는것이 아닌 여러 횟수들의 반복으로 이루어져 있을 확률이 높다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 하나하나 전부 계산식으로 변환한것을 다항식이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 이때 다항식을 이해하기 위해서는&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수함수와 다항식을 구분할 줄 알아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수함수는 2ⁿ과 같이 입력값 n이 지수로 올라가 있는 형태를 뜻한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다항식은&amp;nbsp; n이 존재할때 n^x와 같이 특정 자연수가 거듭제곱으로 존재를 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 n^2+n^3은 다항식이며 여기서 n^3+n^2+2^n은 복합식으로 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;최고차항&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최고차항은 다항식에서 자연수의 거듭제곱이 가장 큰 숫자를 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 복합식에서 최고차항을 알려달라고 한다면 이는 지수함수를 제외한 나머지 다항수에서의 최고차항을 뜻한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 n^2+n^3 이거나 n^3+n^2+2^n 일때의 최고차항은 3인 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 시간복잡도와도 관련이 있는데, 결국 시간복잡도는 최고차항이 들어간 값이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와같은 n^2+n^3식이라면 사실 순서가 잘못되서 n^3+n^2가 맞다. 아무튼 시간복잡도는 O(n^3)이 될 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 만약 n^3+n^2+2^n이런 복합식이 된다면 시간복잡도는 가장 큰 값이 전체의 시간에 영향을 가장 많이 줌으로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지수함수가 O(2^n)이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이렇게 생각할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다항식이 훨씬 크면 어떻게 하지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 n이 2로 명시를 한다고 가정해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;n^15+n^2+2^n이라는 복합식이 존재한다고 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때는 n^15가 2^n보다 훨씬 클 것이다. 하지만 이론상 n이 증가할수록 시간복잡도가 2^n이 훨씬 빠르게 증가하기 때문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간복잡도는 정확한 시간이 아닌 성장률을 분석하는 개념 즉 시간의 예측이기때문에 n이 커지면 커질수록 기하급수적으로 값이 커지는 지수함수가 시간복잡도에 들어가게된다.&lt;/p&gt;</description>
      <category>용어정리/Python</category>
      <category>다항식</category>
      <category>복합함수</category>
      <category>시간복잡도</category>
      <category>지수함수</category>
      <category>최고차항</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/330</guid>
      <comments>https://mark-theater.tistory.com/330#entry330comment</comments>
      <pubDate>Tue, 16 Sep 2025 14:31:12 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (세 막대)</title>
      <link>https://mark-theater.tistory.com/329</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 14215번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;세 막대&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6fhdC/btsQyB9TuEB/XiH4cvXklVC0zDLF33EVl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6fhdC/btsQyB9TuEB/XiH4cvXklVC0zDLF33EVl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6fhdC/btsQyB9TuEB/XiH4cvXklVC0zDLF33EVl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6fhdC%2FbtsQyB9TuEB%2FXiH4cvXklVC0zDLF33EVl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1194&quot; height=&quot;802&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구조건은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 인풋은 3개 a, b, c 가 주어진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이 인풋은 세 막대의 길이로 이 길이를 줄일 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 이를 사용하여 둘레가 최대인 삼각형을 만들고, 둘레를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제는 인풋을 받아서 삼각형의 조건에 맞는 최대치 삼각형을 만들고, 둘레를 구하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지켜야 하는것은 삼각형의 세 변중 가장 큰 변의 길이는 나머지 두 변의 길이의 합보다 길어야 한다라는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 조건으로는 양수이며 1보다 크거나 같고, 100보다 작거나 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 최소로 길이를 빼는 법은 사실 매우 쉽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 가장큰수 - 나머지 두수의 합이 음수가 되야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트에 숫자를 넣고 max(list) - sum(list)-max(list) 는 &amp;lt; 0 이 되야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시를 사용해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 2 3이 들어왔다면, 3과 6-3 의 뺄샘이 0보다 작아야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3-3은 0이기 때문에 0보다 작은 음수가 되려면 -1이 필요하고 이는 sum(list) - 1을 하게되면 이는 최대 둘레가 되게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2 2 2 와 같이 동일한 수는 결국 2 - 4 즉 이미 음수이기 때문에 sum(list)가 최대둘레이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1 100 1 처럼 두 변의길일가 동일한 경우도 마찬가지로 100 - 2 = 98 즉 sum(list) 에서 99를 빼야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;98만 빼면 0이 될테니 1을 더 제외해야하는것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인해보니 정답인데 좀더 짧게 가능한 버전도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인풋이 3개로 고정이 되어있다면 sort를 사용해서 조건문을 좀 짧게 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sorted를 사용하면 바로 가능하다 sort는 따로 변수할당해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757904021433&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a, b, c = sorted(map(int,sys.stdin.read().strip().split()))

print(2*(a+b)-1 if a+b&amp;lt;=c else a+b+c)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757904564170&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a, b, c = sorted(map(int,sys.stdin.read().strip().split()))

print(min(a+b+c, 2*(a+b)-1))&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1757903599033&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
num = list(map(int,sys.stdin.read().strip().split()))

if max(num)-(sum(num)-max(num)) &amp;lt; 0:
    print(sum(num))
else:
    print(sum(num)-(max(num)-(sum(num)-max(num)))-1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/14215.%E2%80%85%EC%84%B8%E2%80%85%EB%A7%89%EB%8C%80&quot;&gt;Coding_Test/백준/Bronze/14215. 세 막대 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1757903609689&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/14215. 세 막대 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/14215.%E2%80%85%EC%84%B8%E2%80%85%EB%A7%89%EB%8C%80&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/14215.%E2%80%85%EC%84%B8%E2%80%85%EB%A7%89%EB%8C%80&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bxKUf7/hyZI1Sojnk/mQtj5XaUay6m5jpPblvqAk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bXDUg5/hyZIQKKcYA/BOGQKGxj7P2kcr1gru0kSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/14215.%E2%80%85%EC%84%B8%E2%80%85%EB%A7%89%EB%8C%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/14215.%E2%80%85%EC%84%B8%E2%80%85%EB%A7%89%EB%8C%80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bxKUf7/hyZI1Sojnk/mQtj5XaUay6m5jpPblvqAk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/bXDUg5/hyZIQKKcYA/BOGQKGxj7P2kcr1gru0kSk/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/14215. 세 막대 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/329</guid>
      <comments>https://mark-theater.tistory.com/329#entry329comment</comments>
      <pubDate>Mon, 15 Sep 2025 11:50:25 +0900</pubDate>
    </item>
    <item>
      <title>백준 파이썬 코딩테스트 (삼각형 과 세 변)</title>
      <link>https://mark-theater.tistory.com/328</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;백준 5073번 문제&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;삼각형과 세 변&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;790&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o8KNM/btsQxfdR0w0/U4UX2YzOCjc123MC9O2kf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o8KNM/btsQxfdR0w0/U4UX2YzOCjc123MC9O2kf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o8KNM/btsQxfdR0w0/U4UX2YzOCjc123MC9O2kf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo8KNM%2FbtsQxfdR0w0%2FU4UX2YzOCjc123MC9O2kf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1214&quot; height=&quot;790&quot; data-origin-width=&quot;1214&quot; data-origin-height=&quot;790&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제의 요구사항은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 가가 줄에 숫자 3개가 들어온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 각 숫자는 삼각형의 세 변의 길이이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 세변을 보고 Equilateral, Isosceles, Scalene, Invalid중 맞는 1개를 출력하라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 이때, 0 0 0 이 들어온다면 멈춘다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건이 조금 더 까다로워졌다고 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력이 한줄씩이니 반복문으로 출력을 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 조건이&amp;nbsp; 0 0 0이 들어오면 멈추는거니까 while 로 반복문을 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 아까의 각 에서 길이의 합이라는 제한이 있기 때문에 생각할게 1개 더 추가된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 리스트로 받아서 set으로 치환했을때, 숫자가 1개면 Equilateral, 2개면 Isosceles까지는 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 숫자가 3개 인 경우에 가장 큰 숫자를 제외한 두 숫자의 합이 가장 큰 숫자보다 작다면 이는 Invalid가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 높이와 밑변의 합보다 빗변의 길이가 작아야하는 삼각형의 성질 때문이다. 이를 위배하면 삼각형이 되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1757641943935&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

while True:
    num=list(map(int,sys.stdin.readline().strip().split()))
    
    if sum(num) == 0:
        break
    
    if len(set(num)) == 1:
        print(&quot;Equilateral&quot;)
    elif len(set(num)) == 2:
        print(&quot;Isosceles&quot;)
    else:
        if max(num) &amp;lt; sum(num)-max(num):
            print(&quot;Scalene&quot;)
        else:
            print(&quot;Invalid&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 Invalid의 조건이 더 있는것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 뭐가 문제인지 모르겠다만 한번 생각해봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 Isosceles에서도 Invalid의 조건을 넣어야 할것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10 10 100 라면 Isosceles 로 나오지만 삼각형의 조건에 안맞기 때문에 Invalid가 나와야 할 것같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 Invalid를 좀 더 크게 걸러야 할 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 조건에서 Invalid를 먼저 걸러낼 거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;max(num) &amp;gt;= sum(num) - max(num)으로 한다. 이유는 max(num)보다 커야하니까 같거나 작은 경우 Invalid를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 set의 len이 1이면 Equilateral, 2라면 Isosceles 그리고 나머지는 Scalene.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결과&lt;/h2&gt;
&lt;pre id=&quot;code_1757643469818&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys

while True:
    num=list(map(int,sys.stdin.readline().strip().split()))
    
    if sum(num) == 0:
        break
    
    if max(num) &amp;gt;= sum(num) - max(num):
        print(&quot;Invalid&quot;)
    elif len(set(num)) == 1:
        print(&quot;Equilateral&quot;)
    elif len(set(num)) == 2:
        print(&quot;Isosceles&quot;)
    else:
        print(&quot;Scalene&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 조건의 대소를 잘 확인해야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결국 삼각형의 조건을 만족 한 뒤에 구분을 해야하는데 텍스트로만 코드를 작성하고 생각이나 이런걸 하지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/5073.%E2%80%85%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC%E2%80%85%EC%84%B8%E2%80%85%EB%B3%80&quot;&gt;Coding_Test/백준/Bronze/5073. 삼각형과 세 변 at main &amp;middot; K-MarkLee/Coding_Test&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1757643605914&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;Coding_Test/백준/Bronze/5073. 삼각형과 세 변 at main &amp;middot; K-MarkLee/Coding_Test&quot; data-og-description=&quot;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/5073.%E2%80%85%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC%E2%80%85%EC%84%B8%E2%80%85%EB%B3%80&quot; data-og-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/5073.%E2%80%85%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC%E2%80%85%EC%84%B8%E2%80%85%EB%B3%80&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/h0aqU/hyZIRJgwyL/mkKPYj1IZl3EIwDMpdbsO1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/07AED/hyZITfZUeJ/hRFKFT8l5fhjkrqYBVuLk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253&quot;&gt;&lt;a href=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/5073.%E2%80%85%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC%E2%80%85%EC%84%B8%E2%80%85%EB%B3%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/K-MarkLee/Coding_Test/tree/main/%EB%B0%B1%EC%A4%80/Bronze/5073.%E2%80%85%EC%82%BC%EA%B0%81%ED%98%95%EA%B3%BC%E2%80%85%EC%84%B8%E2%80%85%EB%B3%80&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/h0aqU/hyZIRJgwyL/mkKPYj1IZl3EIwDMpdbsO1/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253,https://scrap.kakaocdn.net/dn/07AED/hyZITfZUeJ/hRFKFT8l5fhjkrqYBVuLk0/img.png?width=1200&amp;amp;height=600&amp;amp;face=978_148_1073_253');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Coding_Test/백준/Bronze/5073. 삼각형과 세 변 at main &amp;middot; K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This is an auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - K-MarkLee/Coding_Test&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩테스트/BaekJoon</category>
      <author>코드 유랑자 승열</author>
      <guid isPermaLink="true">https://mark-theater.tistory.com/328</guid>
      <comments>https://mark-theater.tistory.com/328#entry328comment</comments>
      <pubDate>Fri, 12 Sep 2025 11:20:16 +0900</pubDate>
    </item>
  </channel>
</rss>