<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Hamplease</title>
    <link>https://phomsique.tistory.com/</link>
    <description>개인 공부 기록</description>
    <language>ko</language>
    <pubDate>Wed, 12 Aug 2026 05:08:19 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Hamplz</managingEditor>
    <image>
      <title>Hamplease</title>
      <url>https://tistory1.daumcdn.net/tistory/6254170/attach/ca217598258d4df0ab98df52950bcc1d</url>
      <link>https://phomsique.tistory.com</link>
    </image>
    <item>
      <title>Raspberry Pi 4 카메라 연결 Camera Module v2 (어떻게든 한다)</title>
      <link>https://phomsique.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;쿨러 때문에 카메라 못 달 줄 알았는데 가능하네요..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;역시&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;하면 된다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;1. 브라켓을 연다&lt;br /&gt;: 위로 들면 들린다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW3ToT/btsMAilFS7l/kKMRQPyes1JazI1X3KtT4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW3ToT/btsMAilFS7l/kKMRQPyes1JazI1X3KtT4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW3ToT/btsMAilFS7l/kKMRQPyes1JazI1X3KtT4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW3ToT%2FbtsMAilFS7l%2FkKMRQPyes1JazI1X3KtT4K%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;2. 틈 사이에 꽂는다.&lt;br /&gt;방향은 파란색 라인이 USB 포트로 향하도록 or 카메라 렌즈가 위를 보도록&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VlNQA/btsMAXBnDAg/T4O3iYvEKtSj8kmk8bNJQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VlNQA/btsMAXBnDAg/T4O3iYvEKtSj8kmk8bNJQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VlNQA/btsMAXBnDAg/T4O3iYvEKtSj8kmk8bNJQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVlNQA%2FbtsMAXBnDAg%2FT4O3iYvEKtSj8kmk8bNJQk%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8cUG8/btsMyDRZ7ac/9qI0mFHm4qKYbB8ewDrh7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8cUG8/btsMyDRZ7ac/9qI0mFHm4qKYbB8ewDrh7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8cUG8/btsMyDRZ7ac/9qI0mFHm4qKYbB8ewDrh7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8cUG8%2FbtsMyDRZ7ac%2F9qI0mFHm4qKYbB8ewDrh7K%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;3. 검정색 브라켓을 닫는다.&lt;br /&gt;끝까지 닫는다.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPak3x/btsMAJpJC1B/FEiywNb0jsM4DfzGPnUQIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPak3x/btsMAJpJC1B/FEiywNb0jsM4DfzGPnUQIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPak3x/btsMAJpJC1B/FEiywNb0jsM4DfzGPnUQIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPak3x%2FbtsMAJpJC1B%2FFEiywNb0jsM4DfzGPnUQIK%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b216zc/btsMyDLbWuI/aeHzKp7pKZL7iaTL2Y0SWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b216zc/btsMyDLbWuI/aeHzKp7pKZL7iaTL2Y0SWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b216zc/btsMyDLbWuI/aeHzKp7pKZL7iaTL2Y0SWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb216zc%2FbtsMyDLbWuI%2FaeHzKp7pKZL7iaTL2Y0SWk%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;성공!!&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4dnUX/btsMAKCaTrL/kHWwOfvHDhr67PGxxKNlt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4dnUX/btsMAKCaTrL/kHWwOfvHDhr67PGxxKNlt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4dnUX/btsMAKCaTrL/kHWwOfvHDhr67PGxxKNlt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4dnUX%2FbtsMAKCaTrL%2FkHWwOfvHDhr67PGxxKNlt0%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;고마운 도구들 (근처 마트에서 산 &lt;b&gt;드라이버&lt;/b&gt; &amp;amp; 마스카라 사고 받은 속눈썹용?-한 번도 안 써본 &lt;b&gt;핀셋&lt;/b&gt;)&lt;br /&gt;# 핀셋으로 브라켓 열고, 끼움&lt;br /&gt;# 드라이버로 왼쪽(안쪽) 브라켓 부분을 누름&lt;br /&gt;# 오른쪽 브라켓은 손으로 가능함&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ldpsu/btsMyu8G22y/KPpcxRkfEZmEOGrZ2lBHgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ldpsu/btsMyu8G22y/KPpcxRkfEZmEOGrZ2lBHgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ldpsu/btsMyu8G22y/KPpcxRkfEZmEOGrZ2lBHgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fldpsu%2FbtsMyu8G22y%2FKPpcxRkfEZmEOGrZ2lBHgK%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;2992&quot; height=&quot;2992&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;face&quot; data-emoticon-name=&quot;013&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/013.png&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/face/large/013.png&quot; width=&quot;80&quot; /&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;결국 끼웠습니다.... 반드시 끼우겠다는 의지... 긍정적으로(?) 살아야 하나봐요! 화이팅~&lt;/span&gt;&lt;/h3&gt;</description>
      <category>Raspberry Pi</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/20</guid>
      <comments>https://phomsique.tistory.com/20#entry20comment</comments>
      <pubDate>Sat, 1 Mar 2025 02:25:42 +0900</pubDate>
    </item>
    <item>
      <title>Anaconda3) 환경 변수 설정</title>
      <link>https://phomsique.tistory.com/19</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf2s8C/btsKlOHbfVQ/9d5qqcGYvaNKVvwb20iOnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf2s8C/btsKlOHbfVQ/9d5qqcGYvaNKVvwb20iOnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf2s8C/btsKlOHbfVQ/9d5qqcGYvaNKVvwb20iOnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf2s8C%2FbtsKlOHbfVQ%2F9d5qqcGYvaNKVvwb20iOnK%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;589&quot; height=&quot;152&quot; data-origin-width=&quot;589&quot; data-origin-height=&quot;152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;해결&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 시스템 환경 변수 편집&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dNdr5k/btsKkXEKZ8T/X6xFribHUNr5JM8CRcnUa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dNdr5k/btsKkXEKZ8T/X6xFribHUNr5JM8CRcnUa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dNdr5k/btsKkXEKZ8T/X6xFribHUNr5JM8CRcnUa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdNdr5k%2FbtsKkXEKZ8T%2FX6xFribHUNr5JM8CRcnUa0%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;436&quot; height=&quot;245&quot; data-origin-width=&quot;436&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 시스템 속성 &amp;gt; 환경 변수 클릭&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzbUyX/btsKk6hunUb/KkTzQlzKJwv67uQCYg7W10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzbUyX/btsKk6hunUb/KkTzQlzKJwv67uQCYg7W10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzbUyX/btsKk6hunUb/KkTzQlzKJwv67uQCYg7W10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzbUyX%2FbtsKk6hunUb%2FKkTzQlzKJwv67uQCYg7W10%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;488&quot; height=&quot;549&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 환경 변수 &amp;gt; 시스템 변수 에서 Path 편집&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FjMkl/btsKkmZudNR/iNkg3Xuoy1DfucbtoDl3NK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FjMkl/btsKkmZudNR/iNkg3Xuoy1DfucbtoDl3NK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FjMkl/btsKkmZudNR/iNkg3Xuoy1DfucbtoDl3NK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFjMkl%2FbtsKkmZudNR%2FiNkg3Xuoy1DfucbtoDl3NK%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;630&quot; height=&quot;598&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Anaconda Prompt에서 'where conda' 검색&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9LiRx/btsKk4Rrse9/h0MNEijdUs4LuX0Bqu8P30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9LiRx/btsKk4Rrse9/h0MNEijdUs4LuX0Bqu8P30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9LiRx/btsKk4Rrse9/h0MNEijdUs4LuX0Bqu8P30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9LiRx%2FbtsKk4Rrse9%2Fh0MNEijdUs4LuX0Bqu8P30%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;452&quot; height=&quot;155&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 경로 추가하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c73QbM/btsKlQkGTzQ/0o2cpcUNPtuLtoWHbhTGf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c73QbM/btsKlQkGTzQ/0o2cpcUNPtuLtoWHbhTGf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c73QbM/btsKlQkGTzQ/0o2cpcUNPtuLtoWHbhTGf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc73QbM%2FbtsKlQkGTzQ%2F0o2cpcUNPtuLtoWHbhTGf0%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;523&quot; height=&quot;494&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 컴퓨터 껐다 켜기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE1pb5/btsKkjIt3H2/CxMF3eE3iT4kVOggEJDzKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE1pb5/btsKkjIt3H2/CxMF3eE3iT4kVOggEJDzKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE1pb5/btsKkjIt3H2/CxMF3eE3iT4kVOggEJDzKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE1pb5%2FbtsKkjIt3H2%2FCxMF3eE3iT4kVOggEJDzKk%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;286&quot; height=&quot;66&quot; data-origin-width=&quot;286&quot; data-origin-height=&quot;66&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Python</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/19</guid>
      <comments>https://phomsique.tistory.com/19#entry19comment</comments>
      <pubDate>Sat, 26 Oct 2024 23:42:32 +0900</pubDate>
    </item>
    <item>
      <title>백준 1620) 해시 함수와 자료구조</title>
      <link>https://phomsique.tistory.com/18</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: left;&quot;&gt;1. 문자열 해시 함수: unordered_map&amp;lt;string, int, '문자열 해시 함수'&amp;gt; poketmon_dogam;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;균일한 해시 분포&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;해시 충돌을 줄여 unordered_map 성능 향상&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;충돌 적음 -&amp;gt;&amp;nbsp; 버킷 체인 길이 줄어듦 -&amp;gt; 메모리 사용량 감소&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문자열 해시 함수&lt;br /&gt;: unordered_map의 세 번째 템플릿 인자로 사용자 정의 해시 함수를 지정할 때&lt;br /&gt;보통 함수 객체(functor)를 정의하는 구조체(struct)를 사용&lt;br /&gt;*** &lt;b&gt;operator()를 오버로딩해서 해시 함수의 동작을 정의&lt;br /&gt;&lt;/b&gt;따라서, 커스텀 해시 함수를 정의하면 기본 해시 함수 대신 사용 가&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729527042675&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# DJB2
struct StringHash {
    size_t operator()(const string&amp;amp; s) const {
        size_t hash = 5381;
        for (char c : s)
            hash = ((hash &amp;lt;&amp;lt; 5) + hash) + c;
        return hash;
    }
};

// 사용 예:
unordered_map&amp;lt;string, int, StringHash&amp;gt; my_map;
-------------------------------------------------------------------------------------------
# FNV-1a
struct FNV1a {
    size_t operator()(const std::string&amp;amp; s) const {
        size_t hash = 14695981039346656037ULL;
        for (char c : s) {
            hash ^= static_cast&amp;lt;size_t&amp;gt;(c);
            hash *= 1099511628211ULL;
        }
        return hash;
    }
};
// 사용 예:
unordered_map&amp;lt;string, int, FNV-1a&amp;gt; my_map;
-------------------------------------------------------------------------------------------
# Murmur2
struct MurmurHash2 {
    size_t operator()(const string&amp;amp; s) const {
        const unsigned int m = 0x5bd1e995;
        const int r = 24;
        unsigned int seed = 0;
        unsigned int len = s.length();
        const unsigned char* data = (const unsigned char*)s.c_str();

        unsigned int h = seed ^ len;

        while (len &amp;gt;= 4) {
            unsigned int k = *(unsigned int*)data;

            k *= m;
            k ^= k &amp;gt;&amp;gt; r;
            k *= m;

            h *= m;
            h ^= k;

            data += 4;
            len -= 4;
        }

        switch (len) {
        case 3:
            h ^= data[2] &amp;lt;&amp;lt; 16;
        case 2:
            h ^= data[1] &amp;lt;&amp;lt; 8;
        case 1:
            h ^= data[0];
            h *= m;
        };

        h ^= h &amp;gt;&amp;gt; 13;
        h *= m;
        h ^= h &amp;gt;&amp;gt; 15;

        return h;
    }
};
// 사용 예:
unordered_map&amp;lt;string, int, MurmurHash2&amp;gt; my_map;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: left;&quot;&gt;2. unordered_map과 vector 조합:&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;unordered_map은 문자열을 키로, 정수를 값으로 저장합니다. 이는 문자열 검색에 O(1) 시간 복잡도를 제공합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;vector는 정수 인덱스로 문자열에 직접 접근할 수 있어, 정수 입력에 대해 O(1) 시간 복잡도로 검색할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;이 조합은 양방향 검색을 효율적으로 수행할 수 있게 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: left;&quot;&gt;3. 메모리 효율성:&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;vector는 연속된 메모리 공간을 사용하기 때문에 캐시 효율성이 좋음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;unordered_map은 해시 테이블을 사용하여 빠른 검색을 제공하며, 커스텀 해시 함수로 메모리 사용을 최적화 가능&lt;/span&gt;&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;blockquote data-ke-style=&quot;style2&quot;&gt;unordered_map template&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729527725123&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;template &amp;lt;class Key,    // 키 형식 : key_tyep
        class Ty,	// 매핑된 형식 : mapped_type
        class Hash = std::hash&amp;lt;Key&amp;gt;,	// 해시 함수 개체 형식 : hasher
        class Pred = std::equal_to&amp;lt;Key&amp;gt;,// 같음 비교 함수 개체 형식 : key_equal
        class Alloc = std::allocator&amp;lt;std::pair&amp;lt;const Key, Ty&amp;gt;&amp;gt;&amp;gt;	// 할당자 클래스 : allocator_type
class unordered_map;&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;</description>
      <category>Algorithm</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/18</guid>
      <comments>https://phomsique.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 22 Oct 2024 01:36:30 +0900</pubDate>
    </item>
    <item>
      <title>C++ getline() 종류</title>
      <link>https://phomsique.tistory.com/17</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;[ getline 함수 동작 ]&lt;/b&gt;&lt;br /&gt;1. 개행문자('\n')를 만날 때까지 입력 스트림에서 문자들을 읽는다.&lt;br /&gt;2. 개행문자를 읽지만, 이를 결과 문자열에 저장하지 않는다.&lt;br /&gt;3. 개행문자는 입력 스트림에서 제거된다. (즉, 버퍼에 남지 않음).&lt;br /&gt;4. 결과 문자열에는 개행문자 직전까지의 문자들만 저장된다.&lt;br /&gt;&lt;br /&gt;*** cin 은 공백을 무시하지만 버퍼에 남기기 때문에&lt;br /&gt;int num;&lt;br /&gt;cin &amp;gt;&amp;gt; num;&lt;br /&gt;와 같이 getline 사용하기 전에 cin을 썼다면&lt;br /&gt;cin.ignore(), cin.get() 와 같은 함수를 사용하면 된다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;*** 모든 입력을&amp;nbsp; 'getline()' 으로 받고&lt;br /&gt;필요시 형변환하는 것도 하나의 방법이다.&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729357243842&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;string input;
getline(cin, input);
num = stoi(input);  // string to int
getline(cin, str);&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;# getline 함수 모음&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;std::getline (C++ 표준 라이브러리) :&lt;br /&gt;string 객체 사용&lt;br /&gt;*** 공백 포함 가능 / 기본적으로 개행 문자('\n')까지 읽음 / 지정 구분자 읽기 가능&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729355846710&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
istream&amp;amp; getline (istream&amp;amp; is, string&amp;amp; str, char delim);
istream&amp;amp; getline (istream&amp;amp; is, string&amp;amp; str);
---------------------------------------------------------
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
using namespace std;

int main() {
    string line;
    cout &amp;lt;&amp;lt; &quot;Enter a line of text: &quot;;
    getline(cin, line);
    cout &amp;lt;&amp;lt; &quot;You entered: &quot; &amp;lt;&amp;lt; line &amp;lt;&amp;lt; endl;
    return 0;
}
---------------------------------------------------------
string line;
getline(cin, line); // 개행 문자까지 공백 포함하여 읽음
getline(cin, line, ','); // 쉼표까지 공백 포함하여 읽음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;std::cin.getline (C++ 표준 입력 스트림) :&lt;br /&gt;char 배열 사용&lt;br /&gt;*** 공백 포함 가능, 기본적으로 개행 문자('\n')까지 읽을 수 있음&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729355860840&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
istream&amp;amp; getline (char* s, streamsize n);
istream&amp;amp; getline (char* s, streamsize n, char delim);
------------------------------------------------------
#include &amp;lt;iostream&amp;gt;
using namespace std;

int main() {
    char name[50];
    cout &amp;lt;&amp;lt; &quot;Enter your name: &quot;;
    cin.getline(name, 50);
    cout &amp;lt;&amp;lt; &quot;Hello, &quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; &quot;!&quot; &amp;lt;&amp;lt; endl;
    return 0;
}
------------------------------------------------------
char name[50];
cin.getline(name, 50); // 개행 문자까지 공백 포함하여 읽음
cin.getline(name, 50, ','); // 쉼표까지 공백 포함하여 읽음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;ifstream::getline (파일 입력 스트림) : &lt;br /&gt;파일에서 한 줄씩 읽을 때 사용&lt;br /&gt;*** 공백 포함 가능, 기본적으로 개행 문자('\n')까지 읽음, 지정 구분자 읽기 가능&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729355875628&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;fstream&amp;gt;
ifstream&amp;amp; getline (char* s, streamsize n);
ifstream&amp;amp; getline (char* s, streamsize n, char delim);
-------------------------------------------------------
#include &amp;lt;fstream&amp;gt;
#include &amp;lt;iostream&amp;gt;
using namespace std;

int main() {
    ifstream file(&quot;example.txt&quot;);
    char buffer[100];
    
    if (file.is_open()) {
        while (file.getline(buffer, 100)) {
            cout &amp;lt;&amp;lt; buffer &amp;lt;&amp;lt; endl;
        }
        file.close();
    }
    return 0;
}
-------------------------------------------------------
ifstream file(&quot;example.txt&quot;);
char buffer[100];
file.getline(buffer, 100); // 개행 문자까지 공백 포함하여 읽음&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;stringstream::getline (문자열 스트림) :&lt;br /&gt;문자열을 특정 구분자로 나눌 때 사용&lt;/blockquote&gt;
&lt;pre id=&quot;code_1729355881620&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;sstream&amp;gt;
stringstream&amp;amp; getline (string&amp;amp; str, char delim);
stringstream&amp;amp; getline (string&amp;amp; str);
--------------------------------------------------
#include &amp;lt;sstream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

int main() {
    string input = &quot;apple,banana,cherry&quot;;
    stringstream ss(input);
    string item;

    while(getline(ss, item, ',')) {
        cout &amp;lt;&amp;lt; item &amp;lt;&amp;lt; endl;
    }

    return 0;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>C&amp;amp;C++</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/17</guid>
      <comments>https://phomsique.tistory.com/17#entry17comment</comments>
      <pubDate>Sun, 20 Oct 2024 02:02:52 +0900</pubDate>
    </item>
    <item>
      <title>@ModelAttribute와 @PathVariable의 차이</title>
      <link>https://phomsique.tistory.com/16</link>
      <description>&lt;ol style=&quot;list-style-type: decimal; background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;@ModelAttribute&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;주로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;POST 요청&lt;/b&gt;&lt;/span&gt;&lt;span&gt;에서 사용됨&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;client가 보낸 form 데이터를 객체로 바인딩할 때 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ex) 사용자가 입력한 게시글 정보를 BoardDTO 객체로 변환하여 처리&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;- 요약 :&amp;nbsp; &lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: left;&quot;&gt;POST 요청에서 @ModelAttribute를 사용하여 데이터를 객체로 바인딩&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;@PathVariable&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;주로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;GET 요청&lt;/b&gt;&lt;/span&gt;&lt;span&gt;에서 사용됨&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;URL 경로에서 변수를 추출할 때 사용&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ex) 특정 게시글을 삭제 or 조회할 때 URL에 포함된 ID 값 가져오기&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;- 요약 : &lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); color: oklch(0.304 0.04 213.681); text-align: left;&quot;&gt;GET 요청에서 @PathVariable을 사용하여 URL에서 변수를 추출&lt;/span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Server/Spring</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/16</guid>
      <comments>https://phomsique.tistory.com/16#entry16comment</comments>
      <pubDate>Fri, 18 Oct 2024 22:03:26 +0900</pubDate>
    </item>
    <item>
      <title>mysql 사용자 생성</title>
      <link>https://phomsique.tistory.com/15</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;CREATE USER '유저이름'@'localhost' IDENTIFIED BY '비밀번호';&lt;/b&gt;&lt;br /&gt;-&amp;gt; 실행 중인 컴퓨터에서만 접속, 로컬에서 작업&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;283&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbIkqe/btsJ2HXoOYB/diyX1IiAZcWE6KR9d3XAq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbIkqe/btsJ2HXoOYB/diyX1IiAZcWE6KR9d3XAq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbIkqe/btsJ2HXoOYB/diyX1IiAZcWE6KR9d3XAq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbIkqe%2FbtsJ2HXoOYB%2FdiyX1IiAZcWE6KR9d3XAq0%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;575&quot; height=&quot;283&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;283&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>DB/MySQL</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/15</guid>
      <comments>https://phomsique.tistory.com/15#entry15comment</comments>
      <pubDate>Sat, 12 Oct 2024 02:20:13 +0900</pubDate>
    </item>
    <item>
      <title>명령어</title>
      <link>https://phomsique.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터베이스 관련 명령어&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;MySQL 클라이언트에 접속&amp;nbsp; : mysql -u 'username' -p&lt;br /&gt;데이터베이스 목록 조회&amp;nbsp; : SHOW DATABASES; // MySQL 서버에 존재하는 모든 데이터베이스의 목록을 보여줌&lt;br /&gt;데이터베이스 삭제 : CREATE DATABASE db_name;&lt;br /&gt;데이터베이스 선택 : USE db_name; &lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;테이블 관련 명령어&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;테이블 목록 조회 : SHOW TABLES; &lt;br /&gt;테이블 생성 : CREATE TABLE table_name ( column1 datatype, column2 datatype, ... ); &lt;br /&gt;테이블 삭제 : DROP TABLE table_name; &lt;br /&gt;테이블 구조 조회 : DESCRIBE table_name; &lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;데이터 조작 명령어&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;데이터 삽입 : INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); &lt;br /&gt;데이터 조회 : SELECT * FROM table_name; SELECT column1, column2 FROM table_name WHERE condition; &lt;br /&gt;데이터 수정 : UPDATE table_name SET column1 = value1 WHERE condition; &lt;br /&gt;데이터 삭제 : DELETE FROM table_name WHERE condition; &lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;기타 명령어&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;현재 선택된 데이터베이스 확인 : SELECT DATABASE(); &lt;br /&gt;현재 사용자 확인 : SELECT USER(); &lt;br /&gt;세션 종료 : EXIT; &lt;br /&gt;쿼리 기록 확인 : SHOW PROCESSLIST; &lt;br /&gt;명령어 기록 지우기 : FLUSH HOSTS; &lt;/blockquote&gt;</description>
      <category>DB/MySQL</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/14</guid>
      <comments>https://phomsique.tistory.com/14#entry14comment</comments>
      <pubDate>Sat, 12 Oct 2024 02:03:43 +0900</pubDate>
    </item>
    <item>
      <title>56. Merge Intervals</title>
      <link>https://phomsique.tistory.com/12</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;처음으로 작성한 코드&lt;br /&gt;Time: 23 ms (61.21%), Space: 22.9 MB (87.58%)&lt;/blockquote&gt;
&lt;pre id=&quot;code_1727189164382&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
public:
    vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; merge(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;&amp;amp; intervals) {
        vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; answer;

        sort(intervals.begin(), intervals.end());
        int left = intervals[0][0], right = intervals[0][1];
        answer.push_back(intervals[0]);
        for (int i = 1; i &amp;lt; intervals.size(); i++) {
            // intervals[i][0]이 right보다 크면 answer.push_back(intervals[i]) 하고, left&amp;amp;right 초기화
            // intervals[i][0]이 right보다 작거나 같으면 넘어가기 (아래로)
            // intervals[i][1]이 right보다 크면 right = intervals[i][1], answer 마지막 원소 right 값 갱신
            if (right &amp;lt; intervals[i][0]) {
                answer.push_back(intervals[i]);
                left = intervals[i][0];
                right = intervals[i][1];
            }

            right = max(right, intervals[i][1]);
            answer.back()[1] = right;
        }

        return answer;
    }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;두 번째 코드&lt;br /&gt;Time: 15 ms (96.72%), Space: 23 MB (37.6%)&lt;/blockquote&gt;
&lt;pre id=&quot;code_1727190031876&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Solution {
public:
    vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; merge(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt;&amp;amp; intervals) {
        vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; answer;
        sort(intervals.begin(), intervals.end());
        int size = intervals.size();
        for (int i = 0; i &amp;lt; size; i++) {
            if (answer.empty() || answer.back()[1] &amp;lt; intervals[i][0]) {
                answer.push_back(intervals[i]);
            }
            else {
                answer.back()[1] = max(answer.back()[1], intervals[i][1]);
            }
        }

        return answer;
    }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;(1) Time: 15 ms (96.72%), Space: 23 MB (37.6%)&lt;br /&gt;&lt;br /&gt;int size = intervals.size();&lt;br /&gt;for (int i = 0; i &amp;lt; &lt;b&gt;size&lt;/b&gt;; i++) { }&lt;br /&gt;&lt;br /&gt;(2) Time: 30 ms (19.53%), Space: 23 MB (72.73%)&lt;br /&gt;&lt;br /&gt;for (int i = 0; i &amp;lt; intervals.&lt;b&gt;size()&lt;/b&gt;; i++) { }&lt;br /&gt;&lt;br /&gt;=&amp;gt; 생각보다 많이 남 ㅜㅜ&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm/LeetCode</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/12</guid>
      <comments>https://phomsique.tistory.com/12#entry12comment</comments>
      <pubDate>Wed, 25 Sep 2024 00:18:01 +0900</pubDate>
    </item>
    <item>
      <title>C++ &amp;gt; Scope</title>
      <link>https://phomsique.tistory.com/11</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;스코프(scope)&lt;/b&gt; : 변수가 유효한 범위&lt;br /&gt;- 변수의 스코프(scope)는 해당 변수가 선언된 블록에서 유효하다. (블록은 중괄호({ })로 표시됨)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;문제가 된 코드 : switch문 내에서 변수 itr을 정의함&lt;/blockquote&gt;
&lt;pre id=&quot;code_1711001733721&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;cmath&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int main() {
    enum {ADD = 1, ERASE, PRINT};
    map&amp;lt;string, int&amp;gt; student;
    int n, order, score;
    string name;

    cin &amp;gt;&amp;gt; n;
    for (int i = 0; i &amp;lt; n; i++) {
        cin &amp;gt;&amp;gt; order &amp;gt;&amp;gt; name;
        
        switch(order) {
            case ADD:
                cin &amp;gt;&amp;gt; score;
                auto itr = student.find(name);	// error
                if (itr != student.end())
                    itr-&amp;gt;second += score;
                else
                    student.insert(make_pair(name, score));
                break;
            case ERASE:
                student.erase(name);
                break;
            case PRINT:
                auto itr = student.find(name);	// error
                if (itr != student.end())
                    cout &amp;lt;&amp;lt; itr-&amp;gt;second &amp;lt;&amp;lt; '\n';
                else
                    cout &amp;lt;&amp;lt; &quot;0\n&quot;;
                break;
        }
    }
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;※ C++의 스코프 규칙을 어김 (잘못된 접근)&lt;br /&gt;&lt;br /&gt;** 컴파일러가 오류를 발생한 이유 **&lt;br /&gt;: scope 규칙에 따라 한 블록 안에서 선언한 변수는 그 블록 범위 안에서 살아있어야 하는데 switch의 어떤 case안에서 변수를 선언하면 그 케이스 레이블에서만 살아있게 되니까 switch는 전체가 한 블록인데 스코프 규칙을 어겨서 컴파일러가 에러 띄운 것&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;수정한 코드&lt;/blockquote&gt;
&lt;pre id=&quot;code_1711006171127&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;cmath&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;set&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

int main() {
    enum {ADD = 1, ERASE, PRINT};
    map&amp;lt;string, int&amp;gt; student;
    int n, order, score;
    string name;

    cin &amp;gt;&amp;gt; n;
    for (int i = 0; i &amp;lt; n; i++) {
        cin &amp;gt;&amp;gt; order &amp;gt;&amp;gt; name;
        auto itr = student.find(name);	// 선언을 switch문 밖에서 함
        
        switch (order) {
            case ADD:
                cin &amp;gt;&amp;gt; score;
                if (itr != student.end())
                    itr-&amp;gt;second += score;
                else
                    student.insert(make_pair(name, score));
                break;
            case ERASE:
                student.erase(name);
                break;
            case PRINT:
                if (itr != student.end())
                    cout &amp;lt;&amp;lt; itr-&amp;gt;second &amp;lt;&amp;lt; '\n';
                else
                    cout &amp;lt;&amp;lt; &quot;0\n&quot;;
                break;
        }
    }
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;C++ &amp;gt; Control Structure&lt;br /&gt;: &lt;/b&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;Sequence Structure, Selection Structure, Loop Structure&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. Sequence Structure(순차 구조) : linear-instruction&lt;br /&gt;- 조건문(conditional statements), 반복문(loop)이 없고, 코드가 순차적으로 실행되는 구조&lt;br /&gt;&lt;br /&gt;2. Selection Structure(선택 구조) : if-else문, switch문&lt;br /&gt;- 특정 조건이 충족되었을 때, 프로그램의 흐름을 특정 코드 블록으로 전환하는 것&lt;br /&gt;&lt;br /&gt;▶ if-else와 switch 문의 차이점&lt;br /&gt;둘 다 선택 문이며 특정 조건이 충족될 때 프로그램 흐름을 특정 문 블록으로 전송하는 데 사용하지만,&lt;br /&gt;a) if-else문 : equality와 logical expression 모두 검사 가능&lt;br /&gt;- integers, floating-point values, characters, booleans, etc.&lt;br /&gt;&lt;br /&gt;b) switch문 : equality만 검사&lt;br /&gt;- integer or&amp;nbsp;character&amp;nbsp;데이터 타입&lt;br /&gt;&lt;br /&gt;3. Loop Structure(반복 구조) : while문, do-while문, for문&lt;br /&gt;&lt;br /&gt;(출처) https://www.scaler.com/topics/control-structure-in-cpp/&lt;/blockquote&gt;</description>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/11</guid>
      <comments>https://phomsique.tistory.com/11#entry11comment</comments>
      <pubDate>Thu, 21 Mar 2024 16:46:35 +0900</pubDate>
    </item>
    <item>
      <title>Unity &amp;gt; Raycast</title>
      <link>https://phomsique.tistory.com/10</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;1. Layer 분리(bit mask)&lt;br /&gt;2. 원하는 대상만 Raycasting 하도록 최적화&lt;br /&gt;* Raycasting은 부하를 많이 주는 작업이기 때문에 연산 과부화 줄이는 것이 필요&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Unity</category>
      <author>Hamplz</author>
      <guid isPermaLink="true">https://phomsique.tistory.com/10</guid>
      <comments>https://phomsique.tistory.com/10#entry10comment</comments>
      <pubDate>Tue, 12 Mar 2024 14:52:46 +0900</pubDate>
    </item>
  </channel>
</rss>