<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Saurus2</title>
    <link>https://saurus2.tistory.com/</link>
    <description>Simple is Best
</description>
    <language>ko</language>
    <pubDate>Wed, 8 Jul 2026 01:09:39 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>saurus2</managingEditor>
    <item>
      <title>[LeetCode 솔루션] 49. Group Anagrams 그룹 아나그램</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-%EC%86%94%EB%A3%A8%EC%85%98-49-Group-Anagrams-%EA%B7%B8%EB%A3%B9-%EC%95%84%EB%82%98%EA%B7%B8%EB%9E%A8</link>
      <description>&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://leetcode.com/problems/group-anagrams/&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;49. Group Anagrams&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array of strings&lt;span&gt;&amp;nbsp;&lt;/span&gt;strs, group&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;the anagrams&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;together. You can return the answer in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;any order&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Anagram&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;prolog&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: strs = [&quot;eat&quot;,&quot;tea&quot;,&quot;tan&quot;,&quot;ate&quot;,&quot;nat&quot;,&quot;bat&quot;]
Output: [[&quot;bat&quot;],[&quot;nat&quot;,&quot;tan&quot;],[&quot;ate&quot;,&quot;eat&quot;,&quot;tea&quot;]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;lua&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: strs = [&quot;&quot;]
Output: [[&quot;&quot;]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;lua&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: strs = [&quot;a&quot;]
Output: [[&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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= strs.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= strs[i].length &amp;lt;= 100&lt;/li&gt;
&lt;li&gt;strs[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of lowercase English letters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&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;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;49&amp;nbsp;Group&amp;nbsp;Anagrams&amp;nbsp;아나그램&amp;nbsp;그룹&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;49&amp;nbsp;Group&amp;nbsp;Anagrams&amp;nbsp;아나그램&amp;nbsp;그룹&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/TlBOILHny9E&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/TlBOILHny9E&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=TlBOILHny9E&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/S856B/hyUrBFuLGd/7dnms3URvpcI91hKvfPYVk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 49 Group Anagrams 아나그램 그룹&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/TlBOILHny9E&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>[LeetCode 솔루션] 49. Group Anagrams 그룹 아나그램</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/294</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-%EC%86%94%EB%A3%A8%EC%85%98-49-Group-Anagrams-%EA%B7%B8%EB%A3%B9-%EC%95%84%EB%82%98%EA%B7%B8%EB%9E%A8#entry294comment</comments>
      <pubDate>Sat, 11 Nov 2023 08:22:35 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] LeetCode 48 Rotate Image, 이미지 회전시키기</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-LeetCode-48-Rotate-Image-%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%9A%8C%EC%A0%84%EC%8B%9C%ED%82%A4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번 영상은 릿코드(리트코드) LeetCode 48 Rotate Image, 이미지 회전시키기 문제를 다루는 스터디입니다.&lt;br /&gt;LeetCode 48 Rotate Image, 이미지 회전시키기&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;f2f70e20-a864-8047-d3a0-c236c1376db9&quot; style=&quot;background-color: #000000; color: #ffffff; text-align: start;&quot; data-layout-path=&quot;/c1/ts0&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-layout-path=&quot;/c1/ts0/tabstrip&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;background-color: #000000; color: #000000;&quot; data-layout-path=&quot;/c1/ts0/tb0&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;cd51fbc3-a901-865a-7fc7-470d2916dead&quot; style=&quot;background-color: #000000; color: #ffffff; text-align: start;&quot; data-layout-path=&quot;/c1/ts1&quot;&gt;
&lt;div style=&quot;background-color: #000000;&quot; data-layout-path=&quot;/c1/ts1/tabstrip&quot;&gt;
&lt;div&gt;
&lt;div data-headlessui-state=&quot;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;background-color: #0f0f0f; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px; color: #000000;&quot; href=&quot;https://leetcode.com/problems/rotate-image/&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;48. Rotate Image&lt;/span&gt;&lt;/a&gt;edium&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;2d6a30d8-ab2e-d922-b659-e85435f1c89c&quot; style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-layout-path=&quot;/ts0/t0&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;You are given an&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;n x n&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;2D&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;matrix&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;representing an image, rotate the image by&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;90&lt;/b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;degrees (clockwise).&lt;/span&gt;&lt;/p&gt;
&lt;div data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You have to rotate the image&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://en.wikipedia.org/wiki/In-place_algorithm&quot;&gt;&lt;b&gt;in-place&lt;/b&gt;&lt;/a&gt;, which means you have to modify the input 2D matrix directly.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;DO NOT&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;allocate another 2D matrix and do the rotation.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;242&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi523o/btszU2V6jbU/VV3CbH6p1xPhCxvvL6X8Dk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi523o/btszU2V6jbU/VV3CbH6p1xPhCxvvL6X8Dk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi523o/btszU2V6jbU/VV3CbH6p1xPhCxvvL6X8Dk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi523o%2FbtszU2V6jbU%2FVV3CbH6p1xPhCxvvL6X8Dk%2Fimg.jpg&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;642&quot; height=&quot;242&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;242&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
Output: [[7,4,1],[8,5,2],[9,6,3]]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bc7IfJ/btszQD3865T/qLMVOk7wAmKKHfGgIfBKVK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bc7IfJ/btszQD3865T/qLMVOk7wAmKKHfGgIfBKVK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bc7IfJ/btszQD3865T/qLMVOk7wAmKKHfGgIfBKVK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbc7IfJ%2FbtszQD3865T%2FqLMVOk7wAmKKHfGgIfBKVK%2Fimg.jpg&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;802&quot; height=&quot;322&quot; data-origin-width=&quot;802&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n == matrix.length == matrix[i].length&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 20&lt;/li&gt;
&lt;li&gt;-1000 &amp;lt;= matrix[i][j] &amp;lt;= 1000&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&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://youtu.be/PDng7bZ9v6Y&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/PDng7bZ9v6Y&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=PDng7bZ9v6Y&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cAMdf9/hyUrrBJ3Oz/1lGoSzKJJRSgVmZNuCUbsk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 48 Rotate Image, 이미지 회전시키기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/PDng7bZ9v6Y&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/293</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-LeetCode-48-Rotate-Image-%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%9A%8C%EC%A0%84%EC%8B%9C%ED%82%A4%EA%B8%B0#entry293comment</comments>
      <pubDate>Tue, 7 Nov 2023 03:23:35 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 3 Longest Substring Without Repeating Characters 반복되는 문자열이 없는 가장 긴 부분 문자열</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-3-Longest-Substring-Without-Repeating-Characters-%EB%B0%98%EB%B3%B5%EB%90%98%EB%8A%94-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4-%EC%97%86%EB%8A%94-%EA%B0%80%EC%9E%A5-%EA%B8%B4-%EB%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4</link>
      <description>&lt;div style=&quot;background-color: #282828; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://leetcode.com/problems/longest-substring-without-repeating-characters/&quot;&gt;3. Longest Substring Without Repeating Characters&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #282828; color: #ffffff; text-align: start;&quot;&gt;
&lt;div data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s, find the length of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;longest&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;div data-headlessui-state=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;headlessui-popover-button-:rt:&quot; data-headlessui-state=&quot;&quot;&gt;
&lt;div&gt;&lt;b&gt;substring&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;span&gt;&amp;nbsp;&lt;/span&gt;without repeating characters.
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot;abcabcbb&quot;
Output: 3
Explanation: The answer is &quot;abc&quot;, with the length of 3.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot;bbbbb&quot;
Output: 1
Explanation: The answer is &quot;b&quot;, with the length of 1.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot;pwwkew&quot;
Output: 3
Explanation: The answer is &quot;wke&quot;, with the length of 3.
Notice that the answer must be a substring, &quot;pwke&quot; is a subsequence and not a substring.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0 &amp;lt;= s.length &amp;lt;= 5 * 104&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of English letters, digits, symbols and spaces.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&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;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;3&amp;nbsp;Longest&amp;nbsp;Substring&amp;nbsp;Without&amp;nbsp;Repeating&amp;nbsp;Characters&amp;nbsp;반복되는&amp;nbsp;문자열이&amp;nbsp;없는&amp;nbsp;가장&amp;nbsp;긴&amp;nbsp;부분&amp;nbsp;문자열&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;3&amp;nbsp;Longest&amp;nbsp;Substring&amp;nbsp;Without&amp;nbsp;Repeating&amp;nbsp;Characters&amp;nbsp;반복되는&amp;nbsp;문자열이&amp;nbsp;없는&amp;nbsp;가장&amp;nbsp;긴&amp;nbsp;부분&amp;nbsp;문자열&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&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://youtu.be/e0H6bxRmiBU&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/e0H6bxRmiBU&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=e0H6bxRmiBU&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bCTgdx/hyUnWoRnAW/hBJK8FDbYNis3uFq36R5Kk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 3 Longest Substring Without Repeating Characters 반복되는 문자열이 없는 가장 긴 부분 문자열&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/e0H6bxRmiBU&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>&amp;quot;pwke&amp;quot; is a subsequence and not a substring. Constraints: 0 &amp;lt;= s.length &amp;lt;= 5 * 104 s consists of English letters</category>
      <category>3. Longest Substring Without Repeating Characters Medium 37.7K 1.7K Companies Given a string s</category>
      <category>digits</category>
      <category>find the length of the longest substring without repeating characters. Example 1: Input: s = &amp;quot;abcabcbb&amp;quot; Output: 3 Explanation: The answer is &amp;quot;abc&amp;quot;</category>
      <category>symbols and spaces.</category>
      <category>with the length of 1. Example 3: Input: s = &amp;quot;pwwkew&amp;quot; Output: 3 Explanation: The answer is &amp;quot;wke&amp;quot;</category>
      <category>with the length of 3. Example 2: Input: s = &amp;quot;bbbbb&amp;quot; Output: 1 Explanation: The answer is &amp;quot;b&amp;quot;</category>
      <category>with the length of 3. Notice that the answer must be a substring</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/292</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-3-Longest-Substring-Without-Repeating-Characters-%EB%B0%98%EB%B3%B5%EB%90%98%EB%8A%94-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%B4-%EC%97%86%EB%8A%94-%EA%B0%80%EC%9E%A5-%EA%B8%B4-%EB%B6%80%EB%B6%84-%EB%AC%B8%EC%9E%90%EC%97%B4#entry292comment</comments>
      <pubDate>Fri, 3 Nov 2023 09:27:03 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 100 Same Tree 같은 트리</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-100-Same-Tree-%EA%B0%99%EC%9D%80-%ED%8A%B8%EB%A6%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;100&amp;nbsp;Same&amp;nbsp;Tree&amp;nbsp;같은&amp;nbsp;트리&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;100&amp;nbsp;Same&amp;nbsp;Tree&amp;nbsp;같은&amp;nbsp;트리&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/f1cFqsdlmxg&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/f1cFqsdlmxg&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=f1cFqsdlmxg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/fva9T/hyT9yI2sAA/ffJbXkvjDaY5Fm453oS0D0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 100 Same Tree 같은 트리&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/f1cFqsdlmxg&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/same-tree/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/same-tree/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697237186797&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Same Tree - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Same Tree - Given the roots of two binary trees p and q, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical, and the nodes have the &quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/same-tree/description/&quot; data-og-url=&quot;https://leetcode.com/problems/same-tree/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cPSUsg/hyUd13N3Xc/NHxCkr39ukQPp1OS15qFu1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/same-tree/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/same-tree/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cPSUsg/hyUd13N3Xc/NHxCkr39ukQPp1OS15qFu1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Same Tree - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Same Tree - Given the roots of two binary trees p and q, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identical, and the nodes have the&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given the roots of two binary trees&lt;span&gt;&amp;nbsp;&lt;/span&gt;p&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;q, write a function to check if they are the same or not.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqmoD2/btsytMniJrA/fRyyUElRx179HvduqSL5t1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqmoD2/btsytMniJrA/fRyyUElRx179HvduqSL5t1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqmoD2/btsytMniJrA/fRyyUElRx179HvduqSL5t1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqmoD2%2FbtsytMniJrA%2FfRyyUElRx179HvduqSL5t1%2Fimg.jpg&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;622&quot; height=&quot;182&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: p = [1,2,3], q = [1,2,3]
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bW13Rs/btsytK33XvA/SPCvndZQNLJ5hVSas3D8hk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bW13Rs/btsytK33XvA/SPCvndZQNLJ5hVSas3D8hk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bW13Rs/btsytK33XvA/SPCvndZQNLJ5hVSas3D8hk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbW13Rs%2FbtsytK33XvA%2FSPCvndZQNLJ5hVSas3D8hk%2Fimg.jpg&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;382&quot; height=&quot;182&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: p = [1,2], q = [1,null,2]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UohTT/btsys7Me9xz/B0F5br0nkUeAO6syQqGiO1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UohTT/btsys7Me9xz/B0F5br0nkUeAO6syQqGiO1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UohTT/btsys7Me9xz/B0F5br0nkUeAO6syQqGiO1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUohTT%2Fbtsys7Me9xz%2FB0F5br0nkUeAO6syQqGiO1%2Fimg.jpg&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;622&quot; height=&quot;182&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: p = [1,2,1], q = [1,1,2]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in both trees is in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 100].&lt;/li&gt;
&lt;li&gt;-104 &amp;lt;= Node.val &amp;lt;= 104&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>100 Same Tree</category>
      <category>leetcode 100 same tree</category>
      <category>LeetCode 100 Same Tree 같은 트리</category>
      <category>Same Tree</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/291</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-100-Same-Tree-%EA%B0%99%EC%9D%80-%ED%8A%B8%EB%A6%AC#entry291comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:46:55 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 141 Linked List Cycle 연결리스트 사이클</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-141-Linked-List-Cycle-%EC%97%B0%EA%B2%B0%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%82%AC%EC%9D%B4%ED%81%B4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;141&amp;nbsp;Linked&amp;nbsp;List&amp;nbsp;Cycle&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;141&amp;nbsp;Linked&amp;nbsp;List&amp;nbsp;Cycle&amp;nbsp;&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/bOu5rqXoli4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/bOu5rqXoli4&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=bOu5rqXoli4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bviYnH/hyT9L9o9Jx/k9DJBdP91eEpfUN02dpCk1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 141 Linked List Cycle 연결리스트 사이클&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/bOu5rqXoli4&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/linked-list-cycle/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/linked-list-cycle/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697237109991&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Linked List Cycle - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Linked List Cycle - Given head, the head of a linked list, determine if the linked list has a cycle in it. There is a cycle in a linked list if there is some node in the list that can be reached again by continuo&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/linked-list-cycle/description/&quot; data-og-url=&quot;https://leetcode.com/problems/linked-list-cycle/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cd6vXy/hyT9DXPjkQ/kHY12C93NnWHKgjkBrkYIK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/linked-list-cycle/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/linked-list-cycle/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cd6vXy/hyT9DXPjkQ/kHY12C93NnWHKgjkBrkYIK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Linked List Cycle - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Linked List Cycle - Given head, the head of a linked list, determine if the linked list has a cycle in it. There is a cycle in a linked list if there is some node in the list that can be reached again by continuo&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given&lt;span&gt;&amp;nbsp;&lt;/span&gt;head, the head of a linked list, determine if the linked list has a cycle in it.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the&amp;nbsp;next&amp;nbsp;pointer. Internally,&lt;span&gt;&amp;nbsp;&lt;/span&gt;pos&amp;nbsp;is used to denote the index of the node that&amp;nbsp;tail's&amp;nbsp;next&amp;nbsp;pointer is connected to.&amp;nbsp;&lt;b&gt;Note that&amp;nbsp;pos&amp;nbsp;is not passed as a parameter&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&amp;nbsp;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if there is a cycle in the linked list. Otherwise, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;false.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pB8BD/btsyuhN7Bbv/VuTqnC2H18LI3qygQYeeI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pB8BD/btsyuhN7Bbv/VuTqnC2H18LI3qygQYeeI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pB8BD/btsyuhN7Bbv/VuTqnC2H18LI3qygQYeeI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpB8BD%2FbtsyuhN7Bbv%2FVuTqnC2H18LI3qygQYeeI1%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;531&quot; height=&quot;171&quot; data-origin-width=&quot;531&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = [3,2,0,-4], pos = 1
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;105&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xHv8w/btsys9i2AUv/LsYovbwPsOOkYaKsouwtZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xHv8w/btsys9i2AUv/LsYovbwPsOOkYaKsouwtZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xHv8w/btsys9i2AUv/LsYovbwPsOOkYaKsouwtZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxHv8w%2Fbtsys9i2AUv%2FLsYovbwPsOOkYaKsouwtZ0%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;201&quot; height=&quot;105&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;105&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;xquery&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = [1,2], pos = 0
Output: true
Explanation: There is a cycle in the linked list, where the tail connects to the 0th node.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;65&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXbSZa/btsytbnBsyG/0Z96HCQ2KaT2klQSVCnzF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXbSZa/btsytbnBsyG/0Z96HCQ2KaT2klQSVCnzF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXbSZa/btsytbnBsyG/0Z96HCQ2KaT2klQSVCnzF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXbSZa%2FbtsytbnBsyG%2F0Z96HCQ2KaT2klQSVCnzF1%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;65&quot; height=&quot;65&quot; data-origin-width=&quot;65&quot; data-origin-height=&quot;65&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = [1], pos = -1
Output: false
Explanation: There is no cycle in the linked list.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of the nodes in the list is in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 104].&lt;/li&gt;
&lt;li&gt;-105 &amp;lt;= Node.val &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;pos&lt;span&gt;&amp;nbsp;&lt;/span&gt;is&lt;span&gt;&amp;nbsp;&lt;/span&gt;-1&lt;span&gt;&amp;nbsp;&lt;/span&gt;or a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;valid index&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the linked-list.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Can you solve it using&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(1)&lt;span&gt;&amp;nbsp;&lt;/span&gt;(i.e. constant) memory?&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>141 Linked List Cycle</category>
      <category>LeetCode 141 Linked List Cycle</category>
      <category>LeetCode 141 Linked List Cycle 연결리스트 사이클</category>
      <category>Linked List Cycle</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/290</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-141-Linked-List-Cycle-%EC%97%B0%EA%B2%B0%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EC%82%AC%EC%9D%B4%ED%81%B4#entry290comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:45:38 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 226 Invert Binary Tree 이진트리 뒤바꾸기</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-226-Invert-Binary-Tree-%EC%9D%B4%EC%A7%84%ED%8A%B8%EB%A6%AC-%EB%92%A4%EB%B0%94%EA%BE%B8%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;226&amp;nbsp;Invert&amp;nbsp;Binary&amp;nbsp;Tree&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;226&amp;nbsp;Invert&amp;nbsp;Binary&amp;nbsp;Tree&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/Hh1QFooYziE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/Hh1QFooYziE&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Hh1QFooYziE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/kjtns/hyUd1pbwTG/qmTNNjbt4tRgkyTaTJrpXK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 226 Invert Binary Tree 이진트리 뒤바꾸기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Hh1QFooYziE&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;&lt;a href=&quot;https://leetcode.com/problems/invert-binary-tree/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/invert-binary-tree/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697237025927&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Invert Binary Tree - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Invert Binary Tree - Given the root of a binary tree, invert the tree, and return its root. &amp;nbsp; Example 1: [https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg] Input: root = [4,2,7,1,3,6,9] Output: [4&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/invert-binary-tree/description/&quot; data-og-url=&quot;https://leetcode.com/problems/invert-binary-tree/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oijTH/hyT9LuMVZV/oEdcTB1kmVm1H0wEukYdY0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/invert-binary-tree/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/invert-binary-tree/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oijTH/hyT9LuMVZV/oEdcTB1kmVm1H0wEukYdY0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Invert Binary Tree - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Invert Binary Tree - Given the root of a binary tree, invert the tree, and return its root. &amp;nbsp; Example 1: [https://assets.leetcode.com/uploads/2021/03/14/invert1-tree.jpg] Input: root = [4,2,7,1,3,6,9] Output: [4&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given the&lt;span&gt;&amp;nbsp;&lt;/span&gt;root&lt;span&gt;&amp;nbsp;&lt;/span&gt;of a binary tree, invert the tree, and return&lt;span&gt;&amp;nbsp;&lt;/span&gt;its root.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2hlLL/btsyuI5K9Ql/umEUu9PRjpShw650qxL8w0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2hlLL/btsyuI5K9Ql/umEUu9PRjpShw650qxL8w0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2hlLL/btsyuI5K9Ql/umEUu9PRjpShw650qxL8w0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2hlLL%2FbtsyuI5K9Ql%2FumEUu9PRjpShw650qxL8w0%2Fimg.jpg&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;911&quot; height=&quot;301&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: root = [4,2,7,1,3,6,9]
Output: [4,7,2,9,6,3,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZwOUC/btsymDepT0C/UlkAAn7JswTOyGEVLXin3K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZwOUC/btsymDepT0C/UlkAAn7JswTOyGEVLXin3K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZwOUC/btsymDepT0C/UlkAAn7JswTOyGEVLXin3K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZwOUC%2FbtsymDepT0C%2FUlkAAn7JswTOyGEVLXin3K%2Fimg.jpg&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;761&quot; height=&quot;182&quot; data-origin-width=&quot;761&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: root = [2,1,3]
Output: [2,3,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;apache&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: root = []
Output: []
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in the tree is in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 100].&lt;/li&gt;
&lt;li&gt;-100 &amp;lt;= Node.val &amp;lt;= 100&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>226 Invert Binary Tree</category>
      <category>Invert Binary Tree</category>
      <category>LeetCode 226 Invert Binary Tree 이진트리 뒤바꾸기</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/289</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-226-Invert-Binary-Tree-%EC%9D%B4%EC%A7%84%ED%8A%B8%EB%A6%AC-%EB%92%A4%EB%B0%94%EA%BE%B8%EA%B8%B0#entry289comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:44:23 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 206 Reverse Linked List 링크드 리스트(연결 리스트) 뒤집기</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-206-Reverse-Linked-List-%EB%A7%81%ED%81%AC%EB%93%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%97%B0%EA%B2%B0-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%92%A4%EC%A7%91%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;206&amp;nbsp;Reverse&amp;nbsp;Linked&amp;nbsp;List&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;206&amp;nbsp;Reverse&amp;nbsp;Linked&amp;nbsp;List&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/A3kQnKH10VQ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/A3kQnKH10VQ&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=A3kQnKH10VQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/IZx4j/hyUdVWOLTi/CybsZidRYKt5SrlT1eaDLK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 206 Reverse Linked List 링크드 리스트(연결 리스트) 뒤집기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/A3kQnKH10VQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/reverse-linked-list/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/reverse-linked-list/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236920710&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Reverse Linked List - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Reverse Linked List - Given the head of a singly linked list, reverse the list, and return the reversed list. &amp;nbsp; Example 1: [https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg] Input: head = [1,2,3,4,5] O&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/reverse-linked-list/description/&quot; data-og-url=&quot;https://leetcode.com/problems/reverse-linked-list/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cSfPEv/hyT9EJcmOt/rfOUgCLBaKFznyCM7bcfj0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/reverse-linked-list/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/reverse-linked-list/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cSfPEv/hyT9EJcmOt/rfOUgCLBaKFznyCM7bcfj0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Reverse Linked List - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Reverse Linked List - Given the head of a singly linked list, reverse the list, and return the reversed list. &amp;nbsp; Example 1: [https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg] Input: head = [1,2,3,4,5] O&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given the&lt;span&gt;&amp;nbsp;&lt;/span&gt;head&lt;span&gt;&amp;nbsp;&lt;/span&gt;of a singly linked list, reverse the list, and return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the reversed list.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgrhBx/btsytdyWYgi/rzSkemw9PNRH2kOuEzZqN1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgrhBx/btsytdyWYgi/rzSkemw9PNRH2kOuEzZqN1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgrhBx/btsytdyWYgi/rzSkemw9PNRH2kOuEzZqN1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgrhBx%2FbtsytdyWYgi%2FrzSkemw9PNRH2kOuEzZqN1%2Fimg.jpg&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; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvFbnj/btsysoOdUbq/G8DTXN4G6n7Y4eJMNRDvW0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvFbnj/btsysoOdUbq/G8DTXN4G6n7Y4eJMNRDvW0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvFbnj/btsysoOdUbq/G8DTXN4G6n7Y4eJMNRDvW0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvFbnj%2FbtsysoOdUbq%2FG8DTXN4G6n7Y4eJMNRDvW0%2Fimg.jpg&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; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = [1,2]
Output: [2,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;apache&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: head = []
Output: []
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in the list is the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 5000].&lt;/li&gt;
&lt;li&gt;-5000 &amp;lt;= Node.val &amp;lt;= 5000&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;A linked list can be reversed either iteratively or recursively. Could you implement both?&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>206 Reverse Linked List</category>
      <category>LeetCode 206 Reverse Linked List</category>
      <category>Reverse Linked List</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/288</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-206-Reverse-Linked-List-%EB%A7%81%ED%81%AC%EB%93%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%97%B0%EA%B2%B0-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%92%A4%EC%A7%91%EA%B8%B0#entry288comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:42:28 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 70 Climbing Stairs 계단 오르기</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-70-Climbing-Stairs-%EA%B3%84%EB%8B%A8-%EC%98%A4%EB%A5%B4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;70&amp;nbsp;Climbing&amp;nbsp;Stairs&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;70&amp;nbsp;Climbing&amp;nbsp;Stairs&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/0enKoHJWeLA&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/0enKoHJWeLA&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=0enKoHJWeLA&quot; data-video-width=&quot;0&quot; data-video-height=&quot;0&quot; data-video-origin-width=&quot;0&quot; data-video-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 70 Climbing Stairs 계단 오르기&quot; data-video-thumbnail=&quot;&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/0enKoHJWeLA&quot; width=&quot;0&quot; height=&quot;0&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/climbing-stairs/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/climbing-stairs/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236846129&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Climbing Stairs - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Climbing Stairs - You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? &amp;nbsp; Example 1: Input: n = 2 Outpu&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/climbing-stairs/description/&quot; data-og-url=&quot;https://leetcode.com/problems/climbing-stairs/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gfUg6/hyUdV3z2Ga/zQVeEC8FTLCTC4Zf9jOauk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/climbing-stairs/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/climbing-stairs/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gfUg6/hyUdV3z2Ga/zQVeEC8FTLCTC4Zf9jOauk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Climbing Stairs - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Climbing Stairs - You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? &amp;nbsp; Example 1: Input: n = 2 Outpu&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are climbing a staircase. It takes&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;steps to reach the top.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Each time you can either climb&lt;span&gt;&amp;nbsp;&lt;/span&gt;1&lt;span&gt;&amp;nbsp;&lt;/span&gt;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;steps. In how many distinct ways can you climb to the top?&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: n = 2
Output: 2
Explanation: There are two ways to climb to the top.
1. 1 step + 1 step
2. 2 steps
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: n = 3
Output: 3
Explanation: There are three ways to climb to the top.
1. 1 step + 1 step + 1 step
2. 1 step + 2 steps
3. 2 steps + 1 step
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 45&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>70 Climbing Stairs</category>
      <category>Climbing Stairs</category>
      <category>LeetCode 70 Climbing Stairs 계단 오르기</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/287</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-70-Climbing-Stairs-%EA%B3%84%EB%8B%A8-%EC%98%A4%EB%A5%B4%EA%B8%B0#entry287comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:41:11 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 1 Two Sum 두개의 합</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1-Two-Sum-%EB%91%90%EA%B0%9C%EC%9D%98-%ED%95%A9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;1&amp;nbsp;Two&amp;nbsp;Sum&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;1&amp;nbsp;Two&amp;nbsp;Sum&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/9tPyhQUUJL0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/9tPyhQUUJL0&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=9tPyhQUUJL0&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/5dZqH/hyT9BeDRyx/q0u3R0aad8fgYJ1KvdLKG1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 1 Two Sum 두개의 합&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/9tPyhQUUJL0&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/two-sum/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/two-sum/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236750938&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Two Sum - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Two Sum - Given an array of integers nums&amp;nbsp;and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/two-sum/description/&quot; data-og-url=&quot;https://leetcode.com/problems/two-sum/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/R5IR4/hyUdTLts3o/zGQrm54kMsKSqvhgRNeQ5k/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/two-sum/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/two-sum/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/R5IR4/hyUdTLts3o/zGQrm54kMsKSqvhgRNeQ5k/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Two Sum - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Two Sum - Given an array of integers nums&amp;nbsp;and an integer target, return indices of the two numbers such that they add up to target. You may assume that each input would have exactly one solution, and you may not&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array of integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&amp;nbsp;and an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;target, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;indices of the two numbers such that they add up to&lt;span&gt;&amp;nbsp;&lt;/span&gt;target.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;You may assume that each input would have&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;exactly&lt;span&gt;&amp;nbsp;&lt;/span&gt;one solution&lt;/b&gt;, and you may not use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;same&lt;span&gt;&amp;nbsp;&lt;/span&gt;element twice.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;You can return the answer in any order.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: nums = [3,2,4], target = 6
Output: [1,2]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: nums = [3,3], target = 6
Output: [0,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2 &amp;lt;= nums.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= nums[i] &amp;lt;= 109&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= target &amp;lt;= 109&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Only one valid answer exists.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Follow-up:&amp;nbsp;&lt;/b&gt;&lt;span style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;Can you come up with an algorithm that is less than&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;O(n2)&amp;nbsp;&lt;span style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;time complexity?&lt;/span&gt;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>1 Two Sum 두개의 합</category>
      <category>LeetCode 1 Two Sum</category>
      <category>LeetCode 1 Two Sum 두개의 합</category>
      <category>Two Sum 두개의 합</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/286</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1-Two-Sum-%EB%91%90%EA%B0%9C%EC%9D%98-%ED%95%A9#entry286comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:39:34 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 704 Binary search 이진 탐색</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-704-Binary-search-%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;704&amp;nbsp;Binary&amp;nbsp;search&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;704&amp;nbsp;Binary&amp;nbsp;search&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/cMWio2e7rlI&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/cMWio2e7rlI&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=cMWio2e7rlI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bWE32w/hyT9JqbNj6/0MR5lKpp23HF8Neg641omK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 704 Binary search 이진 탐색&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/cMWio2e7rlI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&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;&lt;a href=&quot;https://leetcode.com/problems/binary-search/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/binary-search/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236663110&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Binary Search - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Binary Search - Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/binary-search/description/&quot; data-og-url=&quot;https://leetcode.com/problems/binary-search/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iJhFG/hyT9FVCVrM/KxT3EGPcix98Trrv1JJHm0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/binary-search/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/binary-search/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iJhFG/hyT9FVCVrM/KxT3EGPcix98Trrv1JJHm0/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Binary Search - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Binary Search - Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array of integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;which is sorted in ascending order, and an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;target, write a function to search&lt;span&gt;&amp;nbsp;&lt;/span&gt;target&lt;span&gt;&amp;nbsp;&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums. If&lt;span&gt;&amp;nbsp;&lt;/span&gt;target&lt;span&gt;&amp;nbsp;&lt;/span&gt;exists, then return its index. Otherwise, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;-1.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;You must write an algorithm with&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(log n)&lt;span&gt;&amp;nbsp;&lt;/span&gt;runtime complexity.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: nums = [-1,0,3,5,9,12], target = 9
Output: 4
Explanation: 9 exists in nums and its index is 4
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: nums = [-1,0,3,5,9,12], target = 2
Output: -1
Explanation: 2 does not exist in nums so return -1
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;-104 &amp;lt; nums[i], target &amp;lt; 104&lt;/li&gt;
&lt;li&gt;All the integers in&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;unique&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;is sorted in ascending order.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>704 Binary search 이진 탐색</category>
      <category>Binary search 이진 탐색</category>
      <category>LeetCode 704 Binary search 이진 탐색</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/285</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-704-Binary-search-%EC%9D%B4%EC%A7%84-%ED%83%90%EC%83%89#entry285comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:38:05 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 242 valid Anagram 유효한 아나그램</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-242-valid-Anagram-%EC%9C%A0%ED%9A%A8%ED%95%9C-%EC%95%84%EB%82%98%EA%B7%B8%EB%9E%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;LeetCode&amp;nbsp;242&amp;nbsp;valid&amp;nbsp;Anagram&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;242&amp;nbsp;valid&amp;nbsp;Anagram&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/kXE3SJS9EPI&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/kXE3SJS9EPI&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=kXE3SJS9EPI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/5jLco/hyT9BFJQuX/hpM4NzFWO2YkK8IPPUMdI0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 242 valid Anagram 유효한 아나그램&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/kXE3SJS9EPI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/valid-anagram/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/valid-anagram/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236565571&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Valid Anagram - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Valid Anagram - Given two strings s and t, return true if t is an anagram of s, and false otherwise. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/valid-anagram/description/&quot; data-og-url=&quot;https://leetcode.com/problems/valid-anagram/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QWGxS/hyUd0qg7Gk/jc6ipiLM4XxiWPMsyc30kk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/valid-anagram/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/valid-anagram/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QWGxS/hyUd0qg7Gk/jc6ipiLM4XxiWPMsyc30kk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Valid Anagram - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Valid Anagram - Given two strings s and t, return true if t is an anagram of s, and false otherwise. An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given two strings&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;t, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;t&lt;span&gt;&amp;nbsp;&lt;/span&gt;is an anagram of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;An&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Anagram&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: s = &quot;anagram&quot;, t = &quot;nagaram&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: s = &quot;rat&quot;, t = &quot;car&quot;
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length, t.length &amp;lt;= 5 * 104&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;t&lt;span&gt;&amp;nbsp;&lt;/span&gt;consist of lowercase English letters.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;What if the inputs contain Unicode characters? How would you adapt your solution to such a case?&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>242 valid Anagram</category>
      <category>LeetCode 242 valid Anagram</category>
      <category>valid anagram</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/284</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-242-valid-Anagram-%EC%9C%A0%ED%9A%A8%ED%95%9C-%EC%95%84%EB%82%98%EA%B7%B8%EB%9E%A8#entry284comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:36:34 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 121 Best Time To Buy And Sell Stock 주식을 사고 팔기 가장 좋은시간</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-121-Best-Time-To-Buy-And-Sell-Stock-%EC%A3%BC%EC%8B%9D%EC%9D%84-%EC%82%AC%EA%B3%A0-%ED%8C%94%EA%B8%B0-%EA%B0%80%EC%9E%A5-%EC%A2%8B%EC%9D%80%EC%8B%9C%EA%B0%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;121번&amp;nbsp;문제&amp;nbsp;Best&amp;nbsp;Time&amp;nbsp;To&amp;nbsp;Buy&amp;nbsp;And&amp;nbsp;Sell&amp;nbsp;Stock&amp;nbsp;1&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;No&amp;nbsp;121&amp;nbsp;Best&amp;nbsp;Time&amp;nbsp;To&amp;nbsp;Buy&amp;nbsp;And&amp;nbsp;Sell&amp;nbsp;Stock&amp;nbsp;1&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/QTf2P4rcNgw&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/QTf2P4rcNgw&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=QTf2P4rcNgw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/HYhWd/hyUd0cLkRV/8eiZ7VZND0OtK5HB5LJowK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 121 Best Time To Buy And Sell Stock 1 주식을 사고 팔기 가장 좋은시간&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/QTf2P4rcNgw&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236473924&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Best Time to Buy and Sell Stock - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Best Time to Buy and Sell Stock - You are given an array prices where prices[i] is the price of a given stock on the ith day. You want to maximize your profit by choosing a single day to buy one stock and choosin&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/&quot; data-og-url=&quot;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/n6tRK/hyT9Bsa26X/NX6GYy0nRsbaR22qntuPh1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/n6tRK/hyT9Bsa26X/NX6GYy0nRsbaR22qntuPh1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Best Time to Buy and Sell Stock - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Best Time to Buy and Sell Stock - You are given an array prices where prices[i] is the price of a given stock on the ith day. You want to maximize your profit by choosing a single day to buy one stock and choosin&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;prices&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;prices[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the price of a given stock on the&lt;span&gt;&amp;nbsp;&lt;/span&gt;ith&lt;span&gt;&amp;nbsp;&lt;/span&gt;day.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;You want to maximize your profit by choosing a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;single day&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to buy one stock and choosing a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;different day in the future&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to sell that stock.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;0.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: prices = [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: prices = [7,6,4,3,1]
Output: 0
Explanation: In this case, no transactions are done and the max profit = 0.
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= prices.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= prices[i] &amp;lt;= 104&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>121 Best Time To Buy And Sell Stock</category>
      <category>best time to buy and sell stock</category>
      <category>LeetCode 121 Best Time To Buy And Sell Stock</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/283</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-121-Best-Time-To-Buy-And-Sell-Stock-%EC%A3%BC%EC%8B%9D%EC%9D%84-%EC%82%AC%EA%B3%A0-%ED%8C%94%EA%B8%B0-%EA%B0%80%EC%9E%A5-%EC%A2%8B%EC%9D%80%EC%8B%9C%EA%B0%84#entry283comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:35:05 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 21 Merge Two Sorted Lists 릿코드 두개의 정렬된 리스트 병합하기</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-21-Merge-Two-Sorted-Lists-%EB%A6%BF%EC%BD%94%EB%93%9C-%EB%91%90%EA%B0%9C%EC%9D%98-%EC%A0%95%EB%A0%AC%EB%90%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B3%91%ED%95%A9%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;21번&amp;nbsp;문제&amp;nbsp;Merge&amp;nbsp;Two&amp;nbsp;Sorted&amp;nbsp;Lists&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;No&amp;nbsp;21&amp;nbsp;Merge&amp;nbsp;Two&amp;nbsp;Sorted&amp;nbsp;Lists&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/MU9iA_SHSpQ&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/MU9iA_SHSpQ&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=MU9iA_SHSpQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/xRIar/hyT9EvFXZv/nCvrMpCnTDFT610ScDhGp1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 21 Merge Two Sorted Lists 릿코드 두개의 정렬된 리스트 병합하기&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/MU9iA_SHSpQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/merge-two-sorted-lists/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/merge-two-sorted-lists/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236365472&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Merge Two Sorted Lists - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Merge Two Sorted Lists - You are given the heads of two sorted linked lists list1 and list2. Merge the two lists into one sorted list. The list should be made by splicing together the nodes of the first two lists&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/merge-two-sorted-lists/description/&quot; data-og-url=&quot;https://leetcode.com/problems/merge-two-sorted-lists/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gCnHU/hyT9LuMS5z/zCy6ECzKd0m25elmZqYAW1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/merge-two-sorted-lists/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/merge-two-sorted-lists/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gCnHU/hyT9LuMS5z/zCy6ECzKd0m25elmZqYAW1/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Merge Two Sorted Lists - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Merge Two Sorted Lists - You are given the heads of two sorted linked lists list1 and list2. Merge the two lists into one sorted list. The list should be made by splicing together the nodes of the first two lists&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given the heads of two sorted linked lists&lt;span&gt;&amp;nbsp;&lt;/span&gt;list1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;list2.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Merge the two lists into one&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;sorted&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;list. The list should be made by splicing together the nodes of the first two lists.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the head of the merged linked list.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBX2hB/btsyuIdCUuD/mqXKnjCSQP9KiE2Plwzik1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBX2hB/btsyuIdCUuD/mqXKnjCSQP9KiE2Plwzik1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBX2hB/btsyuIdCUuD/mqXKnjCSQP9KiE2Plwzik1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBX2hB%2FbtsyuIdCUuD%2FmqXKnjCSQP9KiE2Plwzik1%2Fimg.jpg&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;662&quot; height=&quot;302&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: list1 = [], list2 = []
Output: []
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: list1 = [], list2 = [0]
Output: [0]
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in both lists is in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 50].&lt;/li&gt;
&lt;li&gt;-100 &amp;lt;= Node.val &amp;lt;= 100&lt;/li&gt;
&lt;li&gt;Both&lt;span&gt;&amp;nbsp;&lt;/span&gt;list1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;list2&lt;span&gt;&amp;nbsp;&lt;/span&gt;are sorted in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;non-decreasing&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;order.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>21 Merge Two Sorted Lists</category>
      <category>LeetCode 21 Merge Two Sorted Lists</category>
      <category>Merge Two Sorted Lists</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/282</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-21-Merge-Two-Sorted-Lists-%EB%A6%BF%EC%BD%94%EB%93%9C-%EB%91%90%EA%B0%9C%EC%9D%98-%EC%A0%95%EB%A0%AC%EB%90%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8-%EB%B3%91%ED%95%A9%ED%95%98%EA%B8%B0#entry282comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:33:27 +0900</pubDate>
    </item>
    <item>
      <title>Leetcode 20 Valid Parentheses 릿코드 20번 Valid Parentheses</title>
      <link>https://saurus2.tistory.com/entry/Leetcode-20-Valid-Parentheses-%EB%A6%BF%EC%BD%94%EB%93%9C-20%EB%B2%88-Valid-Parentheses</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;20번&amp;nbsp;문제,&amp;nbsp;유효&amp;nbsp;괄호들&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;No&amp;nbsp;20&amp;nbsp;Valid&amp;nbsp;Parentheses&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/E5Y4I2zV9bU&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/E5Y4I2zV9bU&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=E5Y4I2zV9bU&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cTXV5k/hyT9HlAPsQ/koEo3kGGIRIbBtQcWnCsc0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Leetcode 20 Valid Parentheses 릿코드 20번 Valid Parentheses&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/E5Y4I2zV9bU&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/valid-parentheses/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/valid-parentheses/description/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697236258908&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Valid Parentheses - LeetCode&quot; data-og-description=&quot;Can you solve this real interview question? Valid Parentheses - Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: 1. Open brackets must be closed by the sam&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/valid-parentheses/description/&quot; data-og-url=&quot;https://leetcode.com/problems/valid-parentheses/description&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1h3K5/hyUdZZeATt/GIP8ZrrgGv2ZA6Njlvauuk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/valid-parentheses/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/valid-parentheses/description/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1h3K5/hyUdZZeATt/GIP8ZrrgGv2ZA6Njlvauuk/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Valid Parentheses - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Can you solve this real interview question? Valid Parentheses - Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: 1. Open brackets must be closed by the sam&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;containing just the characters&lt;span&gt;&amp;nbsp;&lt;/span&gt;'(',&lt;span&gt;&amp;nbsp;&lt;/span&gt;')',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'{',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'}',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'['&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;']', determine if the input string is valid.&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;An input string is valid if:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Open brackets must be closed by the same type of brackets.&lt;/li&gt;
&lt;li&gt;Open brackets must be closed in the correct order.&lt;/li&gt;
&lt;li&gt;Every close bracket has a corresponding open bracket of the same type.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: s = &quot;()&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: s = &quot;()[]{}&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;background-color: #0f0f0f; color: #000000; text-align: start;&quot;&gt;&lt;code&gt;Input: s = &quot;(]&quot;
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of parentheses only&lt;span&gt;&amp;nbsp;&lt;/span&gt;'()[]{}'.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>20 Valid Parentheses</category>
      <category>LeetCode</category>
      <category>Leetcode 20 Valid Parentheses</category>
      <category>Valid Parentheses</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/281</guid>
      <comments>https://saurus2.tistory.com/entry/Leetcode-20-Valid-Parentheses-%EB%A6%BF%EC%BD%94%EB%93%9C-20%EB%B2%88-Valid-Parentheses#entry281comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:31:44 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 217 Contains Duplicate 릿코드 중복 포함</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-217-Contains-Duplicate-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%A4%91%EB%B3%B5-%ED%8F%AC%ED%95%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;217번&amp;nbsp;문제&amp;nbsp;Contains&amp;nbsp;Duplicate&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;No&amp;nbsp;217&amp;nbsp;contains&amp;nbsp;duplicate&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/Jtr1YmzYaSc&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/Jtr1YmzYaSc&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Jtr1YmzYaSc&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/fixEf/hyT9M8iM3F/LLwXYRcebDYFNiQk2D2wd1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 217 Contains Duplicate 릿코드 중복 포함&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Jtr1YmzYaSc&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/contains-duplicate/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/contains-duplicate/description/&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;a style=&quot;color: #ffffff;&quot; href=&quot;https://leetcode.com/problems/contains-duplicate/&quot;&gt;217. Contains Duplicate&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if any value appears&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;at least twice&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the array, and return&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;if every element is distinct.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: nums = [1,2,3,1]
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: nums = [1,2,3,4]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= nums[i] &amp;lt;= 109&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>217. Contains Duplicate</category>
      <category>Contains Duplicate</category>
      <category>LeetCode</category>
      <category>LeetCode 217. Contains Duplicate</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/280</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-217-Contains-Duplicate-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%A4%91%EB%B3%B5-%ED%8F%AC%ED%95%A8#entry280comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:30:05 +0900</pubDate>
    </item>
    <item>
      <title>LeetCode 125 Valid Palindrome 릿코드 유효 펠린드롬</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-125-Valid-Palindrome-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%9C%A0%ED%9A%A8-%ED%8E%A0%EB%A6%B0%EB%93%9C%EB%A1%AC</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&amp;nbsp;코딩세끼&amp;nbsp;입니다.&lt;br /&gt;개발자가&amp;nbsp;되고&amp;nbsp;싶은&amp;nbsp;구독자들을&amp;nbsp;위해&amp;nbsp;코딩&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;제작하고&amp;nbsp;있습니다.&lt;br /&gt;미국&amp;nbsp;실리콘&amp;nbsp;밸리&amp;nbsp;뿐만아니라&amp;nbsp;한국에서도&amp;nbsp;개발자&amp;nbsp;능력의&amp;nbsp;필수&amp;nbsp;요소로&amp;nbsp;코딩테스트&amp;nbsp;및&amp;nbsp;코딩&amp;nbsp;인터뷰가&amp;nbsp;요구&amp;nbsp;되고&amp;nbsp;있습니다.&amp;nbsp;영상&amp;nbsp;구성은&amp;nbsp;다음과&amp;nbsp;같습니다.&lt;br /&gt;&lt;br /&gt;-영상&amp;nbsp;구성-&lt;br /&gt;스터디&amp;nbsp;영상&amp;nbsp;하나에&amp;nbsp;리트코드&amp;nbsp;문제&amp;nbsp;하나를&amp;nbsp;각자&amp;nbsp;풀&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;영상을&amp;nbsp;구성하였습니다.&amp;nbsp;&lt;br /&gt;스터디를&amp;nbsp;진행해보시면서&amp;nbsp;궁금한&amp;nbsp;점이나&amp;nbsp;피드백이&amp;nbsp;있으면&amp;nbsp;댓글&amp;nbsp;부탁드립니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;이번&amp;nbsp;영상은&amp;nbsp;릿코드(리트코드)&amp;nbsp;125번&amp;nbsp;문제&amp;nbsp;유효&amp;nbsp;팰린드롬&amp;nbsp;문제를&amp;nbsp;다루는&amp;nbsp;스터디입니다.&lt;br /&gt;LeetCode&amp;nbsp;No&amp;nbsp;125&amp;nbsp;Valid&amp;nbsp;Palindrome.&lt;br /&gt;&lt;br /&gt;-스터디&amp;nbsp;방식-&lt;br /&gt;1.&amp;nbsp;동영상을&amp;nbsp;재생하는&amp;nbsp;동안&amp;nbsp;각자&amp;nbsp;문제를&amp;nbsp;풀&amp;nbsp;시간&amp;nbsp;20분이&amp;nbsp;주어집니다.&lt;br /&gt;2.&amp;nbsp;5분마다&amp;nbsp;힌트를&amp;nbsp;드립니다.&lt;br /&gt;2-1)&amp;nbsp;문제&amp;nbsp;번역&lt;br /&gt;2-2)&amp;nbsp;문제&amp;nbsp;접근&amp;nbsp;방법&lt;br /&gt;2-3)&amp;nbsp;문제&amp;nbsp;풀이&amp;nbsp;힌트&lt;br /&gt;3.&amp;nbsp;20분이&amp;nbsp;지나면&amp;nbsp;문제&amp;nbsp;풀이를&amp;nbsp;진행&amp;nbsp;합니다.&lt;br /&gt;3-1)&amp;nbsp;한&amp;nbsp;문제에서&amp;nbsp;나오는&amp;nbsp;모든&amp;nbsp;풀이들을&amp;nbsp;다루려고&amp;nbsp;노력하고&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;현재는&amp;nbsp;Python으로&amp;nbsp;해설을&amp;nbsp;진행하며,&amp;nbsp;추후&amp;nbsp;요청에따라&amp;nbsp;다른&amp;nbsp;언어로도&amp;nbsp;영상을&amp;nbsp;찍도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/valid-palindrome/description/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/valid-palindrome/description/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/Hq5ImKruKGI&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/Hq5ImKruKGI&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=Hq5ImKruKGI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dH9YRw/hyUdM6DZa5/Sak31m3CDVWSTlxDDNBQR0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 125 Valid Palindrome 릿코드 유효 펠린드롬&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Hq5ImKruKGI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;a style=&quot;color: #ffffff;&quot; href=&quot;https://leetcode.com/problems/valid-palindrome/&quot;&gt;125. Valid Palindrome&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A phrase is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;palindrome&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if it is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;palindrome&lt;/b&gt;, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot;A man, a plan, a canal: Panama&quot;
Output: true
Explanation: &quot;amanaplanacanalpanama&quot; is a palindrome.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot;race a car&quot;
Output: false
Explanation: &quot;raceacar&quot; is not a palindrome.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;livecodeserver&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: s = &quot; &quot;
Output: true
Explanation: s is an empty string &quot;&quot; after removing non-alphanumeric characters.
Since an empty string reads the same forward and backward, it is a palindrome.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 2 * 105&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists only of printable ASCII characters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>125 valid palindrome</category>
      <category>LeetCode</category>
      <category>leetcode 125 valid palindrome</category>
      <category>Valid Palindrome</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/279</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-125-Valid-Palindrome-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%9C%A0%ED%9A%A8-%ED%8E%A0%EB%A6%B0%EB%93%9C%EB%A1%AC#entry279comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:27:07 +0900</pubDate>
    </item>
    <item>
      <title>개발자가 되는 방법!! 코딩세끼 릿코드 스터디 지금 시작합니다 [안내영상]</title>
      <link>https://saurus2.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%BD%94%EB%94%A9%EC%84%B8%EB%81%BC-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%A7%80%EA%B8%88-%EC%8B%9C%EC%9E%91%ED%95%A9%EB%8B%88%EB%8B%A4-%EC%95%88%EB%82%B4%EC%98%81%EC%83%81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;코딩테스트&amp;nbsp;및&amp;nbsp;인터뷰,&amp;nbsp;면접을&amp;nbsp;준비하기&amp;nbsp;위한&amp;nbsp;첫&amp;nbsp;영상!!!&lt;br /&gt;리트코드&amp;nbsp;스터디&amp;nbsp;영상을&amp;nbsp;시청하시기&amp;nbsp;전에&amp;nbsp;꼭&amp;nbsp;봐야할&amp;nbsp;가이드&amp;nbsp;영상입니다.&lt;br /&gt;앞으로&amp;nbsp;어떻게&amp;nbsp;스터디를&amp;nbsp;진행하는지에&amp;nbsp;대한&amp;nbsp;설명이&amp;nbsp;있으니&amp;nbsp;꼭&amp;nbsp;시청바랍니다.&lt;br /&gt;좋아요,&amp;nbsp;구독,&amp;nbsp;댓글,&amp;nbsp;알람설정&amp;nbsp;부탁드려요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/wAS-RgtvC44&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/wAS-RgtvC44&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=wAS-RgtvC44&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/nVhv8/hyUdOcjLY4/smcSZGdCqKRVupwKKN8kzk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;개발자가 되는 방법!! 코딩세끼 릿코드 스터디 지금 시작합니다 [안내영상]&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/wAS-RgtvC44&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>개발자</category>
      <category>코딩공부</category>
      <category>코딩테스트</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/278</guid>
      <comments>https://saurus2.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EB%8A%94-%EB%B0%A9%EB%B2%95-%EC%BD%94%EB%94%A9%EC%84%B8%EB%81%BC-%EB%A6%BF%EC%BD%94%EB%93%9C-%EC%8A%A4%ED%84%B0%EB%94%94-%EC%A7%80%EA%B8%88-%EC%8B%9C%EC%9E%91%ED%95%A9%EB%8B%88%EB%8B%A4-%EC%95%88%EB%82%B4%EC%98%81%EC%83%81#entry278comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:24:59 +0900</pubDate>
    </item>
    <item>
      <title>릿코드가 도대체 뭐야? 개발자가 되고 싶으면 뭐 부터 공부해야하지? 무조건 공부해야하는 코딩 테스트 준비!!</title>
      <link>https://saurus2.tistory.com/entry/%EB%A6%BF%EC%BD%94%EB%93%9C%EA%B0%80-%EB%8F%84%EB%8C%80%EC%B2%B4-%EB%AD%90%EC%95%BC-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9C%BC%EB%A9%B4-%EB%AD%90-%EB%B6%80%ED%84%B0-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EC%A7%80-%EB%AC%B4%EC%A1%B0%EA%B1%B4-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리트코드(릿코드, leetcode) 공부를 처음 시작하는 분들께 필요한 영상입니다.&lt;br /&gt;어떻게&amp;nbsp;공부를&amp;nbsp;시작해야하는지&amp;nbsp;모르시는&amp;nbsp;분들,&amp;nbsp;릿코드&amp;nbsp;웹사이트에&amp;nbsp;어떤&amp;nbsp;서비스가&amp;nbsp;&lt;br /&gt;있는지&amp;nbsp;모르시는&amp;nbsp;분들을&amp;nbsp;위해&amp;nbsp;준비했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/SJ1xbxaZhqs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youtu.be/SJ1xbxaZhqs&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1697235841007&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;- YouTube&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.youtube.com&quot; data-og-source-url=&quot;https://youtu.be/SJ1xbxaZhqs&quot; data-og-url=&quot;https://www.youtube.com/watch?v=SJ1xbxaZhqs&amp;amp;feature=youtu.be&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://youtu.be/SJ1xbxaZhqs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youtu.be/SJ1xbxaZhqs&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;- YouTube&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.youtube.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 Solutions</category>
      <category>LeetCode</category>
      <category>개발자</category>
      <category>리트코드</category>
      <category>릿코드</category>
      <category>코딩공부</category>
      <category>코딩테스트</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/277</guid>
      <comments>https://saurus2.tistory.com/entry/%EB%A6%BF%EC%BD%94%EB%93%9C%EA%B0%80-%EB%8F%84%EB%8C%80%EC%B2%B4-%EB%AD%90%EC%95%BC-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%90%98%EA%B3%A0-%EC%8B%B6%EC%9C%BC%EB%A9%B4-%EB%AD%90-%EB%B6%80%ED%84%B0-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EC%A7%80-%EB%AC%B4%EC%A1%B0%EA%B1%B4-%EA%B3%B5%EB%B6%80%ED%95%B4%EC%95%BC%ED%95%98%EB%8A%94-%EC%BD%94%EB%94%A9-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A4%80%EB%B9%84#entry277comment</comments>
      <pubDate>Sat, 14 Oct 2023 07:24:13 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 100 Same Tree [Easy] 같은 트리</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-100-Same-Tree-Easy-%EA%B0%99%EC%9D%80-%ED%8A%B8%EB%A6%AC</link>
      <description>&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;h1 style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;a style=&quot;color: #ffffff;&quot; href=&quot;https://leetcode.com/problems/same-tree/&quot;&gt;100. Same Tree&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-track-load=&quot;description_content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;Given the roots of two binary trees&amp;nbsp;p&amp;nbsp;and&amp;nbsp;q, write a function to check if they are the same or not.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.&lt;/span&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;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4AIcg/btsylA18qai/AdpXfMR8sQrd5B05WpCkL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4AIcg/btsylA18qai/AdpXfMR8sQrd5B05WpCkL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4AIcg/btsylA18qai/AdpXfMR8sQrd5B05WpCkL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4AIcg%2FbtsylA18qai%2FAdpXfMR8sQrd5B05WpCkL0%2Fimg.jpg&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;622&quot; height=&quot;182&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: p = [1,2,3], q = [1,2,3]
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0od45/btsynECH5hf/4jwjrS6rmWXL3KvKpKKNGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0od45/btsynECH5hf/4jwjrS6rmWXL3KvKpKKNGK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0od45/btsynECH5hf/4jwjrS6rmWXL3KvKpKKNGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0od45%2FbtsynECH5hf%2F4jwjrS6rmWXL3KvKpKKNGK%2Fimg.jpg&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;382&quot; height=&quot;182&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: p = [1,2], q = [1,null,2]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VmQke/btsybXqz92W/YvkulQselId0PZvWc4oAy1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VmQke/btsybXqz92W/YvkulQselId0PZvWc4oAy1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VmQke/btsybXqz92W/YvkulQselId0PZvWc4oAy1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVmQke%2FbtsybXqz92W%2FYvkulQselId0PZvWc4oAy1%2Fimg.jpg&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;622&quot; height=&quot;182&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: p = [1,2,1], q = [1,1,2]
Output: false
&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;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/span&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;span style=&quot;color: #ffffff;&quot;&gt;The number of nodes in both trees is in the range&amp;nbsp;[0, 100].&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;-104 &amp;lt;= Node.val &amp;lt;= 104&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;a href=&quot;https://www.youtube.com/watch?v=f1cFqsdlmxg&quot;&gt;https://www.youtube.com/watch?v=f1cFqsdlmxg&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=f1cFqsdlmxg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ckNgge/hyT9znq9IK/l7sAuObQAR2m1XGTlAyD1k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 100 Same Tree 같은 트리&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/f1cFqsdlmxg&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>leetcode 100 same tree</category>
      <category>leetcode same tree</category>
      <category>Same Tree</category>
      <category>리트코드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/276</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-100-Same-Tree-Easy-%EA%B0%99%EC%9D%80-%ED%8A%B8%EB%A6%AC#entry276comment</comments>
      <pubDate>Fri, 13 Oct 2023 09:01:23 +0900</pubDate>
    </item>
    <item>
      <title>206 Reverse Linked List [LeetCode]</title>
      <link>https://saurus2.tistory.com/entry/206-Reverse-Linked-List-LeetCode</link>
      <description>&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;206 Reverse Linked List&lt;/span&gt;&lt;/h2&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Given the&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;of a singly linked list, reverse the list, and return&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ffffff; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;the reversed list.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #0f0f0f; color: #ffffff; text-align: start;&quot; data-track-load=&quot;description_content&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baEoNw/btsv7Uidvwc/bNHmvG0SCQD56hCFl6XeLK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baEoNw/btsv7Uidvwc/bNHmvG0SCQD56hCFl6XeLK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baEoNw/btsv7Uidvwc/bNHmvG0SCQD56hCFl6XeLK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaEoNw%2Fbtsv7Uidvwc%2FbNHmvG0SCQD56hCFl6XeLK%2Fimg.jpg&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;542&quot; height=&quot;222&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ykucN/btsv9LZqcxU/jm3gHjkJ83CMKKnAH3LpGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ykucN/btsv9LZqcxU/jm3gHjkJ83CMKKnAH3LpGK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ykucN/btsv9LZqcxU/jm3gHjkJ83CMKKnAH3LpGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FykucN%2Fbtsv9LZqcxU%2Fjm3gHjkJ83CMKKnAH3LpGK%2Fimg.jpg&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;182&quot; height=&quot;222&quot; data-origin-width=&quot;182&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: head = [1,2]
Output: [2,1]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;apache&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;Input: head = []
Output: []
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in the list is the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 5000].&lt;/li&gt;
&lt;li&gt;-5000 &amp;lt;= Node.val &amp;lt;= 5000&lt;/li&gt;
&lt;/ul&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;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;A linked list can be reversed either iteratively or recursively. Could you implement both?&lt;/p&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;해설 풀이 및 스터디&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=A3kQnKH10VQ&quot;&gt;https://www.youtube.com/watch?v=A3kQnKH10VQ&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=A3kQnKH10VQ&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/uDD8y/hyT51CVmMc/Ev8uq7NK2AZKEveQlYL41k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;LeetCode 206 Reverse Linked List&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/A3kQnKH10VQ&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/알고리즘 _ 문제해결</category>
      <category>206 Reverse Linked List</category>
      <category>LinkedList</category>
      <category>Reverse Linked List</category>
      <category>리트코드</category>
      <category>링크드리스트</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/275</guid>
      <comments>https://saurus2.tistory.com/entry/206-Reverse-Linked-List-LeetCode#entry275comment</comments>
      <pubDate>Tue, 3 Oct 2023 10:35:31 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 280. Wiggle Sort</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-280-Wiggle-Sort</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;280.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Wiggle Sort&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums, reorder it such that&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums[0] &amp;lt;= nums[1] &amp;gt;= nums[2] &amp;lt;= nums[3]....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You may assume the input array always has a valid answer.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [3,5,2,1,6,4]
Output: [3,5,1,6,2,4]
Explanation: [1,6,2,5,3,4] is also accepted.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [6,6,5,6,3,8]
Output: [6,6,5,6,3,8]
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 5 * 104&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= nums[i] &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;It is guaranteed that there will be an answer for the given input&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums.&lt;/li&gt;
&lt;/ul&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;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Could you solve the problem in&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(n)&lt;span&gt;&amp;nbsp;&lt;/span&gt;time complexity?&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&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;네번째 다섯번째 숫자도 마찬가지로 지그재그로 크기가 달라야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간복잡도를 정할때 문제 제한을 보면 최대 값이 5 * 10^4 이기 때문에 O(N^2)으로 풀기에는 조금 버거워 보이기도 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정렬 O(NlogN)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자 배열을 우선 정렬하고 2칸씩 옮기면서 지금 자리보다 1개 앞인 자리의 숫자를 교환한다.&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;그 두자리의 수들은 지그재그 정렬 조건에 맞아 떨어진다.&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;b&gt;그리디 O(N)&lt;/b&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;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정렬&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1676326782357&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def wiggleSort(self, nums: List[int]) -&amp;gt; None:
        &quot;&quot;&quot;
        Do not return anything, modify nums in-place instead.
        &quot;&quot;&quot;
        nums.sort()
        for i in range(1, len(nums) - 1, 2):
            nums[i], nums[i + 1] = nums[i + 1], nums[i]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;그리디&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1676326806943&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def wiggleSort(self, nums: List[int]) -&amp;gt; None:
        &quot;&quot;&quot;
        Do not return anything, modify nums in-place instead.
        &quot;&quot;&quot;
        for i in range(len(nums) - 1):
            if i % 2 == 0 and nums[i] &amp;gt; nums[i + 1] \
            or i % 2 == 1 and nums[i] &amp;lt; nums[i + 1]:
                nums[i], nums[i + 1] = nums[i + 1], nums[i]&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>[LeetCode] 280. Wiggle Sort</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/274</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-280-Wiggle-Sort#entry274comment</comments>
      <pubDate>Tue, 14 Feb 2023 07:20:17 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1523. Count Odd Numbers in an Interval Range</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1523-Count-Odd-Numbers-in-an-Interval-Range</link>
      <description>&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1523.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Count Odd Numbers in an Interval Range&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-headlessui-state=&quot;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;headlessui-popover-button-:rmt:&quot; data-headlessui-state=&quot;&quot;&gt;
&lt;div&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given two non-negative integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;low&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;high. Return the&lt;span&gt;&amp;nbsp;&lt;/span&gt;count of odd numbers between&lt;span&gt;&amp;nbsp;&lt;/span&gt;low&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;high&amp;nbsp;(inclusive).&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: low = 3, high = 7
Output: 3
Explanation: The odd numbers between 3 and 7 are [3,5,7].&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: low = 8, high = 10
Output: 1
Explanation: The odd numbers between 8 and 10 are [9].&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0 &amp;lt;= low &amp;lt;= high&amp;nbsp;&amp;lt;= 10^9&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자 두개가 주어진다.&lt;/li&gt;
&lt;li&gt;두개 숫자들을 포함하여 숫자들 사이에 있는 모든 홀수의 갯수를 구하여라.&lt;/li&gt;
&lt;li&gt;문제 풀이 제한을 보면 숫자의 최대값이 10^9이기 때문에 O(1) 시간복잡도로 풀어야한다.&lt;/li&gt;
&lt;li&gt;두개의 숫자 사이에 존재하는 숫자들은 짝수 반, 홀수 반이라고 생각할 수 있다.&lt;/li&gt;
&lt;li&gt;예를들어 1 부터 5일 경우 홀수는 1, 3, 5 짝수는 2, 4가 있다.&lt;/li&gt;
&lt;li&gt;여기서 두가지 경우로 나눌 수 있다.&lt;/li&gt;
&lt;li&gt;1 2 3 4 5: low와 high둘 중의 하나라도 홀수가 있는 경우에 홀수가 짝수보다 1개가 많다.&lt;/li&gt;
&lt;li&gt;2 3 4 5 6: low와 high둘다 짝수라면 홀수는 두개 짝수는 세개가 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이를 활용하여 문제를 풀 수 있는데, high 에서 low를 빼고 2로 나누면 각각 숫자의 개수가 나온다.&lt;/li&gt;
&lt;li&gt;둘다 짝수일때는 홀수가 반이 있다고 가정할 수 있으며, 그게 아니라면 1을 더해줘야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1676320257854&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def countOdds(self, low: int, high: int) -&amp;gt; int:
        ans = (high - low) // 2
        if low % 2 == 0 and high % 2 == 0:
            return ans
        else:
            return ans + 1&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>[LeetCode] 1523. Count Odd Numbers in an Interval Range</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/273</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1523-Count-Odd-Numbers-in-an-Interval-Range#entry273comment</comments>
      <pubDate>Tue, 14 Feb 2023 06:23:33 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 2477. Minimum Fuel Cost to Report to the Capital</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-2477-Minimum-Fuel-Cost-to-Report-to-the-Capital</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2477.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Minimum Fuel Cost to Report to the Capital&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a tree (i.e., a connected, undirected graph with no cycles) structure country network consisting of&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;cities numbered from&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and exactly&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;roads. The capital city is city&lt;span&gt;&amp;nbsp;&lt;/span&gt;0. You are given a 2D integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;roads&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;roads[i] = [ai, bi]&lt;span&gt;&amp;nbsp;&lt;/span&gt;denotes that there exists a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;bidirectional road&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;connecting cities&lt;span&gt;&amp;nbsp;&lt;/span&gt;ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;bi.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a meeting for the representatives of each city. The meeting is in the capital city.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a car in each city. You are given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;seats&lt;span&gt;&amp;nbsp;&lt;/span&gt;that indicates the number of seats in each car.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A representative can use the car in their city to travel or change the car and ride with another representative. The cost of traveling between two cities is one liter of fuel.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the minimum number of liters of fuel to reach the capital city.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbiNgY/btrYUv8FfN6/TsjC9KocEnKhmOjqJBTEF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbiNgY/btrYUv8FfN6/TsjC9KocEnKhmOjqJBTEF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbiNgY/btrYUv8FfN6/TsjC9KocEnKhmOjqJBTEF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbiNgY%2FbtrYUv8FfN6%2FTsjC9KocEnKhmOjqJBTEF1%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;303&quot; height=&quot;332&quot; data-origin-width=&quot;303&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: roads = [[0,1],[0,2],[0,3]], seats = 5
Output: 3
Explanation: 
- Representative1 goes directly to the capital with 1 liter of fuel.
- Representative2 goes directly to the capital with 1 liter of fuel.
- Representative3 goes directly to the capital with 1 liter of fuel.
It costs 3 liters of fuel at minimum. 
It can be proven that 3 is the minimum number of liters of fuel needed.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K5M6d/btrYUTuO0U1/lKHiJQLgYxcg4PYGV2egV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K5M6d/btrYUTuO0U1/lKHiJQLgYxcg4PYGV2egV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K5M6d/btrYUTuO0U1/lKHiJQLgYxcg4PYGV2egV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK5M6d%2FbtrYUTuO0U1%2FlKHiJQLgYxcg4PYGV2egV1%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;274&quot; height=&quot;340&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: roads = [[3,1],[3,2],[1,0],[0,4],[0,5],[4,6]], seats = 2
Output: 7
Explanation: 
- Representative2 goes directly to city 3 with 1 liter of fuel.
- Representative2 and representative3 go together to city 1 with 1 liter of fuel.
- Representative2 and representative3 go together to the capital with 1 liter of fuel.
- Representative1 goes directly to the capital with 1 liter of fuel.
- Representative5 goes directly to the capital with 1 liter of fuel.
- Representative6 goes directly to city 4 with 1 liter of fuel.
- Representative4 and representative6 go together to the capital with 1 liter of fuel.
It costs 7 liters of fuel at minimum. 
It can be proven that 7 is the minimum number of liters of fuel needed.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;108&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPa5dH/btrYTqmvF4d/fSdUPBvE5ZbhHkNKDJ9FK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPa5dH/btrYTqmvF4d/fSdUPBvE5ZbhHkNKDJ9FK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPa5dH/btrYTqmvF4d/fSdUPBvE5ZbhHkNKDJ9FK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPa5dH%2FbtrYTqmvF4d%2FfSdUPBvE5ZbhHkNKDJ9FK0%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;108&quot; height=&quot;86&quot; data-origin-width=&quot;108&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: roads = [], seats = 1
Output: 0
Explanation: No representatives need to travel to the capital city.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;roads.length == n - 1&lt;/li&gt;
&lt;li&gt;roads[i].length == 2&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= ai, bi &amp;lt; n&lt;/li&gt;
&lt;li&gt;ai != bi&lt;/li&gt;
&lt;li&gt;roads&lt;span&gt;&amp;nbsp;&lt;/span&gt;represents a valid tree.&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= seats &amp;lt;= 105&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프가 하나 주어지며 이 그래프는 0부터 n - 1 까지 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그래프의 간선들이 리스트로 주어지고 자동차에 탈 수 있는 총인원의 수가 주어진다.&lt;/li&gt;
&lt;li&gt;0이 목적지이며 각각의 숫자에서 자동차를 타고 다른 노드로 이동할때마다 1의 기름값이 사용된다.&lt;/li&gt;
&lt;li&gt;여기서 기름값이 최소로 드는 값을 구해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;자동차에 탈 수 있는 총인원의 수는 현재노드에서 다음노드로 이동시에 이전 노드에서 넘어온 사람을 그 숫자만큼 태우고 이동할 수 있다.&lt;/li&gt;
&lt;li&gt;즉, 노드가 3개가 연결되어있고 총인원 수가 3이라면 맨 마지막에서 이동 후 한사람을 태우고 그 다음 노드에서 한사람을 태우면 각각 노드에서의 이동 기름값인 1 + 1 + 1만 소비된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문제 제한을 보면 10^5이며, N^2의 시간복잡도로는 풀 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;노드를 각각 한번씩만 들리고 문제를 풀 수 있다면 DFS, BFS도 가능할 것이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;DFS로 접근해보자, 가장 중요한 포인트는 노드를 이동할때 마다 각 노드에서 출발하는 사람의 수를 중첩하여 더 해주어야한다.&lt;/li&gt;
&lt;li&gt;그리고 나머지 연산을 이용하여 0으로 나누어 떨어지지 않으면 한 사람의 값만 추가하여 정답에 더 해야한다.&lt;/li&gt;
&lt;li&gt;그 이유는 총 인원보다 적을때 그 그룹은 어쨋거나 한 자동차내에 탑승할 수 있기 때문이다.&lt;/li&gt;
&lt;li&gt;마지막 노드까지 탐색한 후에 노드의 개수를 리턴해주며 더해줘야 하며, 정답을 처리할때는 차에 탑승 가능한 총 인원수와 노드에서 나온 중첩된 인원수를 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉 차에 수용가능한 인원수로 현재 중첩된 인원들을 나누어 몫은 바로 노드를 이동하는 소요시간으로 더해질것이다.&lt;/li&gt;
&lt;li&gt;그리고 위에서 언급한 나머지 연산을 통해 한 그룹을 추가할지를 정한다.&lt;/li&gt;
&lt;li&gt;마지막으로 현재 노드가 0인 노드에 도착하지 않았을때 값들을 정답에 더해줘야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;왜냐하면 post order, 즉 후위순회로 노드의 연료 계산이 적용되기 때문에 0에 도착했을 당시의 연료 소비는 없는 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&amp;nbsp;&lt;/h2&gt;
&lt;pre id=&quot;code_1676185230797&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def __init__(self):
    	# global answer
        self.ans = 0

    def dfs(self, curr, seats, visited, graph):
    	# initiate person count
        cnt = 1
        for nxt in graph[curr]:
            if nxt not in visited:
                visited.add(curr)
                cnt += self.dfs(nxt, seats, visited, graph)
        # how many cars are from here?
        tmp = cnt // seats
        # over 0 means one more car is necessary
        if cnt % seats != 0:
            tmp += 1
        # Cause post order
        if curr != 0:
            self.ans += tmp
        return cnt
        

    def minimumFuelCost(self, roads: List[List[int]], seats: int) -&amp;gt; int:
        graph = defaultdict(list)
        visited = set()
        for a, b in roads:
            graph[a].append(b)
            graph[b].append(a)
        self.dfs(0, seats, visited, graph)
        return self.ans&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>[LeetCode] 2477. Minimum Fuel Cost to Report to the Capital</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/272</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-2477-Minimum-Fuel-Cost-to-Report-to-the-Capital#entry272comment</comments>
      <pubDate>Sun, 12 Feb 2023 16:00:38 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 567. Permutation in String</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-567-Permutation-in-String</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;567.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Permutation in String&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given two strings&lt;span&gt;&amp;nbsp;&lt;/span&gt;s1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;s2, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;s2&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains a permutation of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s1, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In other words, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if one of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s1's permutations is the substring of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s2.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;Input: s1 = &quot;ab&quot;, s2 = &quot;eidbaooo&quot;
Output: true
Explanation: s2 contains one permutation of s1 (&quot;ba&quot;).
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s1 = &quot;ab&quot;, s2 = &quot;eidboaoo&quot;
Output: false
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s1.length, s2.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;s1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;s2&lt;span&gt;&amp;nbsp;&lt;/span&gt;consist of lowercase English letters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;s2문장에서 s1단어가 존재하는지 확인해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;s1단어가 존재할 수 있다고 판단하는 상황은 연속적으로 붙어있으며 그 단어 크기 내의 글자의 순서는 상관없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;'acbd'에 'abc'가 존재한다. acb와 abc는 같은 크기와 같은 알파벳, 그리고 개수가 만족된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;'abcd'에 'abd'는 존재하지 않는다. 'abd'로 만들 수 있는 하나의 단어가 'abcd'안에서 만들어질 수 없기 때문이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;슬라이딩 윈도우&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제의 제한 조건을 보면 10^4이므로 브루투 포스로 풀 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;시간복잡도를 낮추기 위해 슬라이딩 윈도우를 사용한다.&lt;/li&gt;
&lt;li&gt;찾을 단어 s1를 Counter를 이용하여 개수를 미리센다.&lt;/li&gt;
&lt;li&gt;s2 문장에서 단어를 하나씩 탐색하면서 s1 단어에 있는 알파벳인지 확인하고 카운터의 갯수를 하나씩 제거한다.&lt;/li&gt;
&lt;li&gt;슬라이딩 윈도우이니 만큼 s1의 길이 즉 윈도우가 지나간 자리는 답을 체크할때 제거해줘야하기 때문에 카운터에서 1을 더한다.&lt;/li&gt;
&lt;li&gt;매번 슬라이딩 윈도우 프로세스가 끝날때 마다 카운터의 모든 값이 0이면 정답 True를 리턴하고, 탐색을 모두 마친후에도 결과가 나오지 않는다면 False 를 리턴한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1675977820819&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def checkInclusion(self, s1: str, s2: str) -&amp;gt; bool:
        cntr, w = Counter(s1), len(s1)
        for i in range(len(s2)):
            if s2[i] in cntr:
                cntr[s2[i]] -= 1
            if i &amp;gt;= w and s2[i-w] in cntr:
                cntr[s2[i-w]] += 1
            
            if all([cntr[i] == 0 for i in cntr]):
                return True
        return False&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>sliding window</category>
      <category>[LeetCode] 567. Permutation in String</category>
      <category>슬라이딩 윈도우</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/271</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-567-Permutation-in-String#entry271comment</comments>
      <pubDate>Fri, 10 Feb 2023 06:23:53 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 6. Zigzag Conversion</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-6-Zigzag-Conversion</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Zigzag Conversion&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The string&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;PAYPALISHIRING&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)&lt;/p&gt;
&lt;pre class=&quot;tp&quot;&gt;&lt;code&gt;P   A   H   N
A P L S I I G
Y   I   R
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;And then read line by line:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;PAHNAPLSIIGYIR&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Write the code that will take a string and make this conversion given a number of rows:&lt;/p&gt;
&lt;pre class=&quot;cpp&quot;&gt;&lt;code&gt;string convert(string s, int numRows);
&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;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: s = &quot;PAYPALISHIRING&quot;, numRows = 3
Output: &quot;PAHNAPLSIIGYIR&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Input: s = &quot;PAYPALISHIRING&quot;, numRows = 4
Output: &quot;PINALSIGYAHRPI&quot;
Explanation:
P     I    N
A   L S  I G
Y A   H R
P     I
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: s = &quot;A&quot;, numRows = 1
Output: &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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of English letters (lower-case and upper-case),&lt;span&gt;&amp;nbsp;&lt;/span&gt;','&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;'.'.&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= numRows &amp;lt;= 1000&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&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;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문장 한개와 행의 갯수가 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문장에서 순서대로 row갯수에 맞에 글자가 저장된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 다음 행의 숫자로 넘어갈 때는 거꾸로 저장이된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;예를 들어 PAYPALISHIRING, numRows가 3이면,
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0: P&lt;br /&gt;1: A&lt;br /&gt;2: Y&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;위와 같이 한 행씩 문자가 들어간다.&lt;/li&gt;
&lt;li&gt;그리고 행의 갯수만큼 글자를 배정하면 행의 숫자를 거꾸로 돌아가면서 문자를 행에 넣는다.&lt;/li&gt;
&lt;li&gt;첫번째 행과 마지막 행은 배제해야한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;예를 들면
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0: P&lt;br /&gt;1: A&lt;br /&gt;2: Y&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;PAY 다음에는 P를 넣어야하는데 이미 2까지 문자를 배정했으니, 거꾸로 1에 저장해야한다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0: P&lt;br /&gt;1: A P&lt;br /&gt;2: Y&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;위의 과정 다음에는 행의 번호가 시작점으로 간다.&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0: P&amp;nbsp; &amp;nbsp; A&lt;br /&gt;1: A P&lt;br /&gt;2: Y&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;A가 첫번째 행에 저장되고 나머지 과정은 위에서 예를 든 설명과 같이 반복된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제 제한을 살펴보면, 문장의 최대길이가 1000이기 때문에 브루트 포스로 문제를 풀어도 된다.&lt;/li&gt;
&lt;li&gt;투포인터 식으로 문제를 푼다면, 기존의 인덱스 idx와 행의 번호를 조작할때 사용할 d를 선언한다.&lt;/li&gt;
&lt;li&gt;인덱스를 늘리거나 줄이면서 해당 리스트에 문자를 넣자.&lt;/li&gt;
&lt;li&gt;행의 번호를 조작할때 1을 더하거나 1을 빼어 행의 번호를 바꿔야한다.&lt;/li&gt;
&lt;li&gt;맨마지막 행번호에 다다랐을때는 d를 -1로 바꿔주고 맨처음 인덱스에 다다랐을때는 1로 바꿔준다.&lt;/li&gt;
&lt;li&gt;d 값을 계속해서 idx값에 더해주는 식으로 문제를 푼다.&lt;/li&gt;
&lt;li&gt;if 문에서 첫번째 행의 번호와 마지막 행의 번호가 먼저 처리되고 문자를 답 리스트 문자열에 넣기 때문에 문제 없이 진행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1675471152039&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def convert(self, s: str, numRows: int) -&amp;gt; str:
        if numRows == 1:
            return s
        ans = ['' for _ in range(numRows)]
        idx, d = 0, 1
        for i in range(len(s)):
            ans[idx] += s[i]
            if idx == numRows - 1:
                d = -1
            elif idx == 0:
                d = 1
            idx += d
        return ''.join(ans)&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;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>6. ZigZag Conversion</category>
      <category>LeetCode</category>
      <category>string</category>
      <category>two pointer</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/270</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-6-Zigzag-Conversion#entry270comment</comments>
      <pubDate>Sat, 4 Feb 2023 09:48:02 +0900</pubDate>
    </item>
    <item>
      <title>AJAX로 3초마다 JSON파일 데이터 읽어 html 웹 페이지에 업데이트하는 방법</title>
      <link>https://saurus2.tistory.com/entry/AJAX%EB%A1%9C-3%EC%B4%88%EB%A7%88%EB%8B%A4-JSON%ED%8C%8C%EC%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%BD%EC%96%B4-html-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;웹페이지를 만들고 새로운 데이터를 아무런 변화없이 업데이트하기 위한 방법이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비동기적으로 html 구성요소를 바꾸거나 업데이트하는 등의 동작을 할 수 있다.&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;AJAX를 이용하여 웹페이지의 새로고침 없이 데이터를 업데이트 할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정해놓은 시간대로 함수를 호출하여 자바스크립트를 실행할 수 있는 함수는 setInterval() 함수이다.&lt;/p&gt;
&lt;pre id=&quot;code_1674627361710&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 1000 msec 마이크로세컨드, 1초마다 setInterval 안의 함수를 자동 호출할 수 있다. 
setInterval(function () {element.innerHTML += &quot;Hello&quot;}, 1000);&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;Ajax 를 사용하여 로컬의 json 파일을 불러오려고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;url 에는 파일이 위치하고 있는곳을 적어준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 파일 혹은 주소가 제대로 로딩되었다면 success 부분에서 javascript 코드들을 실행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로딩에 실패했다면 error 부분에 있는 코드가 동작한다.&lt;/p&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;setInterval&lt;/h2&gt;
&lt;pre id=&quot;code_1674627514946&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
	$(function () {
    	timer = setInterval(function () {
            $.ajax({
            	// 파일의 위치, 이름
                url: &quot;data.json&quot;,
                type: 'get',
                datatype: &quot;json&quot;,
                // after loading data
                success: function( json ) {
                    alert('success');
                },
                error: function() {
                    alert('error');
                }
            });
        }, 3000);
    });
&amp;lt;/script&amp;gt;&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;h2 data-ke-size=&quot;size26&quot;&gt;clearInterval&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타이머를 해제하는 함수는 clearInterval 을 사용하여 함수로 사용했던 timer 를 정지할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1674627588883&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
	// stop은 html 페이지의 버튼으로 사용하려고 넣었다. 
    $('#stop').click(function() {
            clearInterval(timer);
    });
&amp;lt;/script&amp;gt;&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;전체 코드를 보면, body 안에 있는 info 라는 div 안에 json 파일의 데이터들을 모두 불러 1초마다 갱신한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스 코드는 다음과 같다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;index.html&lt;/h2&gt;
&lt;pre id=&quot;code_1674627893052&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;title&amp;gt;JSON Read&amp;lt;/title&amp;gt;
    &amp;lt;script src=&quot;https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;p id=&quot;demo&quot;&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;br&amp;gt;
    &amp;lt;div id=&quot;info&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;button type=&quot;button&quot; id='start'&amp;gt;start&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;button&quot; id='stop'&amp;gt;stop&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1674627657198&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
        var timer;
        $('#start').click(function () {
            timer = setInterval(function () {
                $.ajax({
                    url: &quot;data.json&quot;,
                    type: 'get',
                    datatype: &quot;json&quot;,
                    // after loading data
                    success: function( json ) {
                        var user_info = &quot;&quot;;
                        for(var i = 0; i &amp;lt; json.length; i++){
                            user_info += &quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&quot; + (i + 1) + &quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&quot; + json[i].name + &quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&quot; + json[i].age + &quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&quot; + json[i].address +&quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&quot; + json[i].phone + &quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&quot;;
                        }
                        $('#info').html(user_info);
                    },
                    error: function() {
                        alert('error');
                    }
                });
            }, 3000);
        });
        $('#stop').click(function() {
            clearInterval(timer);
        });
    &amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&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;start 버튼을 누르면 3초마다 json 파일을 불러 데이터를 테이블에 뿌려준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만일 정상동작하는지 확인하고 싶다면 json 파일의 데이터를 바꾸고 저장하면 실시간으로 바뀌는 것을 볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 동작을 멈추고 싶다면 stop 버튼을 누르면 타이머가 해제된다.&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;h2 data-ke-size=&quot;size26&quot;&gt;data.json&lt;/h2&gt;
&lt;pre id=&quot;code_1674627734706&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[
  {
    &quot;name&quot;: &quot;abc&quot;,
    &quot;age&quot;: 1,
    &quot;address&quot;: &quot;seoul&quot;,
    &quot;phone&quot;: &quot;123&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;json 파일은 소스코드와 같은 폴더안에 들어가 있으면 정상 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발/AJAX</category>
      <category>Ajax</category>
      <category>Javascript</category>
      <category>JSON</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/269</guid>
      <comments>https://saurus2.tistory.com/entry/AJAX%EB%A1%9C-3%EC%B4%88%EB%A7%88%EB%8B%A4-JSON%ED%8C%8C%EC%9D%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%BD%EC%96%B4-html-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95#entry269comment</comments>
      <pubDate>Wed, 25 Jan 2023 15:23:44 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1299. Replace Elements with Greatest Element on Right Side</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1299-Replace-Elements-with-Greatest-Element-on-Right-Side</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1299.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Replace Elements with Greatest Element on Right Side&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr,&amp;nbsp;replace every element in that array with the greatest element among the elements to its&amp;nbsp;right, and replace the last element with&lt;span&gt;&amp;nbsp;&lt;/span&gt;-1.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;After doing so, return the array.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot;&gt;&lt;code&gt;Input: arr = [17,18,5,4,6,1]
Output: [18,6,6,6,1,-1]
Explanation: 
- index 0 --&amp;gt; the greatest element to the right of index 0 is index 1 (18).
- index 1 --&amp;gt; the greatest element to the right of index 1 is index 4 (6).
- index 2 --&amp;gt; the greatest element to the right of index 2 is index 4 (6).
- index 3 --&amp;gt; the greatest element to the right of index 3 is index 4 (6).
- index 4 --&amp;gt; the greatest element to the right of index 4 is index 5 (1).
- index 5 --&amp;gt; there are no elements to the right of index 5, so we put -1.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: arr = [400]
Output: [-1]
Explanation: There are no elements to the right of index 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= arr.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= arr[i] &amp;lt;= 105&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&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;맨 마지막 숫자는 무조건 -1을 답으로 넣어야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Max: Time Limitation Error&lt;/b&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;/li&gt;
&lt;li&gt;만약 왼쪽에서 부터 답을 찾아가는 방법으로도 답을 구할 수 있지만, 현재 위치를 제외하고 매번 (N - i - 1)만큼의 탐색을 해야한다.&lt;/li&gt;
&lt;li&gt;i + 1 ~ N까지의 숫자들 중에 하나의 가장 큰 숫자를 구해야하기 때문이다.&lt;/li&gt;
&lt;li&gt;즉 최종 시간복잡도는 O(N!)이 되기 때문에 문제 제한사항인 N^4에도 맞게 풀릴 수 가 없다.&lt;/li&gt;
&lt;li&gt;결국 시간초과 에러가 발생한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Swap &amp;amp; max&lt;/b&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;/li&gt;
&lt;li&gt;현재 위치에서 오른쪽의 모든 숫자들을 확인해야한다.&lt;/li&gt;
&lt;li&gt;하지만 반대로 생각하면 오른쪽 부터 큰 숫자를 찾아 진행하면 매번 현재 위치 오른쪽의 모든 값을 비교할 필요가 없다.&lt;/li&gt;
&lt;li&gt;다시말해 맨 오른쪽의 값이 현재의 최대값이라고 정하고 왼쪽으로 옮기면서 숫자를 비교해본다면 오른쪽 끝자리부터 최대값은 항상 보장이 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;예를 들어, 1, 2, 3이 있다면 맨 마지막 숫자를 최대값으로 정하고 index 2 위치에 저장한다.&lt;/li&gt;
&lt;li&gt;그리고 index 1로 갔을때 최대값으로 저장되어 있는 숫자는 오른쪽에서 왼쪽으로 한 자리씩 거쳐오면서 저장되는 최대값이다.&lt;/li&gt;
&lt;li&gt;즉 index 1에서 얻는 최대값은 3이며, index 0으로 이동했을때도 최대값은 3이다.&lt;/li&gt;
&lt;li&gt;그리고 마지막 값에 -1를 넣어주기 위해서 처음 최대값 변수의 값은 -1로 정한다.&lt;/li&gt;
&lt;li&gt;맨 오른쪽 값부터 최대값을 갱신하면서 왼쪽으로 이동한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이때 최대값을 구하기 전에 temp에 넣어놨던 값을 arr 배열 현재 위치에 넣고 temp에는 현재 위치와 temp중에 최대값을 넣는다.&lt;/li&gt;
&lt;li&gt;즉 현재 위치와 지금까지 최대값이였던 임시 변수와 크기 비교를 하여 temp에 넣고 이전에 가지고 있던 temp 즉 오른쪽의 최대값은 배열 현재 위치에 넣어준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;다시말해 오른쪽에서 시작해서 이전 최대값은 temp 변수에 저장해놓았다가 매번 갱신하기전에 이전 최대값을 현재 위치에 저장해야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sort&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열의 값과 인덱스를 튜플로 묶어 역순으로 정렬하는데 내림차순으로 정렬하는 거라고 봐도 무방한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;인덱스를 같이 저장하여 정렬하면서, 최대값을 비교할때 그 최대값이 현재 인덱스보다 크다면 정답으로 가질 수 있도록 하였다.&lt;/li&gt;
&lt;li&gt;즉 포인터를 두개 이용하여 값과 인덱스가 내림차순으로 정렬되어있는 배열을 탐색한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하나의 포인터는 항상 현재 위치를 나타내고, 두번째 포인터는 최대값부터 작은 값을 향해 나아간다.&lt;/li&gt;
&lt;li&gt;현재 위치에서 그 인덱스를 이용하여 내림차순으로 정렬되어있는 값을 확인한다.&lt;/li&gt;
&lt;li&gt;내림차순으로 정렬되어있기 때문에 오른쪽으로 갈수록 작아진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;확인하는 방법은 단순히 인덱스만 비교하면서 포인터를 정렬된 배열 끝까지 while문으로 탐색한다.&lt;/li&gt;
&lt;li&gt;숫자가 점점 작아지면서 현재 인덱스보다 크면 이동을 멈춘다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이는 현재 위치보다 큰 인덱스일 경우 가장 큰 값을 찾는 논리이다.&lt;/li&gt;
&lt;li&gt;즉 정렬된 배열안에서 항상 맨 왼쪽에 있는 숫자들은 크다는 것이 보장되어있고 현재 인덱스가 저장되어있는 인덱스보다 작다는 것은 그 숫자는 현재 위치의 오른쪽에서 가장 큰 값을 나타낸다.&lt;/li&gt;
&lt;li&gt;그리고 정답 배열 마지막에 -1를 넣어준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Max: Time Limitation Error&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673592471554&quot; class=&quot;ruby&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def replaceElements(self, arr: List[int]) -&amp;gt; List[int]:
        # max O(n!) TLE
        ans = [0] * len(arr)
        for i in range(len(arr) - 1):
            ans[i] = max(arr[i+1:])
        ans[-1] = -1
        return ans&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Swap &amp;amp; max&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673591883434&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def replaceElements(self, arr: List[int]) -&amp;gt; List[int]:
    # swap &amp;amp; max O(N)
        temp = -1
        for i in range(len(arr) - 1, -1, -1):
            arr[i], temp = temp, max(temp, arr[i])
        return arr&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sort&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673593851728&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def replaceElements(self, arr: List[int]) -&amp;gt; List[int]:
        # sort O(nLogn)
        arr = [(num, i) for i, num in enumerate(arr)]
        arr = sorted(arr, reverse=True)
        ans = [0] * len(arr)
        pointer = 0
        for i in range(len(arr) - 1):
            while pointer &amp;lt; len(arr) - 1 and i &amp;gt;= arr[pointer][1]:
                pointer += 1
            ans[i] = arr[pointer][0]
        ans[-1] = -1
        return ans&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Max</category>
      <category>sort</category>
      <category>Swap</category>
      <category>[LeetCode] 1299. Replace Elements with Greatest Element on Right Side</category>
      <category>맥스</category>
      <category>스왑</category>
      <category>정렬</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/268</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1299-Replace-Elements-with-Greatest-Element-on-Right-Side#entry268comment</comments>
      <pubDate>Fri, 13 Jan 2023 16:09:57 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 13. Roman to Integer</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-13-Roman-to-Integer-1</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;13.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Roman to Integer&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are represented by seven different symbols:&amp;nbsp;I,&lt;span&gt;&amp;nbsp;&lt;/span&gt;V,&lt;span&gt;&amp;nbsp;&lt;/span&gt;X,&lt;span&gt;&amp;nbsp;&lt;/span&gt;L,&lt;span&gt;&amp;nbsp;&lt;/span&gt;C,&lt;span&gt;&amp;nbsp;&lt;/span&gt;D&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;M.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;For example,&amp;nbsp;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;is written as&lt;span&gt;&amp;nbsp;&lt;/span&gt;II&amp;nbsp;in Roman numeral, just two ones added together.&lt;span&gt;&amp;nbsp;&lt;/span&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;is written as&amp;nbsp;XII, which is simply&lt;span&gt;&amp;nbsp;&lt;/span&gt;X + II. The number&lt;span&gt;&amp;nbsp;&lt;/span&gt;27&lt;span&gt;&amp;nbsp;&lt;/span&gt;is written as&lt;span&gt;&amp;nbsp;&lt;/span&gt;XXVII, which is&lt;span&gt;&amp;nbsp;&lt;/span&gt;XX + V + II.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not&lt;span&gt;&amp;nbsp;&lt;/span&gt;IIII. Instead, the number four is written as&lt;span&gt;&amp;nbsp;&lt;/span&gt;IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as&lt;span&gt;&amp;nbsp;&lt;/span&gt;IX. There are six instances where subtraction is used:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;I&lt;span&gt;&amp;nbsp;&lt;/span&gt;can be placed before&lt;span&gt;&amp;nbsp;&lt;/span&gt;V&lt;span&gt;&amp;nbsp;&lt;/span&gt;(5) and&lt;span&gt;&amp;nbsp;&lt;/span&gt;X&lt;span&gt;&amp;nbsp;&lt;/span&gt;(10) to make 4 and 9.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;X&lt;span&gt;&amp;nbsp;&lt;/span&gt;can be placed before&lt;span&gt;&amp;nbsp;&lt;/span&gt;L&lt;span&gt;&amp;nbsp;&lt;/span&gt;(50) and&lt;span&gt;&amp;nbsp;&lt;/span&gt;C&lt;span&gt;&amp;nbsp;&lt;/span&gt;(100) to make 40 and 90.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;C&lt;span&gt;&amp;nbsp;&lt;/span&gt;can be placed before&lt;span&gt;&amp;nbsp;&lt;/span&gt;D&lt;span&gt;&amp;nbsp;&lt;/span&gt;(500) and&lt;span&gt;&amp;nbsp;&lt;/span&gt;M&lt;span&gt;&amp;nbsp;&lt;/span&gt;(1000) to make 400 and 900.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a roman numeral, convert it to an integer.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;III&quot;
Output: 3
Explanation: III = 3.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;LVIII&quot;
Output: 58
Explanation: L = 50, V= 5, III = 3.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;MCMXCIV&quot;
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 15&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains only&amp;nbsp;the characters&lt;span&gt;&amp;nbsp;&lt;/span&gt;('I', 'V', 'X', 'L', 'C', 'D', 'M').&lt;/li&gt;
&lt;li&gt;It is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;guaranteed&lt;/b&gt;&amp;nbsp;that&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a valid roman numeral in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[1, 3999].&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;심볼과 숫자가 주어진다.&lt;/li&gt;
&lt;li&gt;심볼로 이루어진 문장을 숫자로 만들어야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;각각의 심볼은 숫자와 짝을 이루고 있으며, 심볼에 맞게 숫자를 더해주면 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문제에서 추가적으로 2글자의 심볼도 숫자로 지정하고 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;앞에 온 심볼이 다음 심볼보다 작은 숫자를 가지면 그것을 처리해줘도 되지만, 딕셔너리에 두글자 심볼도 모두 저장하여 풀수있다.&lt;/li&gt;
&lt;li&gt;시간복잡도는 마찬가지로 O(N)이 걸린다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;2개씩 문자를 모두 확인한다고 해도 O(2N)이 걸리기 때문에 속도면에서 조금차이날 뿐이지만 그렇게 큰차이는 아니다.&lt;/li&gt;
&lt;li&gt;for문을 사용하지 않는데, 이유는 인덱스를 옮기면서 값을 확인해야하기 때문이다.&lt;/li&gt;
&lt;li&gt;0부터 인덱스를 탐색할때 s[i:i+2]로 지금 위치에서 2자리 단어를 확인한다.&lt;/li&gt;
&lt;li&gt;만약 그 단어가 해쉬 테이블에 있다면 그 key에 해당하는 value를 답에 더해준다.&lt;/li&gt;
&lt;li&gt;그리고 인덱스를 2칸 옮긴다.&lt;/li&gt;
&lt;li&gt;두자리 단어가 없다면 해당 위치의 한 글자에 해당하는 value를 찾아 더해준다.&lt;/li&gt;
&lt;li&gt;한 글자에 해당하는 값을 찾았을때는 인덱스를 1증가 시킨다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;인덱스가 문장의 갯수보다 작을때까지만 포인터를 옮기면서 탐색하고 정답을 구한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1673511953344&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def romanToInt(self, s: str) -&amp;gt; int:
        hash_table = {
            'I':1,
            'V':5,
            'X':10,
            'L':50,
            'C':100,
            'D':500,
            'M':1000,
            'IV':4,
            'IX':9,
            'XL':40,
            'XC':90,
            'CD':400,
            'CM':900
        }
        ans = 0
        i = 0
        while i &amp;lt; len(s):
            if s[i:i+2] in hash_table:
                ans += hash_table[s[i:i+2]]
                i += 2
            else:
                ans += hash_table[s[i]]
                i += 1
        return ans&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Hash Table</category>
      <category>[LeetCode] 13. Roman to Integer</category>
      <category>해쉬테이블</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/267</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-13-Roman-to-Integer-1#entry267comment</comments>
      <pubDate>Fri, 13 Jan 2023 15:03:26 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 504. Base 7</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-504-Base-7</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;504.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Base 7&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;num, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;a string of its&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;base 7&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;representation.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: num = 100
Output: &quot;202&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: num = -7
Output: &quot;-10&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-107 &amp;lt;= num &amp;lt;= 107&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 숫자를 이진수처럼 칠진수로 만들어 문자열로 리턴하는 문제이다.&lt;/li&gt;
&lt;li&gt;10진수를 2진수로 변경하는 것처럼 몫과 나머지를 사용하여 문제를 풀 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문제 제한은 최악의 경우 10^7이지만 for loop를 하나만 사용하면 되니 O(N)시간안에 풀 수 있다.&lt;/li&gt;
&lt;li&gt;여기서 두가지 예외처리가 필요하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;0이 나올경우 간단하게 '0'을 리턴하고, 음수가 등장했을때 플래그 변수를 만들어 저장하여 나중에 음수로 처리한다.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이러한 수학계산을 하기위해서는 기준이되는 숫자로 계속해서 주어진 숫자를 나누면서 계산한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;0 ~ 6까지의 숫자를 사용할 수 있는데, 7은 0이라고 생각하면 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;처음 숫자를 7로 나눈 숫자의 나머지를 정답 끝에 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 몫을 다시 7로 나누어 반복하는 방법으로 문제를 푼다.&lt;/li&gt;
&lt;li&gt;쉽게 10진수를 2진수로 만드는 예로 설명해보면, 10을 2진수로 만들어보자.&lt;/li&gt;
&lt;li&gt;10은 2진수 1010 이다. 숫자위치는 순서대로 8421의 의미를 가지고 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;10을 2로 나누면 0으로 나누어 떨어지기 때문에 0을 맨 뒷자리에 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;10을 2로 나눈 5를 2로 나누면 1이 남기 때문에 1을 0 앞에 넣어 10을 만든다.&lt;/li&gt;
&lt;li&gt;5를 2로 나눈 2를 2로 나누면 0이 남아서 10 앞에 0을 넣어 010을 만든다.&lt;/li&gt;
&lt;li&gt;2를 2로 나눈 1을 2로 나누면 1이 남아서 010 앞에 1을 넣어 1010을 만든다.&lt;/li&gt;
&lt;li&gt;7진수도 위처럼 계산하여 정답을 만들면 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1673507402041&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def convertToBase7(self, num: int) -&amp;gt; str:
        # if num is zero, return '0'
        if num == 0: 
            return '0'
        # handle with negative number
        flag = 1
        ans = ''
        if num &amp;lt; 0:
            num *= -1
            flag = 0
        while num:
            # divide, modular
            divided = num // 7
            modular = num % 7
            ans += str(modular)
            num = divided
        # reverse string
        ans = ans[::-1]
        return str(ans) if flag else str('-') + str(ans)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>7진수</category>
      <category>math</category>
      <category>[LeetCode] 504. Base 7</category>
      <category>수학</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/266</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-504-Base-7#entry266comment</comments>
      <pubDate>Thu, 12 Jan 2023 16:19:33 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 326. Power of Three</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-326-Power-of-Three</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;326.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Power of Three&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if it is a power of three. Otherwise, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;false.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a power of three, if there exists an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;x&lt;span&gt;&amp;nbsp;&lt;/span&gt;such that&lt;span&gt;&amp;nbsp;&lt;/span&gt;n == 3x.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = 27
Output: true
Explanation: 27 = 33
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = 0
Output: false
Explanation: There is no x where 3x = 0.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = -1
Output: false
Explanation: There is no x where 3x = (-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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-231 &amp;lt;= n &amp;lt;= 231 - 1&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;b&gt;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Could you solve it without loops/recursion?&lt;/div&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 숫자 n이 3의 제곱승의 값과 같은지 구별하는 문제이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;n의 최대값은 2^31 - 1이고 최소값은 -2^31 이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문제 제한사항이 뜻하는 것은 n은 정수 범위를 넘지 않는 것이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하지만 음수들은 3의 제곱승이 될 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;다른 제한이 없기 때문에 숫자를 각각 직접 제곱승하면서 답을 확인하는 방법과 modular(나머지 계산)을 사용해서 풀 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loop&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우선 임시 값으로 1을 지정한다.&lt;/li&gt;
&lt;li&gt;그리고 while 반복문으로 임시 값이 n보다 클때까지 진행한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;while 문 조건인 step &amp;lt;= n은 종료조건을 반대로 생각하면 편리하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉 step &amp;lt;= n이 참일때는 while문은 종료가 되지않기 때문에 step &amp;gt; n일때 종료가 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;while의 다른 종료조건으로써 제곱승이 되는 step 값이 우리가 구하려는 N값과 같을때 True 를 리턴한다.&lt;/li&gt;
&lt;li&gt;그리고 while 문이 끝나고 False를 리턴한다.&lt;/li&gt;
&lt;li&gt;while문이 종료됬다는 것은 제곱승이 진행되면서 이미 목표 숫자를 넘어서 종료되었으며 제곱승이 될 수 없음을 의미한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Recursion(재귀함수)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;재귀함수를 알아보자.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;재귀함수는 자기 자신인 함수를 호출하여 메모리내에 스택을 쌓아나간다고 생각하는 것이 편하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;쉽게 이해할 수 있는방법은 함수를 방이라고 생각하고 방을 열고 들어갔을때 똑같은 새로운 방이 생겨서 그방으로 이동하는 개념이라고 볼 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 이전 방으로 나가는 문을 만들어주지 않으면 계속해서 똑같은 새방을 생성하여 지구 끝까지 들어간다고 생각하자.&lt;/li&gt;
&lt;li&gt;이전 방으로 나가는 문을 만드는 것을 종료조건(기저조건)을 만드는 것이며 이는 if문으로 생성하여 return을 해주면된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;rec 함수안에 rec 함수를 또 호출하는 것이 재귀함수의 모양이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;매개변수로는 제곱승을 할 n과 그 값이 주어진 n값과 같은지 확인하는 goal 이있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;우선 재귀함수를 생성할때 가장중요한 종료조건들과 어떻게 재귀함수 내의 코드들을 작성해야한다.&lt;/li&gt;
&lt;li&gt;종료조건을 생성하기 전에, 3의 제곱승들을 구하기 위해 재귀호출을 할때 3을 곱해서 넘겨준다.&lt;/li&gt;
&lt;li&gt;이 코드는 지금 현재의 방에서 1을 들고 들어왔다면 재귀함수 호출시 같은 새로운방에 1 * 3으로 3을 들고 들어간다.&lt;/li&gt;
&lt;li&gt;다음 과정도 마찬가지로 3을 들고 들어왔고 3 * 3 으로 3^2 인 9를 들고 들어간다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;매번 깊은 방으로 들어갈때마다 3으로 제곱승이 된 값을 가지고 들어간다.&lt;/li&gt;
&lt;li&gt;여기까지 만들고 실행시킨다면 스택 오버플로우(메모리 초과 에러)가 발생한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;재귀 호출을 멈출 수 있는 이전에 생성되었던 방으로 이동하는 출구 문(종료 조건)을 만들지 않았기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;재귀함수 호출이 끝나도록 종료조건들을 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;3을 곱하면서 다음 같은 새방으로 들어갈 것인데, 만일 제곱승이되어 들어간 숫자가 문제에서 주어진 목표보다 컸을때 False라는 값을 리턴하는 종료조건을 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 답을 구하기 위해 제곱승이 되어 들고 들어가는 매개변수가 목표와 같아지면 True를 리턴하는 조건문을 만든다.&lt;/li&gt;
&lt;li&gt;이렇게 되면 같은 새로운 방을 더 만들지 않고 이전 방으로 돌아간다.&lt;/li&gt;
&lt;li&gt;한번만 리턴이 된다고 하더라도 함수내의 코드가 모두 끝나게되면 방은 자동으로 파괴된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하지만 문제에서 True, False를 알고 싶기 때문에, 재귀 호출함과 동시에 리턴을 적어준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이 리턴의 역할은 최종 종료조건 까지 같은 새로운 방을 만들어 깊이 들어가다가 종료가 된다면 True, False 중에 리턴을 하면서 이전방으로 들어가고 재귀 호출은 더 이상 진행되지 않는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그렇다면 재귀호출이 끝난 시점에서 이전 방의 위치는 호출이 끝난 위치이다.&lt;/li&gt;
&lt;li&gt;물론 리턴을 하지 않아도 돌아와서 문을 닫는 순간 이방은 파괴가 되며, 파괴된 후 거쳐온 방들은 순차적으로 파괴된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하지만 종료시점에 리턴으로 전달받은 False, True는 return이 있기 때문에 파괴되기전 결과값을 가지고 전 방으로 탈출한다.&lt;/li&gt;
&lt;li&gt;그럼 결과적으로 목표 숫자보다 커졌을때까지 가서 숫자를 확인하고 리턴해서 이전 방들을 다시 거쳐 돌아오거나 목표 숫자까지 도달하여 True를 가지고 이전 방들을 다시 거쳐 돌아올 수 있게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Math&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;음수는 제곱승이 될수 없기 때문에 제외해야 한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;정수 이기 때문에 3의 제곱승 중 정수 최대값보다 작은 값을 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그 값은 3^19이며 n이 이 값을 나눴을때 0이라면 True가 되는 간단한 수학식이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉 3^19 % 3^X == 0이면 True 아니면 False가 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Loop&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673361277330&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isPowerOfThree(self, n: int) -&amp;gt; bool:
        # loop
        step = 1
        while step &amp;lt;= n:
            if step == n:
                return True
            step *= 3
        return False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Recursion&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673361304519&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isPowerOfThree(self, n: int) -&amp;gt; bool:
        # Recursion
        def rec(n, goal):
            if n &amp;gt; goal:
                return False
            if n == goal:
                return True
            return rec(n * 3, goal)
        return rec(1, n)&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;b&gt;Math&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1673361338523&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isPowerOfThree(self, n: int) -&amp;gt; bool:
        # math
        return n &amp;gt; 0 and 1162261467 % n == 0&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Loop</category>
      <category>math</category>
      <category>Modular</category>
      <category>[LeetCode] 326. Power of Three</category>
      <category>브루트포스</category>
      <category>재귀함수</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/265</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-326-Power-of-Three#entry265comment</comments>
      <pubDate>Tue, 10 Jan 2023 23:57:32 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 242. Valid Anagram</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-242-Valid-Anagram</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;242.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Valid Anagram&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given two strings&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;t, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;t&lt;span&gt;&amp;nbsp;&lt;/span&gt;is an anagram of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Anagram&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s = &quot;anagram&quot;, t = &quot;nagaram&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s = &quot;rat&quot;, t = &quot;car&quot;
Output: false
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length, t.length &amp;lt;= 5 * 104&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;t&lt;span&gt;&amp;nbsp;&lt;/span&gt;consist of lowercase English letters.&lt;/li&gt;
&lt;/ul&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;Follow up:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;What if the inputs contain Unicode characters? How would you adapt your solution to such a case?&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아나그램이란 단어의 알파벳을 재배치 했을때 같은 알파벳, 그리고 개수가 맞을때를 의미한다.&lt;/li&gt;
&lt;li&gt;두개의 문자열이 주어지고 문자열들이 아나그램이면 True를 리턴, 아니면 False를 리턴한다.&lt;/li&gt;
&lt;li&gt;결과적으로 알파벳의 순서는 상관없으며 각각 알파벳의 갯수들이 같은지를 알아보면 된다.&lt;/li&gt;
&lt;li&gt;문제 제한을 보면 5 * 10^4 인데 브루트 포스로 풀면 아슬아슬 하게 통과할 것 같다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sorting&lt;/b&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;/li&gt;
&lt;li&gt;하지만 정렬을 이용하면 아나그램들은 같은 문자열이 되어버린다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;알파벳 각각의 개수들이 같다면 정렬을 했을때 같은 모양이 나온다.&lt;/li&gt;
&lt;li&gt;파이썬의 정렬은 기본적으로 O(NlogN)의 시간복잡도가 걸린다.&lt;/li&gt;
&lt;li&gt;두가지 문자열을 정렬하고 리턴을 두개의 문자열 비교 결과로 정해준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash Table (Counter)&lt;/b&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;/li&gt;
&lt;li&gt;하지만 파이썬에는 Counter 라이브러리가 있는데 이는 자동으로 각 데이터의 개수를 자동으로 세어 딕셔너리에 저장해준다.&lt;/li&gt;
&lt;li&gt;Counter는 알파벳을 하나하나 확인하면서 알파벳을 키로 개수를 값으로 저장한다.&lt;/li&gt;
&lt;li&gt;만약 for 문으로 푼다면 아스키코드 혹은 알파벳을 키로 저장하여 하나씩 1을 더해준다.&lt;/li&gt;
&lt;li&gt;정렬 풀이방법 처럼 딕셔너리를 비교한 결과 값을 리턴 값으로 내보내면 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Sorting&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673359027539&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isAnagram(self, s: str, t: str) -&amp;gt; bool:
        # sorting
        s1 = sorted(list(s))
        s2 = sorted(list(t))
        return s1 == s2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Hash Table (Counter)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1673359051106&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isAnagram(self, s: str, t: str) -&amp;gt; bool:
        # hash table
        hash_table1 = Counter(s)
        hash_table2 = Counter(t)
        return hash_table1 == hash_table2&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Hash Table</category>
      <category>sorting</category>
      <category>[LeetCode] 242. Valid Anagram</category>
      <category>정렬</category>
      <category>해쉬테이블</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/264</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-242-Valid-Anagram#entry264comment</comments>
      <pubDate>Tue, 10 Jan 2023 23:06:52 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 20. Valid Parentheses</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-20-Valid-Parentheses</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;20.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Valid Parentheses&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;containing just the characters&lt;span&gt;&amp;nbsp;&lt;/span&gt;'(',&lt;span&gt;&amp;nbsp;&lt;/span&gt;')',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'{',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'}',&lt;span&gt;&amp;nbsp;&lt;/span&gt;'['&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;']', determine if the input string is valid.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An input string is valid if:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Open brackets must be closed by the same type of brackets.&lt;/li&gt;
&lt;li&gt;Open brackets must be closed in the correct order.&lt;/li&gt;
&lt;li&gt;Every close bracket has a corresponding open bracket of the same type.&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;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s = &quot;()&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s = &quot;()[]{}&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: s = &quot;(]&quot;
Output: false
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of parentheses only&lt;span&gt;&amp;nbsp;&lt;/span&gt;'()[]{}'.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&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;만일 주어진 문장의 괄호들이 올바른 짝들에 맞게 구성이 되어있다면 True 아니면 False로 답을 리턴해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 풀기전에 제한사항을 확인해보면 10^4 이기 때문에 브루투포스로 풀어도 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이 문제는 대표적인 Stack 문제이며, 모든 것을 조건으로 짜기에는 코드가 많이 복잡해진다.&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;하지만 'Open brackets must be closed in the correct order.' 문구를 보면 올바른 순서로 닫혀야된다.&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;다시 풀이방법으로 돌아가서, 괄호를 열고 닫는것을 확인할때 O(N)으로 풀려면 Stack을 사용해야한다.&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;for 문으로 문장을 한글자씩 탐색하면서 만약에 스택이 차있고 괄호가 닫은 괄호이면 닫힌 괄호들을 저장한 딕셔너리에 있는지 확인한다.&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;코드를 쉽게 짜기위해서 딕셔너리와, continue를 사용하였다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672992112913&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def isValid(self, s: str) -&amp;gt; bool:
        parentheses = {
            ')' : '(',
            ']' : '[',
            '}' : '{'
        }
        stack = []
        for ch in s:
            if stack and ch in parentheses:
                if stack[-1] == parentheses[ch]:
                    stack.pop()
                    continue
            stack.append(ch)
        if stack:
            return False
        return True&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>20. Valid Parentheses</category>
      <category>Stack</category>
      <category>스택</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/263</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-20-Valid-Parentheses#entry263comment</comments>
      <pubDate>Fri, 6 Jan 2023 17:16:59 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1056. Confusing Number</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1056-Confusing-Number</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1056.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Confusing Number&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;confusing number&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a number that when rotated&lt;span&gt;&amp;nbsp;&lt;/span&gt;180&lt;span&gt;&amp;nbsp;&lt;/span&gt;degrees becomes a different number with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;each digit valid&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We can rotate digits of a number by&lt;span&gt;&amp;nbsp;&lt;/span&gt;180&lt;span&gt;&amp;nbsp;&lt;/span&gt;degrees to form new digits.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;0,&lt;span&gt;&amp;nbsp;&lt;/span&gt;1,&lt;span&gt;&amp;nbsp;&lt;/span&gt;6,&lt;span&gt;&amp;nbsp;&lt;/span&gt;8, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;9&lt;span&gt;&amp;nbsp;&lt;/span&gt;are rotated&lt;span&gt;&amp;nbsp;&lt;/span&gt;180&lt;span&gt;&amp;nbsp;&lt;/span&gt;degrees, they become&lt;span&gt;&amp;nbsp;&lt;/span&gt;0,&lt;span&gt;&amp;nbsp;&lt;/span&gt;1,&lt;span&gt;&amp;nbsp;&lt;/span&gt;9,&lt;span&gt;&amp;nbsp;&lt;/span&gt;8, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;6&lt;span&gt;&amp;nbsp;&lt;/span&gt;respectively.&lt;/li&gt;
&lt;li&gt;When&lt;span&gt;&amp;nbsp;&lt;/span&gt;2,&lt;span&gt;&amp;nbsp;&lt;/span&gt;3,&lt;span&gt;&amp;nbsp;&lt;/span&gt;4,&lt;span&gt;&amp;nbsp;&lt;/span&gt;5, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;7&lt;span&gt;&amp;nbsp;&lt;/span&gt;are rotated&lt;span&gt;&amp;nbsp;&lt;/span&gt;180&lt;span&gt;&amp;nbsp;&lt;/span&gt;degrees, they become&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;invalid&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Note that after rotating a number, we can ignore leading zeros.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;For example, after rotating&lt;span&gt;&amp;nbsp;&lt;/span&gt;8000, we have&lt;span&gt;&amp;nbsp;&lt;/span&gt;0008&lt;span&gt;&amp;nbsp;&lt;/span&gt;which is considered as just&lt;span&gt;&amp;nbsp;&lt;/span&gt;8.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if it is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;confusing number&lt;/b&gt;, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qNxyn/btrU38CF6Qf/QGIDy0ImMMmNZk1g0N2L2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qNxyn/btrU38CF6Qf/QGIDy0ImMMmNZk1g0N2L2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qNxyn/btrU38CF6Qf/QGIDy0ImMMmNZk1g0N2L2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqNxyn%2FbtrU38CF6Qf%2FQGIDy0ImMMmNZk1g0N2L2k%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;281&quot; height=&quot;121&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = 6
Output: true
Explanation: We get 9 after rotating 6, 9 is a valid number, and 9 != 6.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmKCeV/btrU292JyKG/45ghtlUzobDQrkuUJa2K50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmKCeV/btrU292JyKG/45ghtlUzobDQrkuUJa2K50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmKCeV/btrU292JyKG/45ghtlUzobDQrkuUJa2K50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmKCeV%2FbtrU292JyKG%2F45ghtlUzobDQrkuUJa2K50%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;312&quot; height=&quot;121&quot; data-origin-width=&quot;312&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = 89
Output: true
Explanation: We get 68 after rotating 89, 68 is a valid number and 68 != 89.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu9IHX/btrVaTxJzAh/OLHSKx9TifTGTuV8BpzrIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu9IHX/btrVaTxJzAh/OLHSKx9TifTGTuV8BpzrIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu9IHX/btrVaTxJzAh/OLHSKx9TifTGTuV8BpzrIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu9IHX%2FbtrVaTxJzAh%2FOLHSKx9TifTGTuV8BpzrIk%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;301&quot; height=&quot;121&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;Input: n = 11
Output: false
Explanation: We get 11 after rotating 11, 11 is a valid number but the value remains the same, thus 11 is not a confusing number
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;0 &amp;lt;= n &amp;lt;= 109&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정수 숫자가 주어지고 이 숫자들을 180도 뒤집어야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;0, 1, 6, 8, 9 들은 뒤집으면 유효한 숫자로 바꿀수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 다른 2, 3, 4, 5, 7은 유효하지 않은 숫자로 바뀐다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;숫자를 180도 뒤집었을때 유효한 숫자이면서 주어진 숫자랑 다르면 True이고 아니면 False를 리턴한다.&lt;/p&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을 변경하면서 while을 진행하기 때문에 임시로 정답을 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 정답 숫자에 10을 곱한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주어진 숫자 n을 10으로 나머지를 구하고 그 숫자가 딕셔너리에 숫자가 있다면 정답 숫자에 더해준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 n을 10으로 나누고 이 과정을 반복하여 n이 0이 될까지 반복한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산한 값과 임시 정답을 비교하여 반환한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672647632732&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def confusingNumber(self, n: int) -&amp;gt; bool:
        rotated_dict = {
            0:0,
            1:1,
            6:9,
            8:8,
            9:6
        }
        ans = 0
        temp_n = n
        while n:
            temp = n % 10
            if temp in rotated_dict:
                ans *= 10
                ans += rotated_dict[temp]
            else:
                return False
            n //= 10
        return ans != temp_n&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;/div&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>[LeetCode] 1056. Confusing Number</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/262</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1056-Confusing-Number#entry262comment</comments>
      <pubDate>Mon, 2 Jan 2023 17:20:54 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 412. Fizz Buzz</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-412-Fizz-Buzz</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;412.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Fizz Buzz&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;a string array&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;b&gt;1-indexed&lt;/b&gt;) where:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;answer[i] == &quot;FizzBuzz&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;is divisible by&lt;span&gt;&amp;nbsp;&lt;/span&gt;3&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;5.&lt;/li&gt;
&lt;li&gt;answer[i] == &quot;Fizz&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;is divisible by&lt;span&gt;&amp;nbsp;&lt;/span&gt;3.&lt;/li&gt;
&lt;li&gt;answer[i] == &quot;Buzz&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;if&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;is divisible by&lt;span&gt;&amp;nbsp;&lt;/span&gt;5.&lt;/li&gt;
&lt;li&gt;answer[i] == i&lt;span&gt;&amp;nbsp;&lt;/span&gt;(as a string) if none of the above conditions are true.&lt;/li&gt;
&lt;/ul&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: n = 3
Output: [&quot;1&quot;,&quot;2&quot;,&quot;Fizz&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: n = 5
Output: [&quot;1&quot;,&quot;2&quot;,&quot;Fizz&quot;,&quot;4&quot;,&quot;Buzz&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: n = 15
Output: [&quot;1&quot;,&quot;2&quot;,&quot;Fizz&quot;,&quot;4&quot;,&quot;Buzz&quot;,&quot;Fizz&quot;,&quot;7&quot;,&quot;8&quot;,&quot;Fizz&quot;,&quot;Buzz&quot;,&quot;11&quot;,&quot;Fizz&quot;,&quot;13&quot;,&quot;14&quot;,&quot;FizzBuzz&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 104&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n이 주어진고 1부터 n까지 숫자를 판별해 정답을 저장하는 문제이다.&lt;/li&gt;
&lt;li&gt;해당 숫자가 3과 5의 공약수라면 'FizzBuzz' 이어야한다.&lt;/li&gt;
&lt;li&gt;단지 3의 공약수라면 'Fizz', 5의 공약수라면 'Buzz'를 지정해야한다.&lt;/li&gt;
&lt;li&gt;나머지는 숫자를 문자로 변경하여 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제한사항은 10^4이기 때문에 브루투 포스로 풀어도된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이러한 문제들은 시뮬레이션 문제이며, 주어진 조건들로 어떻게 논리적으로 코드를 짤 수 있는지를 증명하는 문제이다.&lt;/li&gt;
&lt;li&gt;물론 공약수 문제이기 때문에 수학공식을 사용하며 문제를 빠르게 풀수도 있지만 정석으로 풀면&lt;/li&gt;
&lt;li&gt;for문을 사용하여 1 부터 n 까지 탐색한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;숫자를 나눠서 각각 숫자들의 공약수에 해당하는 정답을 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672379692027&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def fizzBuzz(self, n: int) -&amp;gt; List[str]:
        answer = []
        for i in range(1, n+1):
            if i % 3 == 0 and i % 5 == 0:
                answer.append('FizzBuzz')
            elif i % 3 == 0:
                answer.append('Fizz')
            elif i % 5 == 0:
                answer.append('Buzz')
            else:
                answer.append(str(i))
        return answer&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Fizz Buzz</category>
      <category>simulation</category>
      <category>[LeetCode] 412. Fizz Buzz</category>
      <category>시뮬레이션</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/261</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-412-Fizz-Buzz#entry261comment</comments>
      <pubDate>Fri, 30 Dec 2022 14:55:16 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 290. Word Pattern</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-290-Word-Pattern</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;290.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Word Pattern&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a&lt;span&gt;&amp;nbsp;&lt;/span&gt;pattern&lt;span&gt;&amp;nbsp;&lt;/span&gt;and a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s, find if&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&amp;nbsp;follows the same pattern.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Here&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;follow&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;means a full match, such that there is a bijection between a letter in&lt;span&gt;&amp;nbsp;&lt;/span&gt;pattern&lt;span&gt;&amp;nbsp;&lt;/span&gt;and a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;non-empty&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;word in&lt;span&gt;&amp;nbsp;&lt;/span&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;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: pattern = &quot;abba&quot;, s = &quot;dog cat cat dog&quot;
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: pattern = &quot;abba&quot;, s = &quot;dog cat cat fish&quot;
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;groovy&quot;&gt;&lt;code&gt;Input: pattern = &quot;aaaa&quot;, s = &quot;dog cat cat dog&quot;
Output: false
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= pattern.length &amp;lt;= 300&lt;/li&gt;
&lt;li&gt;pattern&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains only lower-case English letters.&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 3000&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains only lowercase English letters and spaces&lt;span&gt;&amp;nbsp;&lt;/span&gt;' '.&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;does not contain&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;any leading or trailing spaces.&lt;/li&gt;
&lt;li&gt;All the words in&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;are separated by a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;single space&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pattern과 s문자열이 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;패턴은 알파벳이며 s문자열은 빈공간을 포함한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제한 사항을 보면 문자열들의 길이는 작기 때문에 어떻게 풀어도 상관없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하지만 패턴과 s문자열에 들어있는 단어를 매칭시켜야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이때 데이터들을 쌍으로 매칭하기 위해서는 해쉬 테이블을 사용할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;해쉬 테이블은 키와 벨류로 데이터를 묶어 저장할 수 있기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;각각 패턴에 맞는 단어들을 저장하기위해 패턴 딕셔너리를 선언한다.&lt;/li&gt;
&lt;li&gt;그리고 s문자열은 어떠한 글자도 나올 수 있기 때문에 문자열 딕셔너리도 따로 선언해줘야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 패턴이 'aaa'이고 s문자열이 'a a a' 이런 테스트 케이스가 주어진다면 어떤것이 패턴인지 모를 수 있기 때문에 해쉬 테이블을 두개 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;s는 띄어쓰기 별로 단어들을 쪼개야해서 split함수를 쓴다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;함수내에 아무것도 적지 않으면 띄어쓰기로 분리된다.&lt;/li&gt;
&lt;li&gt;즉, pattern과 s문자열의 데이터를 각각 키와 벨류로 짝을 만들어 딕셔너리에 저장한다.&lt;/li&gt;
&lt;li&gt;for문으로 하나씩 탐색하면서 각각의 데이터들을 묶어 저장한다.&lt;/li&gt;
&lt;li&gt;처음 단어와 패턴이 만날때 저장된것을 그 단어에 패턴이라고 생각하면 다음에 나오는 단어와 패턴이 이미 저장된 키, 벨류와 다르다면 오답니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;탐색 시작과 동시에 패턴을 고정하며 하나씩 틀린게 있는지 찾아나가는 것이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672379298268&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def wordPattern(self, pattern: str, s: str) -&amp;gt; bool:
        hash_table_p = dict()
        hash_table_s = dict()
        s = s.split()
        if len(s) != len(pattern): return False
        for i in range(len(pattern)):
            p = pattern[i]
            w = s[i]
            if p in hash_table_p:
                if hash_table_p[p] != w:
                    return False
            if  w in hash_table_s:
                if hash_table_s[w] != p:
                    return False
            hash_table_s[w] = p
            hash_table_p[p] = w
        return True&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Hash Table</category>
      <category>Word Pattern</category>
      <category>[LeetCode] 290. Word Pattern</category>
      <category>해쉬 테이블</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/260</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-290-Word-Pattern#entry260comment</comments>
      <pubDate>Fri, 30 Dec 2022 14:48:40 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 217. Contains Duplicate</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-217-Contains-Duplicate</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;217.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Contains Duplicate&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if any value appears&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;at least twice&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the array, and return&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;if every element is distinct.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [1,2,3,1]
Output: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [1,2,3,4]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [1,1,1,3,3,4,3,2,4,2]
Output: 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= nums[i] &amp;lt;= 109&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 숫자 배열에서 숫자들이 중복되는지 확인하는 문제이다.&lt;/li&gt;
&lt;li&gt;제한 사항을 보면 배열의 최대 길이가 10^5이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;시간복잡도 O(N)으로 풀 수밖에 없는 조건이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;숫자를 하나씩 보면서 중복이 각각 존재하는지 보려면 적어도 O(N^2)의 시간복잡도가 걸린다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그래서 O(1) 시간에 데이터를 저장하고 확인해볼 수 있는 Hash Table 접근 방법을 사용한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;미리 숫자를 set 에 저장하고 하나씩 돌아가면서 이미 있는 숫자이면 True를 리턴하는 방법이다.&lt;/li&gt;
&lt;li&gt;set은 딕셔너리와는 달리 어떤 데이터를 중복되지 않게 저장해놓는 자료구조이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1, 1, 2, 2를 set에 넣으면 1, 2 만 남는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;set은 주로 중복되지 않는 데이터를 저장하여 메모리사용을 줄여 사용하는데 쓰며, 데이터를 쓰고 읽는 속도 O(1)로 빠르다.&lt;/li&gt;
&lt;li&gt;for 문을 돌다가 리턴을 하는 이유는 중복이 이미 존재하면 나머지 숫자를 모두 확인할 필요가 없기 때문이다.&lt;/li&gt;
&lt;li&gt;for 문이 끝나고 false를 리턴하는 이유는 이미 배열의 숫자들을 다 확인했는데 중복이 없다는 뜻이기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672377462412&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def containsDuplicate(self, nums: List[int]) -&amp;gt; bool:
        hash_table = set()
        for num in nums:
            if num in hash_table:
                return True
            hash_table.add(num)
        return False&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Contains Duplicate</category>
      <category>Hash Table</category>
      <category>[LeetCode] 217. Contains Duplicate</category>
      <category>해쉬 테이블</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/259</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-217-Contains-Duplicate#entry259comment</comments>
      <pubDate>Fri, 30 Dec 2022 14:18:04 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 344. Reverse String</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-344-Reverse-String</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;344.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Reverse String&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Write a function that reverses a string. The input string is given as an array of characters&lt;span&gt;&amp;nbsp;&lt;/span&gt;s.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You must do this by modifying the input array&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/In-place_algorithm&quot;&gt;in-place&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(1)&lt;span&gt;&amp;nbsp;&lt;/span&gt;extra memory.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: s = [&quot;h&quot;,&quot;e&quot;,&quot;l&quot;,&quot;l&quot;,&quot;o&quot;]
Output: [&quot;o&quot;,&quot;l&quot;,&quot;l&quot;,&quot;e&quot;,&quot;h&quot;]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;smalltalk&quot;&gt;&lt;code&gt;Input: s = [&quot;H&quot;,&quot;a&quot;,&quot;n&quot;,&quot;n&quot;,&quot;a&quot;,&quot;h&quot;]
Output: [&quot;h&quot;,&quot;a&quot;,&quot;n&quot;,&quot;n&quot;,&quot;a&quot;,&quot;H&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;s[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/ASCII#Printable_characters&quot;&gt;printable ascii character&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&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;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 문자열 리스트를 반대로 뒤집는 문제이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제한사항을 보면 문자열의 최대길이가 10^5이기 때문에 최대 O(N) 풀이법으로 문제를 풀어야한다.&lt;/li&gt;
&lt;li&gt;배열안의 값들을 각각 접근하기 쉬운 방법은 투 포인터이다.&lt;/li&gt;
&lt;li&gt;포인터들을 두개 생성한다, 하나는 맨앞이며 하나는 맨뒤를 가르키는 인덱스로 초기화한다.&lt;/li&gt;
&lt;li&gt;물론 브루트 포스로 각각의 글자들을 옮기는 방법도 있겠으나, 문제 내에서 O(1) Constant(상수) 메모리 복잡도 내에 풀어야한다.&lt;/li&gt;
&lt;li&gt;그래서 두개씩 앞뒤 글자를 교체 Swap 을 해준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;while 문에서는 두개의 포인터가 같거나 시작 포인터와 끝 포인터의 값의 크기가 뒤바뀐다면 종료하도록 만들었다.&lt;/li&gt;
&lt;li&gt;while 문의 조건을 작성할 때에는 언제까지 True 조건이어야하는지 신경써서 참의 조건을 적어주면 된다.&lt;/li&gt;
&lt;li&gt;만일 조건을 생성하기 어렵다면, 배열의 포인터들을 직접 손으로 그려서 어떤 부분에서, 조건에서 끝내야하는지 확인해보자.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672376805356&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def reverseString(self, s: List[str]) -&amp;gt; None:
        &quot;&quot;&quot;
        Do not return anything, modify s in-place instead.
        &quot;&quot;&quot;
        pointer1, pointer2 = 0, len(s) - 1
        while pointer1 &amp;lt; pointer2:
            s[pointer1], s[pointer2] = s[pointer2], s[pointer1]
            pointer1 += 1
            pointer2 -= 1&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>Reverse String</category>
      <category>two pointer</category>
      <category>[LeetCode] 344. Reverse String</category>
      <category>투 포인터</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/258</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-344-Reverse-String#entry258comment</comments>
      <pubDate>Fri, 30 Dec 2022 14:07:28 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 88. Merge Sorted Array</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-88-Merge-Sorted-Array</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;88.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Merge Sorted Array&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given two integer arrays&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums2, sorted in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;non-decreasing order&lt;/b&gt;, and two integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;m&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;n, representing the number of elements in&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums2&lt;span&gt;&amp;nbsp;&lt;/span&gt;respectively.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Merge&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums2&lt;span&gt;&amp;nbsp;&lt;/span&gt;into a single array sorted in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;non-decreasing order&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The final sorted array should not be returned by the function, but instead be&lt;span&gt;&amp;nbsp;&lt;/span&gt;stored inside the array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums1. To accommodate this,&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums1&lt;span&gt;&amp;nbsp;&lt;/span&gt;has a length of&lt;span&gt;&amp;nbsp;&lt;/span&gt;m + n, where the first&lt;span&gt;&amp;nbsp;&lt;/span&gt;m&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements denote the elements that should be merged, and the last&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements are set to&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;and should be ignored.&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums2&lt;span&gt;&amp;nbsp;&lt;/span&gt;has a length of&lt;span&gt;&amp;nbsp;&lt;/span&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;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;inform7&quot;&gt;&lt;code&gt;Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
Explanation: The arrays we are merging are [1] and [].
The result of the merge is [1].
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]
Explanation: The arrays we are merging are [] and [1].
The result of the merge is [1].
Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;nums1.length == m + n&lt;/li&gt;
&lt;li&gt;nums2.length == n&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= m, n &amp;lt;= 200&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= m + n &amp;lt;= 200&lt;/li&gt;
&lt;li&gt;-109 &amp;lt;= nums1[i], nums2[j] &amp;lt;= 109&lt;/li&gt;
&lt;/ul&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;Follow up:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;Can you come up with an algorithm that runs in&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(m + n)&lt;span&gt;&amp;nbsp;&lt;/span&gt;time?&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이미 오름차순으로 정렬되어있는 두 배열을 합쳐야한다.&lt;/li&gt;
&lt;li&gt;합친 배열의 결과도 오름차순으로 정렬이 되어 있어야한다.&lt;/li&gt;
&lt;li&gt;첫번째 배열을 답으로 만들어야한다.&lt;/li&gt;
&lt;li&gt;제한 사항을 보면 두 배열의 길이가 최대 200개 이기 때문에 브루트 포스로 풀어도된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;투포인터로 문제를 푸는 방법은 다음과 같다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;투포인터가 의미하는 것은 데이터를 가르키는 포인터 두개를 사용하여 문제를 푸는 것이다.&lt;/li&gt;
&lt;li&gt;문제에서 nums1 배열의 크기는 nums1 + nums2 배열의 길이와 같으며 숫자가 채워질 빈공간은 0으로 표기되어있다.&lt;/li&gt;
&lt;li&gt;nums1 배열에 중복되는 동작없이 숫자를 넣기 위해서는 맨 뒤의 인덱스부터 시작해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그 이유는 이미 숫자가 정렬되어 있기 때문에 비어있는 공간부터 채워나갈 때 가장 효율적으로 숫자들을 합칠 수 있다.&lt;/li&gt;
&lt;li&gt;각각의 배열에서 마지막 숫자는 각각의 배열들의 가장 큰 숫자이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그 숫자들을 가르키는 포인터 두개를 생성하여 비교하며 빈공간이 있을 수 있는 맨 마지막 부터 쌓아나간다.&lt;/li&gt;
&lt;li&gt;저장할 자리는 for 문으로 뒤에서 부터 시작하고 포인터 두개는 for 문 한번에 한개씩 움직인다.&lt;/li&gt;
&lt;li&gt;즉 O(N) 시간으로써 for 문은 한번 nums1 배열을 뒤에서부터 탐색하고, 포인터 두개가 각각 숫자들을 선택하여 비교한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1672376196219&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def merge(self, nums1: List[int], m: int, nums2: List[int], n: int) -&amp;gt; None:
        &quot;&quot;&quot;
        Do not return anything, modify nums1 in-place instead.
        &quot;&quot;&quot;
        pointer1, pointer2 = m - 1, n - 1
        for i in range(len(nums1)-1, -1, -1):
            if pointer1 &amp;gt;= 0 and pointer2 &amp;gt;= 0:
                if nums1[pointer1] &amp;gt;= nums2[pointer2]:
                    nums1[i] = nums1[pointer1]
                    pointer1 -= 1
                else:
                    nums1[i] = nums2[pointer2]
                    pointer2 -= 1
            elif pointer1 &amp;gt;= 0:
                nums1[i] = nums1[pointer1]
                pointer1 -= 1
            elif pointer2 &amp;gt;= 0:
                nums1[i] = nums2[pointer2]
                pointer2 -= 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;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode Solutions</category>
      <category>two pointer</category>
      <category>[LeetCode] 88. Merge Sorted Array</category>
      <category>투포인터</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/257</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-88-Merge-Sorted-Array#entry257comment</comments>
      <pubDate>Fri, 30 Dec 2022 13:56:57 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 834. Sum of Distances in Tree</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-834-Sum-of-Distances-in-Tree</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;834.&lt;/span&gt;&lt;span style=&quot;color: #000000; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Sum of Distances in Tree&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Hard&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is an undirected connected tree with&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;nodes labeled from&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given the integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;and the array&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges[i] = [ai, bi]&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicates that there is an edge between nodes&lt;span&gt;&amp;nbsp;&lt;/span&gt;ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;bi&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the tree.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Return an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer&lt;span&gt;&amp;nbsp;&lt;/span&gt;of length&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the sum of the distances between the&lt;span&gt;&amp;nbsp;&lt;/span&gt;ith&lt;span&gt;&amp;nbsp;&lt;/span&gt;node in the tree and all other nodes.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zFoju/btrUnIKHtAE/xSF5lZyMyyeJq47x4bc111/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zFoju/btrUnIKHtAE/xSF5lZyMyyeJq47x4bc111/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zFoju/btrUnIKHtAE/xSF5lZyMyyeJq47x4bc111/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzFoju%2FbtrUnIKHtAE%2FxSF5lZyMyyeJq47x4bc111%2Fimg.jpg&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;304&quot; height=&quot;224&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;224&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 6, edges = [[0,1],[0,2],[2,3],[2,4],[2,5]]
Output: [8,12,6,10,10,10]
Explanation: The tree is shown above.
We can see that dist(0,1) + dist(0,2) + dist(0,3) + dist(0,4) + dist(0,5)
equals 1 + 1 + 2 + 2 + 2 = 8.
Hence, answer[0] = 8, and so on.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;64&quot; data-origin-height=&quot;65&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7OTFe/btrUlBfeNos/2b3uil6RJq8ZzYdKgAKOy0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7OTFe/btrUlBfeNos/2b3uil6RJq8ZzYdKgAKOy0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7OTFe/btrUlBfeNos/2b3uil6RJq8ZzYdKgAKOy0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7OTFe%2FbtrUlBfeNos%2F2b3uil6RJq8ZzYdKgAKOy0%2Fimg.jpg&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;64&quot; height=&quot;65&quot; data-origin-width=&quot;64&quot; data-origin-height=&quot;65&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: n = 1, edges = []
Output: [0]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;144&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJgUjf/btrUnf9Kfs3/txHjuKHyHc3gos2x1SfnBK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJgUjf/btrUnf9Kfs3/txHjuKHyHc3gos2x1SfnBK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJgUjf/btrUnf9Kfs3/txHjuKHyHc3gos2x1SfnBK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJgUjf%2FbtrUnf9Kfs3%2FtxHjuKHyHc3gos2x1SfnBK%2Fimg.jpg&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;144&quot; height=&quot;145&quot; data-origin-width=&quot;144&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 2, edges = [[1,0]]
Output: [1,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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 3 * 104&lt;/li&gt;
&lt;li&gt;edges.length == n - 1&lt;/li&gt;
&lt;li&gt;edges[i].length == 2&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= ai, bi &amp;lt; n&lt;/li&gt;
&lt;li&gt;ai != bi&lt;/li&gt;
&lt;li&gt;The given input represents a valid tree.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 트리에서 각 노드에 도착하는 거리들의 총합을 구해야한다.&lt;/li&gt;
&lt;li&gt;모든 노드를 시작점으로 하고 각각의 노드에 도착하는 거리를 더한 값을 정답배열에 넣고 리턴해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;모든 노드를 탐색해야하기 때문에 완전탐색 접근을 생각할 수 있으나, 문제 제한사항에서는 최악의 경우 3 * 10^4 개의 노드가 존재한다.&lt;/li&gt;
&lt;li&gt;그렇기 때문에 완전탐색으로 모든 노드를 탐색할때 O(N)이 걸리고, 각각의 노드를 모두 시작점으로 한번씩 탐색해야하기 때문에 O(N^2) 시간복잡도로 시간초과가 난다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;부분 트리로 거리의 총합을 계산하는 방법을 사용하여 O(N)으로 시간복잡도를 줄일 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만약 a와 b트리가 한선으로 연결되어 있고 두개의 거리 총합을 구하는 식은 다음과 같다.&lt;/li&gt;
&lt;li&gt;a와 b가 연결된 거리 총합 = a의 거리 총합 + b의 거리 총합 + b의 총 노드 개수&amp;nbsp;&lt;/li&gt;
&lt;li&gt;a와 b노드를 연결하는 간선이 한개 존재하기 때문에 a에서 b 각각의 노드에 도달하려면 1 씩 더해줘야한다.&lt;/li&gt;
&lt;li&gt;예를 들어 a에는 0노드가 있고 b에는 1노드와 2노드, 3노드가 일렬로 연결되어 있다고 가정해보자.&lt;/li&gt;
&lt;li&gt;0노드의 총거리는 0이며, b노드에는 1에서 2로 가는 거리 1과 1에서 3으로 가는 거리 2가 있어 3이된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;a의 노드 0에서 1까지 가는 길이는 개수 0개에서 1을 더해 1이고, 0에서 2까지 가려면 b노드에서 계산된 2에 간선 1을 추가하여 2가되고, 0에서 3까지 가는 거리는 1에서 3으로 가는 거리 2에 1을 더해 3이 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;결과적으로 0이 최상위 트리라고 했을때, b트리의 총 거리수 3 + b트리의 총 노드 개수 3을 계산하여 6이된다.&lt;/li&gt;
&lt;li&gt;다시말해 a - b 로 연결된 트리의 정답은 a 정답 + (b의 1노드에서 2노드 + 1 + b의 1노드에서 3노드 + 1 + a에서 b 시작노드로 연결되는 간선 1) 이된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이를위해, dfs 후위 탐색을 사용하여 각각의 노드들이 가진 노드의 개수를 cnt 배열에 더해준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 위식을 사용하여 정답에는 node위치와 child 위치의 정답을 구하기 위해 node의 정답 + child 정답 + child 노드의 총 개수를 더한다.&lt;/li&gt;
&lt;li&gt;위식과 똑같이 a(node 트리)정답 + b(child 트리)정답 + b(child 트리) 노드 총 개수로 탐색을 완료한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;dfs를 끝내면 자식 노드들을 가지고 있는 노드들의 정답들과 자식들의 개수가 저장된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;나머지 노드들의 정답을 채우기 위해서는 위의 식을 응용하여 dfs 선위 탐색을 진행한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1. a - b 의 정답 = a 정답 + b 정답 + b 노드의 총 개수&lt;/li&gt;
&lt;li&gt;2. b - a 의 정답 = b 정답 + a 정답 + a 노드의 총 개수&lt;/li&gt;
&lt;li&gt;이 두식을 합쳐 사용하는데, 현재 자식들이 존재하는 노드들의 정답은 저장되어 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1번 식은 정답이 저장되어있는, 즉 자식들이 존재하는 노드이며 2번 식은 정답이 없는 노드들이다.&lt;/li&gt;
&lt;li&gt;이 b노드의 값을 구하기 위해&amp;nbsp; 2번 식에서 1번 식을 빼서 사용한다.&lt;/li&gt;
&lt;li&gt;계산을 하게된 결과는 다음과 같다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;b - a 의 정답 - a - b 의 정답 = a 노드의 총 개수 - b 노드의 총 개수&lt;/li&gt;
&lt;li&gt;b - a 의 정답 = a - b 의 정답 + a 노드의 총 개수 - b 노드의 총 개수&lt;/li&gt;
&lt;li&gt;a - b 의 정답과 b 노드의 총 개수는 미리 구해놓았기 때문에 바로 사용할 수 있다.&lt;/li&gt;
&lt;li&gt;a 노드의 총 개수는 전체 노드 개수에서 b 노드의 총 개수를 빼면 쉽게 구할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉, b - a 의 정답 = a - b 의 정답 - b 노드의 총 개수 + a - b의 총 노드 개수 - b 노드의 총 개수&lt;/li&gt;
&lt;li&gt;이식을 이용하여 dfs를 한번더 진행하면서 위식을 사용하여 정답들을 저장한다.&lt;/li&gt;
&lt;li&gt;선위 탐색으로 dfs를 진행하는 이유는 순차적으로 먼저 계산을 해야 다음 정답을 참고할때 사용할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;자식들이 있는 노드들은 첫번째 dfs에서 정답을 구했고, 두번째 dfs 에서 위 공식을 사용하여 트리 모양을 변경시켜 답을 구한다고 생각하면 이해하기 쉽다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;각각의 노드들을 2번 완전 탐색 하기 때문에 O(N + N)이며 최종적으로는 O(N) 의 시간이 걸린다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1671705337306&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def sumOfDistancesInTree(self, n: int, edges: List[List[int]]) -&amp;gt; List[int]:
        g = defaultdict(set)
        for a, b in edges:
            g[a].add(b)
            g[b].add(a)
        
        cnt = [1] * n
        ans = [0] * n

        def dfs(node, parent):
            for child in g[node]:
                if child != parent:
                    dfs(child, node)
                    cnt[node] += cnt[child]
                    ans[node] += ans[child] + cnt[child]
        
        def dfs2(node, parent):
            for child in g[node]:
                if child != parent:
                    ans[child] = ans[node] - cnt[child] + n - cnt[child]
                    dfs2(child, node)
        dfs(0, None)
        dfs2(0, None)
        return ans&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>834. Sum of Distances in Tree</category>
      <category>DFS</category>
      <category>[LeetCode] 834. Sum of Distances in Tree</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/256</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-834-Sum-of-Distances-in-Tree#entry256comment</comments>
      <pubDate>Thu, 22 Dec 2022 20:00:48 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 886. Possible Bipartition</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-886-Possible-Bipartition</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;886.&amp;nbsp;Possible Bipartition&lt;/span&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Medium&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We want to split a group of&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;people (labeled from&lt;span&gt;&amp;nbsp;&lt;/span&gt;1&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;n) into two groups of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;any size&lt;/b&gt;. Each person may dislike some other people, and they should not go into the same group.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given the integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;and the array&lt;span&gt;&amp;nbsp;&lt;/span&gt;dislikes&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;dislikes[i] = [ai, bi]&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicates that the person labeled&lt;span&gt;&amp;nbsp;&lt;/span&gt;ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;does not like the person labeled&lt;span&gt;&amp;nbsp;&lt;/span&gt;bi, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if it is possible to split everyone into two groups in this way.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 4, dislikes = [[1,2],[1,3],[2,4]]
Output: true
Explanation: group1 [1,4] and group2 [2,3].
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 3, dislikes = [[1,2],[1,3],[2,3]]
Output: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 5, dislikes = [[1,2],[2,3],[3,4],[4,5],[1,5]]
Output: false
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 2000&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= dislikes.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;dislikes[i].length == 2&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= dislikes[i][j] &amp;lt;= n&lt;/li&gt;
&lt;li&gt;ai &amp;lt; bi&lt;/li&gt;
&lt;li&gt;All the pairs of&lt;span&gt;&amp;nbsp;&lt;/span&gt;dislikes&lt;span&gt;&amp;nbsp;&lt;/span&gt;are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;unique&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사람이 N개 있으며, 각각 사람들이 싫어하는 짝의 번호 두개로 이루어진 2차원 배열이 주어진다.&lt;/li&gt;
&lt;li&gt;싫어하는 사람들끼리는 그룹으로 묶을 수 없다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;사람들을 두 그룹으로 나눌 수 있는지를 구해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;모든 사람들이 두 그룹으로 나뉘었을때 그 그룹에는 싫어하는 사람이 생기면 안된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제한 사항은 N^4 이기 때문에 완전탐색으로 문제를 접근할 수 있으며, 간선으로써 dislike 배열을 사용하여 그룹을 만들기 때문에 유니온 파인드로 접근할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DFS&lt;/b&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;/li&gt;
&lt;li&gt;싫어하는 사람들을 나타내는 dislikes 배열은 간선을 나타내고 있기 때문에 현재 사람(노드)에서 싫어하는 사람을 연결했을때 그 사람들은 모두 현재 사람을 싫어한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;현재 사람에서 싫어하는 사람 다음으로 연결된 노드가 있고 이 노드가 현재 사람과 연결되지 않다면, 그 노드는 앞서 언급한 현재 사람을 싫어하지 않음을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉 연결될 간선들을 한번 연결해주고 0과 1을 사용하여 구분할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;싫어하는 사람들을 저장한 dislikes를 모두 양방향 간선들로써 인접행렬을 생성한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 col 배열을 생성하여 각 노드를 구분할 배열을 만들고 -1로 초기화한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;초기화를 통해 노드를 탐색한 것에 대한 중복을 방지할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1부터 n까지 탐색하면서 만약 탐색 했던 노드가 아니면 현재 노드 번호와 구분할 매개변수를 넘겨 dfs 재귀함수를 호출한다.&lt;/li&gt;
&lt;li&gt;첫 시작노드는 0의 구분 값을 col에 넣게 되고, 현재 노드에 연결된 노드들을 탐색한다.&lt;/li&gt;
&lt;li&gt;탐색시 현재 노드와 다음으로 이동할 노드의 구분 값이 같다면 False를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 구분 값이 설정되지 않은 새 노드라면 dfs를 호출하는데, 이때 1 - 구분 값 매개변수를 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;1 - 구분 값 매개변수는 다음 재귀호출시 0에서 1로 1에서 0으로 바뀌게 해준다.&lt;/li&gt;
&lt;li&gt;만일 호출 후 리턴값이 false 라면 false를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이는 한번이라도 false가 리턴되면 재귀호출을 마지막까지 리턴시키기 위함이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;다시 본 코드로 돌아와서, 리턴값이 false면 노드들 끼리, 즉 현재 노드와 다음 노드의 구분 값이 같다면 false를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Union Find&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;싫어하는 사람들을 그룹으로 묶는 것이 아니라, 현재 노드에서 싫어하는 사람들로 연결된 노드들을 그룹으로 묶는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;현재 노드를 싫어하는 노드들을 그룹으로 묶는 것은 한 노드를 싫어하는 노드들은 각자 싫어하지 않을 거라는 가정에서 시작한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;매번 위 행동을 반복하면서 이전에 형성된 한 노드를 싫어하는 그룹을 참고로 답을 가려내기 시작한다.&lt;/li&gt;
&lt;li&gt;즉, 그 그룹은 자신들끼리 싫어하지 않는 그룹인데 다음 노드 회차에서 싫어하는 노드들을 find로 그룹이 되어있는지 확인하면 싫어하는 사람들끼리 묶였는지 알 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;두 그룹으로 나눌때 사람의 수는 상관 없기 때문에 싫어하는 사람들이 이전 그룹에서 중복되어 겹치지만 않으면 두 그룹으로 쪼갤 수 있음을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만약 중복되어 있다면 2개로 쪼개지는 것이 아니라 그 이상으로 쪼개질 수 있기 때문에 False를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;find는 재귀함수로 부모 배열에 각각 연결된 노드들을 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;최상위 부모 노드번호를 저장하기 위해 find 함수가 리턴한 값을 현재 노드의 부모 배열에 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;union 함수는 두 노드 번호의 부모를 구하고 rank에 맞게 최상위 부모를 저장시킨다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;rank를 사용하는 이유는 단지 순서에 대한 처리시간을 빠르게 하기 위해서이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;중복되는 노드들이 생기면 자연스럽게 랭크를 증가시키고 증가시킨 노드는 자식 노드의 층을 의미한다고 볼 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;층에 맞게 부모 노드를 할당해주면 find로 노드를 탐색할때 O(1)의 속도로 최상 부모 노드를 찾을 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;양방향 인접 2차원 배열을 만들고 각각 싫어하는 노드들의 번호들을 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;사람의 번호들을 탐색하면서 그 사람의 번호를 싫어하는 사람들의 번호를 탐색한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 현재 노드와 현재 노드를 싫어하는 사람의 노드의 최상위 부모가 같다면 False 를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이미 만들어진 그룹에서 부모의 중복이 발생하면 그룹은 2개 초과가 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그 후, 현재 노드의 싫어하는 노드들의 첫 노드와 모든 현재 노드를 싫어하는 노드를 그룹으로 만들기 위해 Union 함수를 호출한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DFS&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671636027390&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def possibleBipartition(self, n: int, dislikes: List[List[int]]) -&amp;gt; bool:
        def dfs(node, n_col):
            col[node] = n_col
            for neighbor in adj[node]:
                if col[neighbor] == col[node]:
                    return False
                if col[neighbor] == -1:
                    if not dfs(neighbor, 1 - n_col):
                        return False
            return True
        adj = [[] for _ in range(n + 1)]
        for dislike in dislikes:
            adj[dislike[0]].append(dislike[1])
            adj[dislike[1]].append(dislike[0])
        col = [-1] * (n + 1)
        for i in range(1, n + 1):
            if col[i] == -1:
                if not dfs(i, 0):
                    return False
        return True&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Union find&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671636042889&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def possibleBipartition(self, n: int, dislikes: List[List[int]]) -&amp;gt; bool:
        s = n + 1
        p = [i for i in range(s)]
        r = [0] * s

        def find(num):
            if p[num] != num:
                p[num] = find(p[num])
            return p[num]
        
        def union(a, b):
            ap = find(a)
            bp = find(b)

            if ap == bp: return
            if r[ap] &amp;lt; r[bp]:
                p[ap] = bp
            elif r[ap] &amp;gt; r[bp]:
                p[bp] = ap
            else:
                p[bp] = ap
                r[ap] += 1
        adj = [[] for _ in range(n + 1)]
        for lst in dislikes:
            adj[lst[0]].append(lst[1])
            adj[lst[1]].append(lst[0])
        
        for i in range(1, n + 1):
            for j in adj[i]:
                if find(i) == find(j):
                    return False
                union(adj[i][0], j)
        return True&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>886. Possible Bipartition</category>
      <category>DFS</category>
      <category>union find</category>
      <category>[LeetCode]</category>
      <category>[LeetCode] 886. Possible Bipartition</category>
      <category>유니온 파인드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/255</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-886-Possible-Bipartition#entry255comment</comments>
      <pubDate>Thu, 22 Dec 2022 01:00:19 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1971. Find if Path Exists in Graph</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1971-Find-if-Path-Exists-in-Graph</link>
      <description>&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1971.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Find if Path Exists in Graph&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;bi-directional&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;graph with&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;vertices, where each vertex is labeled from&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;b&gt;inclusive&lt;/b&gt;). The edges in the graph are represented as a 2D integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges, where each&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges[i] = [ui, vi]&lt;span&gt;&amp;nbsp;&lt;/span&gt;denotes a bi-directional edge between vertex&lt;span&gt;&amp;nbsp;&lt;/span&gt;ui&lt;span&gt;&amp;nbsp;&lt;/span&gt;and vertex&lt;span&gt;&amp;nbsp;&lt;/span&gt;vi. Every vertex pair is connected by&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;at most one&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;edge, and no vertex has an edge to itself.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You want to determine if there is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;valid path&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;that exists from vertex&lt;span&gt;&amp;nbsp;&lt;/span&gt;source&lt;span&gt;&amp;nbsp;&lt;/span&gt;to vertex&lt;span&gt;&amp;nbsp;&lt;/span&gt;destination.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges&lt;span&gt;&amp;nbsp;&lt;/span&gt;and the integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;n,&lt;span&gt;&amp;nbsp;&lt;/span&gt;source, and&lt;span&gt;&amp;nbsp;&lt;/span&gt;destination, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if there is a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;valid path&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;from&lt;span&gt;&amp;nbsp;&lt;/span&gt;source&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;destination, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;121&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1ousF/btrUgTFvJDq/aq7SCzibhtCG4ei0lcHHjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1ousF/btrUgTFvJDq/aq7SCzibhtCG4ei0lcHHjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1ousF/btrUgTFvJDq/aq7SCzibhtCG4ei0lcHHjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1ousF%2FbtrUgTFvJDq%2Faq7SCzibhtCG4ei0lcHHjk%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;141&quot; height=&quot;121&quot; data-origin-width=&quot;141&quot; data-origin-height=&quot;121&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
Output: true
Explanation: There are two paths from vertex 0 to vertex 2:
- 0 &amp;rarr; 1 &amp;rarr; 2
- 0 &amp;rarr; 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQHslR/btrUhk3WrPl/MGG0ioChXUvHunJOHhbpk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQHslR/btrUhk3WrPl/MGG0ioChXUvHunJOHhbpk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQHslR/btrUhk3WrPl/MGG0ioChXUvHunJOHhbpk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQHslR%2FbtrUhk3WrPl%2FMGG0ioChXUvHunJOHhbpk1%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;281&quot; height=&quot;141&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
Output: false
Explanation: There is no path from vertex 0 to vertex 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 2 * 105&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= edges.length &amp;lt;= 2 * 105&lt;/li&gt;
&lt;li&gt;edges[i].length == 2&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= ui, vi &amp;lt;= n - 1&lt;/li&gt;
&lt;li&gt;ui != vi&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= source, destination &amp;lt;= n - 1&lt;/li&gt;
&lt;li&gt;There are no duplicate edges.&lt;/li&gt;
&lt;li&gt;There are no self edges.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프가 주어지고, 출발점과 도착점이 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그래프는 간선들로 이루어져있는데 양방향 그래프이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;edges 배열은 한 노드에서 다른 노드로 연결된 간선을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;출발점에서 도착점까지 이동할 수 있는지를 구해야한다.&lt;/li&gt;
&lt;li&gt;그래프 문제이기 때문에 완전탐색으로 접근할 수 있으며, 문제 제한을 봤을때 최악의 경우 2 x 10^5 이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;모든 노드를 DFS, BFS로 탐색한다면 노드 개수만큼의 O(N) 시간 복잡도일 것이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 노드 뿐만 아니라 모든 간선을 탐색해야 연결이 어떻게 되있는지 알 수 있기 때문에 최종 시간 복잡도는 O(N + M)이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DFS&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리스트 딕셔너리로 양방향 간선들을 모두 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;한번 방문한 노드를 처리해주기 위해 n크기의 visited 배열을 0으로 초기화한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;재귀 함수를 만들때 종료 조건은 현재 노드 숫자가 종료번호이거나 방문 했던 노드라면 리턴을 해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;목적지일 경우에는 True를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;visited 배열에 해당 노드에 방문한 기록을 해주며, 현재 노드에 연결되어있는 간선들을 탐색한다.&lt;/li&gt;
&lt;li&gt;dfs 재귀함수의 종료조건에서 답으로 True가 리턴되면, 그자리에서 True를 리턴하면서 끝낸다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;한번 True가 발생하면 전 재귀함수 혹은 후 재귀함수에서 모두 리턴 처리가 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;반복문이 끝나고 나면 해당 노드의 간선에 대한 탐색이 끝났기 때문에 False를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;False가 특정 상황에서 리턴이 되면 dfs는 계속 진행된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Union-find&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;유니온 파인드를 사용하여 노드들의 그룹 여부를 알 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이를 이용해서 같은 그룹에 시작과 도착점이 있다면 정답이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;유니온 파인드를 개선해서 사용하면 간선 크기만큼의 m으로 모든 그룹을 만들고 나서 find 함수를 사용한다.&lt;/li&gt;
&lt;li&gt;그때 O(a(n)) 시간복잡도인데, a(n)은 n보다 작은 숫자라고 생각하는게 편하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;왜냐하면 완성된 그룹 자료구조에서 find 함수는 O(1)만에 부모 노드를 찾을 수 있기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;우선, 부모 배열을 자기 자신의 번호로 초기화한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;자기 자신이 부모라면 그 노드는 아무 그룹에도 해당되지 않음을 의미한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;find함수는 재귀함수를 사용하는데, 만일 찾는 노드의 부모가 현재 노드가 아니라면 find 함수를 재귀호출한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 함수가 종료될때 현재 재귀함수호출 상황의 부모노드를 리턴한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;결과적으로 첫 노드 번호의 부모노드를 찾는데, 재귀호출시 리턴되는 부모노드를 현재 재귀호출 상태의 부모 노드 배열에 저장한다.&lt;/li&gt;
&lt;li&gt;최종 부모 노드, 즉 최상위 부모 노드가 한 그룹의 부모로 통일되어 저장된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Union 함수는 매개 변수 두개를 두개의 노드를 연결하려는 의도로 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;우선 각각 노드의 부모를 찾아 가져온다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 만일 노드들의 부모가 다르다면 첫 노드의 부모를 두번째 노드의 부모로 저장한다.&lt;/li&gt;
&lt;li&gt;함수를 다 만들었다면 모든 간선들에 대해 Union 함수를 호출하여 부모 노드 배열을 채운다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그룹이 완성되면 시작 노드번호와 도착 노드번호의 부모 노드를 find로 찾는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;두개의 노드에 대한 부모 노드를 비교했을때, 같으면 그룹이고 다르면 그룹이아니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;즉, 출발지와 도착지는 같은 그룹일때 연결되어있다고 볼 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Union-find&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671614078927&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def validPath(self, n: int, edges: List[List[int]], source: int, destination: int) -&amp;gt; bool:
        p = [i for i in range(n)]
        def find(num):
            if p[num] != num:
                p[num] = find(p[num])
            return p[num]
        def union(a, b):
            p1 = find(a)
            p2 = find(b)
            if p1 != p2:
                p[p1] = p[p2]
        for u, v in edges:
            union(u, v)
        if find(source) == find(destination):
            return True
        return False&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;DFS&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1671614093515&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def validPath(self, n: int, edges: List[List[int]], source: int, destination: int) -&amp;gt; bool:
        g = defaultdict(list)
        for a, b in edges:
            g[a].append(b)
            g[b].append(a)
        visited = [0] * n
        def dfs(n):
            if n == destination:
                return True
            if visited[n] == 1:
                return
            visited[n] = 1
            for nxt in g[n]:
                if dfs(nxt):
                    return True
            return False
        return dfs(source)&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>1971. Find if Path Exists in Graph</category>
      <category>DFS</category>
      <category>union find</category>
      <category>[LeetCode]</category>
      <category>[LeetCode] 1971. Find if Path Exists in Graph</category>
      <category>유니온 파인드</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/254</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1971-Find-if-Path-Exists-in-Graph#entry254comment</comments>
      <pubDate>Wed, 21 Dec 2022 18:33:12 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1066. Campus Bikes II</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1066-Campus-Bikes-II</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1066.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Campus Bikes II&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;On a campus represented as a 2D grid, there are&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;workers and&lt;span&gt;&amp;nbsp;&lt;/span&gt;m&lt;span&gt;&amp;nbsp;&lt;/span&gt;bikes, with&lt;span&gt;&amp;nbsp;&lt;/span&gt;n &amp;lt;= m. Each worker and bike is a 2D coordinate on this grid.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We assign one unique bike to each worker so that the sum of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Manhattan distances&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;between each worker and their assigned bike is minimized.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the minimum possible sum of Manhattan distances between each worker and their assigned bike.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Manhattan distance&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;between two points&lt;span&gt;&amp;nbsp;&lt;/span&gt;p1&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;p2&lt;span&gt;&amp;nbsp;&lt;/span&gt;is&lt;span&gt;&amp;nbsp;&lt;/span&gt;Manhattan(p1, p2) = |p1.x - p2.x| + |p1.y - p2.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;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nx8Be/btrT9FooNyq/9PPPLYFOZsN88L2jjNjkdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nx8Be/btrT9FooNyq/9PPPLYFOZsN88L2jjNjkdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nx8Be/btrT9FooNyq/9PPPLYFOZsN88L2jjNjkdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNx8Be%2FbtrT9FooNyq%2F9PPPLYFOZsN88L2jjNjkdk%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;376&quot; height=&quot;366&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: workers = [[0,0],[2,1]], bikes = [[1,2],[3,3]]
Output: 6
Explanation: 
We assign bike 0 to worker 0, bike 1 to worker 1. The Manhattan distance of both assignments is 3, so the output is 6.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QPNqv/btrUac0jqmV/pnaBskGJXd6fvK7hnicg90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QPNqv/btrUac0jqmV/pnaBskGJXd6fvK7hnicg90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QPNqv/btrUac0jqmV/pnaBskGJXd6fvK7hnicg90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQPNqv%2FbtrUac0jqmV%2FpnaBskGJXd6fvK7hnicg90%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;376&quot; height=&quot;366&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: workers = [[0,0],[1,1],[2,0]], bikes = [[1,0],[2,2],[2,1]]
Output: 4
Explanation: 
We first assign bike 0 to worker 0, then assign bike 1 to worker 1 or worker 2, bike 2 to worker 2 or worker 1. Both assignments lead to sum of the Manhattan distances as 4.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: workers = [[0,0],[1,0],[2,0],[3,0],[4,0]], bikes = [[0,999],[1,999],[2,999],[3,999],[4,999]]
Output: 4995
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n == workers.length&lt;/li&gt;
&lt;li&gt;m == bikes.length&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= m &amp;lt;= 10&lt;/li&gt;
&lt;li&gt;workers[i].length == 2&lt;/li&gt;
&lt;li&gt;bikes[i].length == 2&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= workers[i][0], workers[i][1], bikes[i][0], bikes[i][1] &amp;lt; 1000&lt;/li&gt;
&lt;li&gt;All the workers and the bikes locations are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;unique&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일하는 사람들의 2차원 좌표 배열과 자전거들의 2차원 좌표 배열이 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;각각의 사람들이 각각의 자전거를 차지한다고 했을때, 사람의 좌표부터 자전거의 거리까지의 총합의 최소값을 구해야한다.&lt;/li&gt;
&lt;li&gt;거리는 맨하탄 거리로 자전거와 사람의 거리를 계산한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제한 사항을 보면 사람들과 자전거들의 최대길이가 10이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;완전 탐색으로 가능할 것 같지만, 만일 모든 사람들이 모든 자전거를 한번씩 탐색한다면 N^N 시간복잡도가 나올 것이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그래서 DFS를 사용하여 완전탐색을 하되, 몇번째 사람인지와 여태 방문한 사람들 번호로 메모이제이션을 활용해야한다.&lt;/li&gt;
&lt;li&gt;사람들 번호로 탐색을 할때 방문한 자전거들의 번호를 계속해서 저장해준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;memo 배열에 자전거들과 사람들의 거리의 총값을 저장할때는 모든 재귀 호출이 끝나고 적어준다.&lt;/li&gt;
&lt;li&gt;리턴 조건에서 사람의 번호가 일하는 사람들의 길이를 넘었을때 종료해주도록 설계했기 때문이다.&lt;/li&gt;
&lt;li&gt;즉, dfs 함수를 호출할때마다 사람의 번호가 1씩 추가가되고 마지막 사람까지의 자전거들의 거리를 계산하고 난 뒤에 그 값을 memo에 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;저장할때는 사람의 번호와 현재 확인한 자전거들의 번호를 튜플로 넣어 중복을 피한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;for 문으로 모든 자전거를 탐색하기 때문에 이러한 작업이 필요하다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 확인한 자전거의 visited 체크는 풀어줘야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 풀지 않으면 모든 자전거들을 확인할 수 없기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1671553679137&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def assignBikes(self, workers: List[List[int]], bikes: List[List[int]]) -&amp;gt; int:
        w_n = len(workers)
        b_n = len(bikes)
        def dis(w, b):
            return abs(b[0] - w[0]) + abs(b[1] - w[1])

        def dfs(w, visited, memo):
            if w &amp;gt;= w_n:
                return 0
            if (w, tuple(visited)) in memo:
                return memo[(w, tuple(visited))]
            
            ans = float('inf')
            for i in range(b_n):
                if i in visited: continue
                visited.add(i)
                ret = dfs(w + 1, visited, memo)
                visited.remove(i)
                ret += dis(workers[w], bikes[i])
                ans = min(ans, ret)
            memo[(w, tuple(visited))] = ans
            return ans
        return dfs(0, set(), dict())&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>1066. Campus Bikes II</category>
      <category>DFS</category>
      <category>LeetCode</category>
      <category>memo</category>
      <category>[LeetCode] 1066. Campus Bikes II</category>
      <category>메모이제이션</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/253</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1066-Campus-Bikes-II#entry253comment</comments>
      <pubDate>Wed, 21 Dec 2022 01:34:37 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 841. Keys and Rooms</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-841-Keys-and-Rooms</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;841.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Keys and Rooms&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There are&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;rooms labeled from&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - 1&amp;nbsp;and all the rooms are locked except for room&lt;span&gt;&amp;nbsp;&lt;/span&gt;0. Your goal is to visit all the rooms. However, you cannot enter a locked room without having its key.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When you visit a room, you may find a set of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;distinct keys&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in it. Each key has a number on it, denoting which room it unlocks, and you can take all of them with you to unlock the other rooms.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;rooms&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;rooms[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the set of keys that you can obtain if you visited room&lt;span&gt;&amp;nbsp;&lt;/span&gt;i, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;true&lt;span&gt;&amp;nbsp;&lt;/span&gt;if you can visit&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;all&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the rooms, or&lt;span&gt;&amp;nbsp;&lt;/span&gt;false&lt;span&gt;&amp;nbsp;&lt;/span&gt;otherwise.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: rooms = [[1],[2],[3],[]]
Output: true
Explanation: 
We visit room 0 and pick up key 1.
We then visit room 1 and pick up key 2.
We then visit room 2 and pick up key 3.
We then visit room 3.
Since we were able to visit every room, we return true.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: rooms = [[1,3],[3,0,1],[2],[0]]
Output: false
Explanation: We can not enter room number 2 since the only key that unlocks it is in that room.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;n == rooms.length&lt;/li&gt;
&lt;li&gt;2 &amp;lt;= n &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= rooms[i].length &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= sum(rooms[i].length) &amp;lt;= 3000&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= rooms[i][j] &amp;lt; n&lt;/li&gt;
&lt;li&gt;All the values of&lt;span&gt;&amp;nbsp;&lt;/span&gt;rooms[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;are&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;unique&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;방의 열쇠가 들어가있는 방의 배열이 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;2차원 배열이며 각각의 배열에는 번호들이 들어있는데, 이 번호는 그 번호의 방으로 들어갈 수 있는 키이다.&lt;/li&gt;
&lt;li&gt;0번인 첫번째 방은 열쇠없이도 들어갈 수 있지만 다른방은 열쇠가 있어야한다.&lt;/li&gt;
&lt;li&gt;첫번째 방으로 들어가서 열쇠를 얻고 들어갈 수 있는 모든 방을 탐색하여 주어진 rooms에 들어갈 수 있는지를 구해야한다.&lt;/li&gt;
&lt;li&gt;제한 조건을 보면 방의 개수가 최대 1000 이기 때문에 완전탐색 접근을 시도해도 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;DFS, BFS를 사용할 수 있으며, 모든 방의 열쇠를 모든 방이 가지고 있을 때도 있기 때문에 BFS가 성능면에서는 조금 빠를것이라고 예상된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;방의 개수를 구하고 BFS를 구축한다.&lt;/li&gt;
&lt;li&gt;큐에 현재 방번호와 그 방에 들어있는 열쇠들의 배열을 넣는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;한번 들어갔던 방은 피하기위해 visited 배열을 사용하여 막는다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;방의 개수에서 0번 방의 개수를 뺀 n을 사용하여, 새로운 방문을 열었을때마다 개수를 제거한다.&lt;/li&gt;
&lt;li&gt;결과적으로 n값이 0이되면 모든 방을 들어갔다 온것이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;큐가 바닥 날때까지 n의 개수가 0이되지 않으면 들어가지 못한 방이 존재하는 것이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1671535590241&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def canVisitAllRooms(self, rooms: List[List[int]]) -&amp;gt; bool:
        n = len(rooms) - 1
        visited = [0] * (n + 1)
        visited[0] = 1
        que = []
        que.append((0, rooms[0]))
        while que:
            curr_n, rs = que.pop(0)
            for i in range(len(rs)):
                if visited[rs[i]] == 1: 
                    continue
                visited[rs[i]] = 1
                n -= 1
                if n == 0:
                    return True
                que.append((rs[i], rooms[rs[i]]))
        return False&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>841. Keys and Rooms</category>
      <category>BFS</category>
      <category>DFS</category>
      <category>LeetCode</category>
      <category>[LeetCode] 841. Keys and Rooms</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/252</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-841-Keys-and-Rooms#entry252comment</comments>
      <pubDate>Tue, 20 Dec 2022 20:33:06 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 739. Daily Temperatures</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-739-Daily-Temperatures</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;739.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Daily Temperatures&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array of integers&lt;span&gt;&amp;nbsp;&lt;/span&gt;temperatures&lt;span&gt;&amp;nbsp;&lt;/span&gt;represents the daily temperatures, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer&lt;span&gt;&amp;nbsp;&lt;/span&gt;such that&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the number of days you have to wait after the&lt;span&gt;&amp;nbsp;&lt;/span&gt;ith&lt;span&gt;&amp;nbsp;&lt;/span&gt;day to get a warmer temperature. If there is no future day for which this is possible, keep&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer[i] == 0&lt;span&gt;&amp;nbsp;&lt;/span&gt;instead.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: temperatures = [73,74,75,71,69,72,76,73]
Output: [1,1,4,2,1,1,0,0]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: temperatures = [30,40,50,60]
Output: [1,1,1,0]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 3:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: temperatures = [30,60,90]
Output: [1,1,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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;=&amp;nbsp;temperatures.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;30 &amp;lt;=&amp;nbsp;temperatures[i] &amp;lt;= 100&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&amp;nbsp;&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;높은 온도 위치의 거리를 구할때는 자신의 위치에서 가장 가까운 온도 위치로 계산한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 정답 배열에는 온도 배열 크기만큼 0을 할당하고, 각 온도를 탐색하면서 스택에 온도를 저장한다.&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;저장 되는 온도 값은 앞으로 탐색하게 되는 온도 값과 비교하여, 큰 값이 있다면 현재 탐색 위치인 인덱스에서 스텍의 인덱스 값을 빼어 답으로 저장하고 처리된 온도 값은 스텍에서 제거한다.&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;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1671535007576&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -&amp;gt; List[int]:
        ans = [0] * len(temperatures)
        st = []
        for i, n in enumerate(temperatures):
            while st and temperatures[st[-1]] &amp;lt; n:
                ans[st[-1]] = i - st[-1]
                st.pop()
            st.append(i)
        return ans&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>739. Daily Temperatures</category>
      <category>LeetCode</category>
      <category>Stack</category>
      <category>[LeetCode] 739. Daily Temperatures</category>
      <category>스택</category>
      <category>스텍</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/251</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-739-Daily-Temperatures#entry251comment</comments>
      <pubDate>Tue, 20 Dec 2022 20:17:08 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 2272. Substring With Largest Variance</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-2272-Substring-With-Largest-Variance</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2272.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Substring With Largest Variance&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Hard&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;variance&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of a string is defined as the largest difference between the number of occurrences of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;any&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;2&lt;span&gt;&amp;nbsp;&lt;/span&gt;characters present in the string. Note the two characters may or may not be the same.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consisting of lowercase English letters only, return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;largest variance&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;possible among all&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;substrings&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of&lt;span&gt;&amp;nbsp;&lt;/span&gt;s.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;substring&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a contiguous sequence of characters within a 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;&lt;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;Input: s = &quot;aababbb&quot;
Output: 3
Explanation:
All possible variances along with their respective substrings are listed below:
- Variance 0 for substrings &quot;a&quot;, &quot;aa&quot;, &quot;ab&quot;, &quot;abab&quot;, &quot;aababb&quot;, &quot;ba&quot;, &quot;b&quot;, &quot;bb&quot;, and &quot;bbb&quot;.
- Variance 1 for substrings &quot;aab&quot;, &quot;aba&quot;, &quot;abb&quot;, &quot;aabab&quot;, &quot;ababb&quot;, &quot;aababbb&quot;, and &quot;bab&quot;.
- Variance 2 for substrings &quot;aaba&quot;, &quot;ababbb&quot;, &quot;abbb&quot;, and &quot;babb&quot;.
- Variance 3 for substring &quot;babbb&quot;.
Since the largest possible variance is 3, we return it.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Input: s = &quot;abcde&quot;
Output: 0
Explanation:
No letter occurs more than once in s, so the variance of every substring is 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= s.length &amp;lt;= 10^4&lt;/li&gt;
&lt;li&gt;s&lt;span&gt;&amp;nbsp;&lt;/span&gt;consists of lowercase English letters.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Kadane 알고리즘&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-style=&quot;style1&quot;&gt;주어진 문장에서 두 개의 알파벳을 선택하여 알파벳의 개수 차이의 최대값을 구해야한다.&lt;/li&gt;
&lt;li&gt;알파벳 두개가 포함되는 배열은 부분 연속 배열로 답으로 선택될 수 있는 배열의 범위는 연속적으로 연결되어 있어야한다.&lt;/li&gt;
&lt;li&gt;문제 제한은 10^4라 브루트 포스로도 풀릴 것 같지만 for문을 사용하면 3중포문을 사용해야해서 시간 제한에 걸린다.&lt;/li&gt;
&lt;li&gt;부분합의 최대 값을 구하는 문제에서 사용하는 알고리즘은 Kadane 알고리즘 '카데인'이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이 알고리즘을 사용하여 푸는 문제중 easy 문제는 아래 첨부하였다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/maximum-subarray/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leetcode.com/problems/maximum-subarray&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1670549454369&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Maximum Subarray - LeetCode&quot; data-og-description=&quot;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&quot; data-og-host=&quot;leetcode.com&quot; data-og-source-url=&quot;https://leetcode.com/problems/maximum-subarray/&quot; data-og-url=&quot;https://leetcode.com/problems/maximum-subarray/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/t44rU/hyQPgScixo/5eInb24vcB3AKwaKbV9PVK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260&quot;&gt;&lt;a href=&quot;https://leetcode.com/problems/maximum-subarray/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leetcode.com/problems/maximum-subarray/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/t44rU/hyQPgScixo/5eInb24vcB3AKwaKbV9PVK/img.png?width=500&amp;amp;height=260&amp;amp;face=0_0_500_260');&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;Maximum Subarray - LeetCode&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leetcode.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최대 값을 가진 부분 배열 합을 구할때 음수 값이 있기 때문에 조금 복잡하다.&lt;/li&gt;
&lt;li&gt;하지만 이 알고리즘을 사용하면 선형 시간내에 풀 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;우선 최대값을 저장할 변수를 두개 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;하나는 부분합의 값이 계속 바뀌기 때문에 그에 대한 최대 값이며, 나머지 하나는 리턴할 최대 값이다.&lt;/li&gt;
&lt;li&gt;-1, 2, -6, 3, 7 배열이 있다고 가정했을때 최대 합 값은 10이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;배열의 첫자리부터 더해 나가며 값을 비교하는데, 현재 값과 이전까지 더했던 값과의 합과 비교한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;2 값에 도착했을때, 이전 값과의 합은 1이고 현재 값은 2이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;최대값을 2로 바꿔주고, 이 값을 반환할 값과 비교하여 최대값으로 만들어준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이렇게 하는 이유는 -1은 도움이 되지 않기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;3에 도착했을때도 마찬가지고 수행되고, 마지막에 3, 7을 더했을때 최대값이 된다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Kadane 알고리즘 응용&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 문장의 알파벳 개수를 Counter로 구해준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 Permutations을 이용하여 두개의 알파벳을 구성한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;a는 시작 알파벳이고 b는 최대 합 값 계산시에 개수를 빼줄 알파벳이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;두 글자를 순열(선택)로 만들어 문장에서 부분 수열 최대 합을 구한다.&lt;/li&gt;
&lt;li&gt;글자가 a, b 둘 중 하나도 포함되지 않는다면 무시하고, a일때는 a의 개수를 b일때는 b의 개수를 올린다.&lt;/li&gt;
&lt;li&gt;b의 남은 개수를 줄여나가는 이유는 조금 전의 카데인 알고리즘을 응용한 부분이다.&lt;/li&gt;
&lt;li&gt;만일 b의 개수가 a의 개수보다 많고 b의 전체 개수가 1개 이상이면 이 말은 시작지점부터 끝까지 탐색을 해도 현재 부분 배열에서는 a의 개수가 b의 개수보다 월등히 높아질 수 없기 때문에 a, b의 개수 값을 초기화하여 다음 알파벳부터 다시 부분 배열이 시작된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 최대 값을 취할때 b의 개수를 확인하는 이유는 문제에서 두 알파벳이 꼭 함께 있어야 Variance를 계산할 수 있기 때문이다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1670549203713&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def largestVariance(self, s: str) -&amp;gt; int:
        counter = Counter(s)
        res = 0
        for a, b in permutations(counter, 2):
            count_a, count_b = 0, 0
            remain_b = counter[b]
            for c in s:
                if c != a and c != b:
                    continue
                if c == a:
                    count_a += 1
                elif c == b:
                    count_b += 1
                    remain_b -= 1
                if count_a &amp;lt; count_b and remain_b &amp;gt; 0:
                    count_a, count_b = 0, 0
                if count_b &amp;gt; 0:
                    res = max(res, count_a - count_b)
        return res&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>2272. Substring With Largest Variance</category>
      <category>Kadane Algorithm</category>
      <category>[LeetCode] 2272. Substring With Largest Variance</category>
      <category>카데인 알고리즘</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/250</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-2272-Substring-With-Largest-Variance#entry250comment</comments>
      <pubDate>Fri, 9 Dec 2022 10:45:37 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 323. Number of Connected Components in an Undirected Graph</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-323-Number-of-Connected-Components-in-an-Undirected-Graph</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;323.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Number of Connected Components in an Undirected Graph&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You have a graph of&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;nodes. You are given an integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;and an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges&lt;span&gt;&amp;nbsp;&lt;/span&gt;where&lt;span&gt;&amp;nbsp;&lt;/span&gt;edges[i] = [ai, bi]&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicates that there is an edge between&lt;span&gt;&amp;nbsp;&lt;/span&gt;ai&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;bi&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the graph.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the number of connected components in the graph.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QAK4h/btrS5xkuAtL/Y0KBvyX5f7wfKIQdYKcMRk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QAK4h/btrS5xkuAtL/Y0KBvyX5f7wfKIQdYKcMRk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QAK4h/btrS5xkuAtL/Y0KBvyX5f7wfKIQdYKcMRk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQAK4h%2FbtrS5xkuAtL%2FY0KBvyX5f7wfKIQdYKcMRk%2Fimg.jpg&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;382&quot; height=&quot;222&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 5, edges = [[0,1],[1,2],[3,4]]
Output: 2
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOoXp/btrS6YO1wJt/GGG0mQza3Iui8xe2GTLkg1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOoXp/btrS6YO1wJt/GGG0mQza3Iui8xe2GTLkg1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOoXp/btrS6YO1wJt/GGG0mQza3Iui8xe2GTLkg1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOoXp%2FbtrS6YO1wJt%2FGGG0mQza3Iui8xe2GTLkg1%2Fimg.jpg&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;382&quot; height=&quot;222&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: n = 5, edges = [[0,1],[1,2],[2,3],[3,4]]
Output: 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= n &amp;lt;= 2000&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= edges.length &amp;lt;= 5000&lt;/li&gt;
&lt;li&gt;edges[i].length == 2&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= ai &amp;lt;= bi &amp;lt; n&lt;/li&gt;
&lt;li&gt;ai != bi&lt;/li&gt;
&lt;li&gt;There are no repeated edges.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;노드의 개수와 간선들의 정보가 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;간선들의 정보를 이용하여 연결되어 있는 그룹의 개수를 구해야한다.&lt;/li&gt;
&lt;li&gt;간선들은 방향을 갖지 않기 때문에 a에서 b로 b에서 a로 이동할 수도 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만약 간선이 없는 노드라면 그 노드는 다른 그룹이다.&lt;/li&gt;
&lt;li&gt;양방향 간선들을 딕셔너리로 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;재귀함수를 사용하여 0부터 n-1 까지 탐색해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만일 간선이 없다면 정답 그룹 개수를 1개 늘리고, 간선이 존재한다면 재귀함수를 이용하여 탐색해야한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;탐색하면서 이미 방문한 노드는 visited 배열로 처리해주자.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로, Union-Find를 활용하여 그룹의 개수를 구하는 방법도 있지만 생략한다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1670465335482&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def countComponents(self, n: int, edges: List[List[int]]) -&amp;gt; int:
        cnt = 0
        visited = [0] * (n + 1)
        mp = defaultdict(list)
        for y, x in edges:
            mp[y].append(x)
            mp[x].append(y)
        def rec(num):
            for x in mp[num]:
                if visited[x] == 1: continue
                visited[x] = 1
                rec(x)
        for i in range(0, n):
            if i not in mp: 
                cnt += 1
                continue
            if visited[i] == 1: continue
            visited[i] = 1
            rec(i)
            cnt += 1
        return cnt&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>323. Number of Connected Components in an Undirected Graph</category>
      <category>DFS</category>
      <category>union find</category>
      <category>[LeetCode] 323. Number of Connected Components in an Undirected Graph</category>
      <category>재귀함수</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/249</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-323-Number-of-Connected-Components-in-an-Undirected-Graph#entry249comment</comments>
      <pubDate>Thu, 8 Dec 2022 11:09:49 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 2256. Minimum Average Difference</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-2256-Minimum-Average-Difference</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #282828; color: #ffffff;&quot;&gt;2256&lt;/span&gt;&lt;span style=&quot;background-color: #282828; color: #ffffff;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;background-color: #282828; color: #ffffff;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #282828; color: #ffffff;&quot;&gt;Minimum Average Difference&lt;/span&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffc01e;&quot;&gt;Medium&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You are given a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;0-indexed&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;integer array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;of length&lt;span&gt;&amp;nbsp;&lt;/span&gt;n.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;average difference&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of the index&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;is the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;absolute&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;difference&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;between the average of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;first&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;i + 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements of&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;and the average of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;last&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;n - i - 1&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements. Both averages should be&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;rounded down&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to the nearest integer.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the index with the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;minimum average difference&lt;/b&gt;. If there are multiple such indices, return the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;smallest&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;one.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;absolute difference&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of two numbers is the absolute value of their difference.&lt;/li&gt;
&lt;li&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;average&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements is the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;sum&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements divided (&lt;b&gt;integer division&lt;/b&gt;) by&lt;span&gt;&amp;nbsp;&lt;/span&gt;n.&lt;/li&gt;
&lt;li&gt;The average of&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;elements is considered to be&lt;span&gt;&amp;nbsp;&lt;/span&gt;0.&lt;/li&gt;
&lt;/ul&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [2,5,3,9,5,3]
Output: 3
Explanation:
- The average difference of index 0 is: |2 / 1 - (5 + 3 + 9 + 5 + 3) / 5| = |2 / 1 - 25 / 5| = |2 - 5| = 3.
- The average difference of index 1 is: |(2 + 5) / 2 - (3 + 9 + 5 + 3) / 4| = |7 / 2 - 20 / 4| = |3 - 5| = 2.
- The average difference of index 2 is: |(2 + 5 + 3) / 3 - (9 + 5 + 3) / 3| = |10 / 3 - 17 / 3| = |3 - 5| = 2.
- The average difference of index 3 is: |(2 + 5 + 3 + 9) / 4 - (5 + 3) / 2| = |19 / 4 - 8 / 2| = |4 - 4| = 0.
- The average difference of index 4 is: |(2 + 5 + 3 + 9 + 5) / 5 - 3 / 1| = |24 / 5 - 3 / 1| = |4 - 3| = 1.
- The average difference of index 5 is: |(2 + 5 + 3 + 9 + 5 + 3) / 6 - 0| = |27 / 6 - 0| = |4 - 0| = 4.
The average difference of index 3 is the minimum average difference so return 3.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [0]
Output: 0
Explanation:
The only index is 0 so return 0.
The average difference of index 0 is: |0 / 1 - 0| = |0 - 0| = 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;&lt;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 105&lt;/li&gt;
&lt;li&gt;0 &amp;lt;= nums[i] &amp;lt;= 105&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자 배열이 주어진다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;0부터 i 까지의 숫자 합 평균(i+1로 합을 나눈다.)과 i+1 부터 끝까지의 합 평균(n - i - 1로 합을 나눈다.)의 차가 가장 작은 값을 구해야한다.&lt;/li&gt;
&lt;li&gt;가장 작은 값을 가지는 위치를 리턴하면 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;만약 다수의 정답이 있다면 인덱스는 가장 작은 값이어야하며, n개의 숫자의 합 평균은 전체 합 나누기 n이다.&lt;/li&gt;
&lt;li&gt;그리고 0의 평균은 0이다.&lt;/li&gt;
&lt;li&gt;제한 사항을 보면 10^5 이기 때문에 O(N)으로 풀어야한다.&lt;/li&gt;
&lt;li&gt;prefix sum을 활용하여 풀어야한다.&lt;/li&gt;
&lt;li&gt;처음 index 1자리 부터 끝까지 숫자들을 더하여 시작한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;첫번째 정답은 미리 구하는데 인덱스 0 위치의 숫자 한개와 1부터 n(배열의 끝)까지의 합 평균으로 절대값을 계산한다.&lt;/li&gt;
&lt;li&gt;이후, 인덱스 1부터 진행하여 왼쪽 파트에는 인덱스 i의 값을 빼고 평균을 구하고, 오른쪽 파트에는 인덱스 i의 값을 더해 평균을 계산한다.&lt;/li&gt;
&lt;li&gt;주의할 점은 평균을 구할때 0이 들어갈 수 있기 때문에 이를 예외 처리해주어야 한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1670354556750&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def minimumAverageDifference(self, nums: List[int]) -&amp;gt; int:
        n = len(nums)
        if n == 1:
            return 0
        total1 = nums[0]
        total2 = sum(nums[1:])
        ans = abs(total1 - total2//(n - 1))
        ans_i = 0
        for i in range(1, n):
            total1 += nums[i]
            total2 -= nums[i]
            l = total1 // (i + 1) if total1 &amp;gt; 0 else 0
            r = total2 // (n - i - 1) if total2 &amp;gt; 0 else 0
            if ans &amp;gt; abs(l - r):
                ans = abs(l - r)
                ans_i = i
        return ans_i&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>2256. Minimum Average Difference</category>
      <category>prefix</category>
      <category>Prefix sum</category>
      <category>[LeetCode] 2256. Minimum Average Difference</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/248</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-2256-Minimum-Average-Difference#entry248comment</comments>
      <pubDate>Wed, 7 Dec 2022 04:23:02 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 328. Odd Even Linked List</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-328-Odd-Even-Linked-List</link>
      <description>&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;328.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Odd Even Linked List&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given the&lt;span&gt;&amp;nbsp;&lt;/span&gt;head&lt;span&gt;&amp;nbsp;&lt;/span&gt;of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return&lt;span&gt;&amp;nbsp;&lt;/span&gt;the reordered list.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;first&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;node is considered&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;odd&lt;/b&gt;, and the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;second&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;node is&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;even&lt;/b&gt;, and so on.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Note that the relative order inside both the even and odd groups should remain as it was in the input.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You must solve the problem&amp;nbsp;in&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(1)&amp;nbsp;extra space complexity and&lt;span&gt;&amp;nbsp;&lt;/span&gt;O(n)&lt;span&gt;&amp;nbsp;&lt;/span&gt;time complexity.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZVHoW/btrS3pSRARw/9YmfEabjIraighuWxdwEkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZVHoW/btrS3pSRARw/9YmfEabjIraighuWxdwEkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZVHoW/btrS3pSRARw/9YmfEabjIraighuWxdwEkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZVHoW%2FbtrS3pSRARw%2F9YmfEabjIraighuWxdwEkK%2Fimg.jpg&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;542&quot; height=&quot;222&quot; data-origin-width=&quot;542&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: head = [1,2,3,4,5]
Output: [1,3,5,2,4]
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfWwJS/btrSZZ8YgzM/hsykqh3zueGwA1YzXjEkC0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfWwJS/btrSZZ8YgzM/hsykqh3zueGwA1YzXjEkC0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfWwJS/btrSZZ8YgzM/hsykqh3zueGwA1YzXjEkC0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfWwJS%2FbtrSZZ8YgzM%2Fhsykqh3zueGwA1YzXjEkC0%2Fimg.jpg&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;782&quot; height=&quot;222&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: head = [2,1,3,5,6,4,7]
Output: [2,3,6,7,1,5,4]
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The number of nodes in the linked list is in the range&lt;span&gt;&amp;nbsp;&lt;/span&gt;[0, 104].&lt;/li&gt;
&lt;li&gt;-106 &amp;lt;= Node.val &amp;lt;= 106&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;링크드 리스트가 주어진다.&lt;/li&gt;
&lt;li&gt;짝수 번째의 노드들을 모두 연결하고 홀수 번째의 노드들을 모두 연결한다.&lt;/li&gt;
&lt;li&gt;맨앞에 홀수 번째로 구성된 링크드리스트가 있어야하며 그 뒤에는 짝수 번째의 노드들이 연결되어야한다.&lt;/li&gt;
&lt;li&gt;공간 복잡도는 O(1) 상수 크기 만큼만 사용하고 시간 복잡도는 O(n)로 풀라고 나와있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;홀수 번째 노드들을 각각 연결해나가면서, 짝수 번째 노드들도 연결한다.&lt;/li&gt;
&lt;li&gt;마지막에 짝수 번째의 헤드를 모든 과정이 끝나고 홀수 번째 노드 끝에 연결한다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1670351944380&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def oddEvenList(self, head: Optional[ListNode]) -&amp;gt; Optional[ListNode]:
        if head == None: return head
        odd = head
        even = head.next
        evenhead = even
        while even != None and even.next != None:
            odd.next = even.next
            odd = odd.next
            even.next = odd.next
            even = even.next
        odd.next = evenhead
        return head&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>328. Odd Even Linked List</category>
      <category>Linked List</category>
      <category>[LeetCode] 328. Odd Even Linked List</category>
      <category>링크드 리스트</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/247</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-328-Odd-Even-Linked-List#entry247comment</comments>
      <pubDate>Wed, 7 Dec 2022 03:41:02 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1165. Single-Row Keyboard</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1165-Single-Row-Keyboard</link>
      <description>&lt;div&gt;
&lt;h2 data-cy=&quot;question-title&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1165.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Single-Row Keyboard&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;There is a special keyboard with&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;all keys in a single row&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;keyboard&lt;span&gt;&amp;nbsp;&lt;/span&gt;of length&lt;span&gt;&amp;nbsp;&lt;/span&gt;26&lt;span&gt;&amp;nbsp;&lt;/span&gt;indicating the layout of the keyboard (indexed from&lt;span&gt;&amp;nbsp;&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;25). Initially, your finger is at index&lt;span&gt;&amp;nbsp;&lt;/span&gt;0. To type a character, you have to move your finger to the index of the desired character. The time taken to move your finger from index&lt;span&gt;&amp;nbsp;&lt;/span&gt;i&lt;span&gt;&amp;nbsp;&lt;/span&gt;to index&lt;span&gt;&amp;nbsp;&lt;/span&gt;j&lt;span&gt;&amp;nbsp;&lt;/span&gt;is&lt;span&gt;&amp;nbsp;&lt;/span&gt;|i - j|.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You want to type a string&lt;span&gt;&amp;nbsp;&lt;/span&gt;word. Write a function to calculate how much time it takes to type it with one finger.&lt;/p&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;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;Input: keyboard = &quot;abcdefghijklmnopqrstuvwxyz&quot;, word = &quot;cba&quot;
Output: 4
Explanation: The index moves from 0 to 2 to write 'c' then to 1 to write 'b' then to 0 again to write 'a'.
Total time = 2 + 1 + 1 = 4. 
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;Input: keyboard = &quot;pqrstuvwxyzabcdefghijklmno&quot;, word = &quot;leetcode&quot;
Output: 73
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;keyboard.length == 26&lt;/li&gt;
&lt;li&gt;keyboard&lt;span&gt;&amp;nbsp;&lt;/span&gt;contains each English lowercase letter exactly once in some order.&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= word.length &amp;lt;= 104&lt;/li&gt;
&lt;li&gt;word[i]&lt;span&gt;&amp;nbsp;&lt;/span&gt;is an English lowercase letter.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;키보드 배열과 단어하나가 주어진다.&lt;/li&gt;
&lt;li&gt;주어진 단어를 키보드 하나하나 입력할때 주어진 키보드 배열에서 인덱스를 옮기면서 얼마나 걸리는지 구해야한다.&lt;/li&gt;
&lt;li&gt;키보드 배열은 임의로 주어지기 때문에 딕셔너리에 인덱스와 함께 저장한다.&lt;/li&gt;
&lt;li&gt;그리고 첫 글자는 인덱스를 바로 더하고 현재 인덱스로 저장한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;그리고 다음 인덱스부터 현재 위치에서 다음 알파벳의 위치의 거리 차이를 계산하여 정답에 더한다.&lt;/li&gt;
&lt;li&gt;이때도 마찬가지로 현재 위치를 갱신한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;pre id=&quot;code_1669920696221&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def calculateTime(self, keyboard: str, word: str) -&amp;gt; int:
        ans = 0
        d = dict()
        cur = 0
        for i, k in enumerate(keyboard):
            d[k] = i
        ans += d[word[0]]
        cur = d[word[0]]
        for i in range(1, len(word)):
            ans += abs(cur - d[word[i]])
            cur = d[word[i]]
        return ans&lt;/code&gt;&lt;/pre&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>1165. Single-Row Keyboard</category>
      <category>[LeetCode] 1165. Single-Row Keyboard</category>
      <category>딕셔너리</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/246</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1165-Single-Row-Keyboard#entry246comment</comments>
      <pubDate>Fri, 2 Dec 2022 03:54:26 +0900</pubDate>
    </item>
    <item>
      <title>[LeetCode] 1099. Two Sum Less Than K</title>
      <link>https://saurus2.tistory.com/entry/LeetCode-1099-Two-Sum-Less-Than-K</link>
      <description>&lt;div&gt;
&lt;h2 data-cy=&quot;question-title&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1099.&lt;span&gt;&amp;nbsp;&lt;/span&gt;Two Sum Less Than K&lt;/b&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Easy&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Given an array&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums&lt;span&gt;&amp;nbsp;&lt;/span&gt;of integers and&amp;nbsp;integer&lt;span&gt;&amp;nbsp;&lt;/span&gt;k, return the maximum&lt;span&gt;&amp;nbsp;&lt;/span&gt;sum&lt;span&gt;&amp;nbsp;&lt;/span&gt;such that there exists&lt;span&gt;&amp;nbsp;&lt;/span&gt;i &amp;lt; j&lt;span&gt;&amp;nbsp;&lt;/span&gt;with&lt;span&gt;&amp;nbsp;&lt;/span&gt;nums[i] + nums[j] = sum&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;sum &amp;lt; k. If no&lt;span&gt;&amp;nbsp;&lt;/span&gt;i,&lt;span&gt;&amp;nbsp;&lt;/span&gt;j&lt;span&gt;&amp;nbsp;&lt;/span&gt;exist satisfying this equation, return&lt;span&gt;&amp;nbsp;&lt;/span&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;b&gt;Example 1:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [34,23,1,24,75,33,54,8], k = 60
Output: 58
Explanation: We can use 34 and 24 to sum 58 which is less than 60.
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Example 2:&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;Input: nums = [10,20,30], k = 15
Output: -1
Explanation: In this case it is not possible to get a pair sum less that 15.
&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;b&gt;Constraints:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1 &amp;lt;= nums.length &amp;lt;= 100&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= nums[i] &amp;lt;= 1000&lt;/li&gt;
&lt;li&gt;1 &amp;lt;= k &amp;lt;= 2000&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;문제 풀이&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주어진 배열에서 숫자 두개를 더한 값이 K보다 작을때 가장 큰 값을 구해야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;부루트 포스&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열을 각각 더해보면서 K 값보다 작을때 최대값을 저장한다.&lt;/li&gt;
&lt;li&gt;정렬 + 투포인터&lt;/li&gt;
&lt;li&gt;배열을 정렬하고 배열의 양끝에서 인덱스를 옮기면서 값을 계산한다.&lt;/li&gt;
&lt;li&gt;만약 두개의 숫자를 더한 값이 K보다 작다면 최대값을 구하고 왼쪽 포인터를 하나 올린다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;정렬이 되어있기 때문에 왼쪽 포인터를 오른쪽으로 옮기면 숫자가 커져서 합도 증가할 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;바이너리 서치&amp;nbsp;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;투포인터와 비슷한 로직이다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;배열을 먼저 정렬한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;가장 작은 값부터 진행하는데, 값을 K에서 뺀것을 Lower boundery 바이너리 서치로 위치를 검색한다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;bisect_left를 사용하면되는데, K에서 현재 위치의 값을 뺀것에 가장 가까우면서 왼쪽 위치의 값을 찾는다, 즉, K - nums[i] 보다 작은 값을 찾게 된다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;(bisect_right는 반대이다.)&lt;/li&gt;
&lt;li&gt;만약 j 가 i 보다 크면 최대값을 구해준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;(이진 탐색의 시작 위치를 정해주었어도 i 보다 작은 인덱스를 결과로 가져올 수 있기 때문이다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;카운팅 소트&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;숫자의 최대값인 1000까지 빈 배열을 만든다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;이 배열은 숫자의 개수를 저장할 배열이다.&lt;/li&gt;
&lt;li&gt;1부터 최대 값인 1000까지 진행을 하는데 투포인터처럼 양끝에서 시작한다.&lt;/li&gt;
&lt;li&gt;만일 두개의 값의 합이 K보다 같거나 크면 오른쪽 포인터를 하나 줄여준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;혹은 오른쪽 포인터의 값이 배열에 존재하지 않으면 오른쪽 포인터를 하나 줄여준다.&lt;/li&gt;
&lt;li&gt;만일 두 값의 합이 K보다 작을때, l이 r보다 작고 배열에 l 숫자가 존재하면 맥스 값을 설정한다.&lt;/li&gt;
&lt;li&gt;반대로 l 과 r 값이 같을때는 l의 개수가 1개 초과이어야한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스 코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;브루트 포스 O(N^2)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669919162461&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def twoSumLessThanK(self, nums: List[int], k: int) -&amp;gt; int:
        m = -1
        for i in range(len(nums)):
            for j in range(i+1, len(nums)):
                t = nums[i] + nums[j]
                if t &amp;lt; k:
                    m = max(m, t)
        return m&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정렬 + 투포인터 O(NlogN)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669919186216&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def twoSumLessThanK(self, nums: List[int], k: int) -&amp;gt; int:
        nums.sort()
        m = -1
        l, r = 0, len(nums) - 1
        while l &amp;lt; r:
            total = nums[l] + nums[r]
            if total &amp;lt; k:
                m = max(m, total)
                l += 1
            else:
                r -= 1
        return m&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;바이너리 서치 O(NlogN)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1669919232593&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def twoSumLessThanK(self, nums: List[int], k: int) -&amp;gt; int:
        m = -1
        nums.sort()
        for i in range(len(nums)):
        # nums은 배열, k - nums[i]는 찾을 값, i + 1은 시작점
            j = bisect_left(nums, k - nums[i], i + 1) - 1
            if j &amp;gt; i:
                m = max(m, nums[i] + nums[j])
        return m&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;카운팅 소트 O(N + M)&lt;/b&gt; M은 입력으로 들어온 배열의 길이이다.&lt;/p&gt;
&lt;pre id=&quot;code_1669919327847&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution:
    def twoSumLessThanK(self, nums: List[int], k: int) -&amp;gt; int:
        m = -1
        cnt = [0] * 1001
        for num in nums:
            cnt[num] += 1
        l, r = 1, 1000
        while l &amp;lt;= r:
            if l + r &amp;gt;= k or cnt[r] == 0:
                r -= 1
            else:
                if l &amp;lt; r and cnt[l] &amp;gt; 0 or l == r and cnt[l] &amp;gt; 1:
                    m = max(m, l + r)
                l += 1
        return m&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>컴퓨터공학/LeetCode 1000</category>
      <category>1099. Two Sum Less Than K</category>
      <category>binery search</category>
      <category>counting sort</category>
      <category>sort</category>
      <category>[LeetCode] 1099. Two Sum Less Than K</category>
      <author>saurus2</author>
      <guid isPermaLink="true">https://saurus2.tistory.com/245</guid>
      <comments>https://saurus2.tistory.com/entry/LeetCode-1099-Two-Sum-Less-Than-K#entry245comment</comments>
      <pubDate>Fri, 2 Dec 2022 03:38:15 +0900</pubDate>
    </item>
  </channel>
</rss>