<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Corn/sec</title>
    <link>https://chodang-corn.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Wed, 1 Jul 2026 15:33:43 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Corn/sec</managingEditor>
    <image>
      <title>Corn/sec</title>
      <url>https://tistory1.daumcdn.net/tistory/6854705/attach/4acac5858d454ad9bc61841434325d6d</url>
      <link>https://chodang-corn.tistory.com</link>
    </image>
    <item>
      <title>[Pandas] Pandas reindex() 메서드 사용법 정리</title>
      <link>https://chodang-corn.tistory.com/19</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas에서는 DataFrame이나 Series 객체의 인덱스를 새롭게 정의하거나 순서를 변경하고자 할 때 &lt;code&gt;reindex()&lt;/code&gt; 메서드를 사용합니다. 이 메서드는 데이터를 새 인덱스 구조에 맞게 재배열하거나, 기존에 없던 인덱스를 추가하여 결측값을 채우는 데에 유용합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 개요&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;reindex()&lt;/code&gt;는 다음과 같은 상황에서 활용할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 인덱스의 순서를 사용자가 지정한 대로 변경하고 싶을 때&lt;/li&gt;
&lt;li&gt;누락된 인덱스를 추가하고 해당 항목을 &lt;code&gt;NaN&lt;/code&gt;으로 채우고 싶을 때&lt;/li&gt;
&lt;li&gt;특정 인덱스만 유지하고 나머지는 제거하고자 할 때&lt;/li&gt;
&lt;/ul&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;&lt;b&gt;2. 기본 예제&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;import pandas as pd

df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie'],
    'score': [85, 90, 95]
}, index=['a', 'b', 'c'])

df_reindexed = df.reindex(['c', 'a', 'b', 'd'])
print(df_reindexed)&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;출력 결과:&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 25.4651%; height: 167px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.2237%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 34.7032%;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 36.073%;&quot;&gt;score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.2237%;&quot;&gt;c&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 34.7032%;&quot;&gt;Charlie&lt;/td&gt;
&lt;td style=&quot;width: 36.073%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;95.0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.2237%;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;width: 34.7032%;&quot;&gt;Alice&lt;/td&gt;
&lt;td style=&quot;width: 36.073%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;85.0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.2237%;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;width: 34.7032%;&quot;&gt;Bob&lt;/td&gt;
&lt;td style=&quot;width: 36.073%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;90.0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.2237%;&quot;&gt;d&lt;/td&gt;
&lt;td style=&quot;width: 34.7032%;&quot;&gt;NaN&lt;/td&gt;
&lt;td style=&quot;width: 36.073%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;NaN&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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;code&gt;['c', 'a', 'b', 'd']&lt;/code&gt; 순서로 인덱스를 새롭게 지정하면, 기존의 데이터가 그 순서대로 재배열됩니다.&lt;/li&gt;
&lt;li&gt;존재하지 않던 &lt;code&gt;'d'&lt;/code&gt; 인덱스는 &lt;code&gt;NaN&lt;/code&gt;으로 채워집니다.&lt;/li&gt;
&lt;/ul&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;&lt;b&gt;3. 일부 인덱스만 지정한 경우&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;df.reindex(['a', 'c'])&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 코드는 'a'와 'c' 인덱스만 유지하며, 존재하던 'b'는 제거됩니다.&lt;/li&gt;
&lt;/ul&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;&lt;b&gt;4. 인덱스를 생략한 경우&lt;/b&gt;&lt;/h2&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;df.reindex()&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;인덱스를 명시하지 않고 reindex()를 호출하면 아무런 변화도 일어나지 않습니다. 새로운 인덱스 정보가 없기 때문에 원본 DataFrame이 그대로 반환됩니다.&lt;/li&gt;
&lt;/ul&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;&lt;b&gt;5. 추가 옵션&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;reindex()&lt;/code&gt; 메서드는 다음과 같은 인자를 함께 사용할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;fill_value&lt;/code&gt;: 새롭게 추가된 인덱스에 대해 결측값 대신 특정 값을 채움&lt;/li&gt;
&lt;li&gt;&lt;code&gt;method&lt;/code&gt;: 시계열 데이터에 대해 &lt;code&gt;'ffill'&lt;/code&gt;(앞의 값으로 채우기), &lt;code&gt;'bfill'&lt;/code&gt;(뒤의 값으로 채우기) 등의 보간 방법 지정 가능&lt;/li&gt;
&lt;li&gt;df.reindex(['a', 'b', 'c', 'd'], fill_value=0)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;6. 관련 메서드와의 비교&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;reindex()&lt;/code&gt;와 비슷한 기능을 제공하는 다른 메서드들과의 차이점은 다음과 같습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 78px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;메서드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 21px;&quot;&gt;사용 목적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px;&quot;&gt;&lt;span style=&quot;background-color: #e6f5ff; color: #333333; text-align: start;&quot;&gt;reindex()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px;&quot;&gt;사용자가 지정한 인덱스 순서에 맞춰 데이터를 재배열&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 23px;&quot;&gt;순서를 직접 지정하거나, 새로운 인덱스를 추가할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #e6f5ff; color: #333333; text-align: start;&quot;&gt;sort_index()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;인덱스를 기준으로 정렬 (기본은 오름차순)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;인덱스 순서대로 정렬하고 싶을 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&lt;span style=&quot;background-color: #e6f5ff; color: #333333; text-align: start;&quot;&gt;reset_index()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;기존 인덱스를 열로 이동시키고 기본 숫자 인덱스로 초기화&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 예시&lt;/p&gt;
&lt;pre class=&quot;sas&quot;&gt;&lt;code&gt;df.sort_index()         # 인덱스를 기준으로 정렬
df.reset_index()        # 인덱스를 열로 이동하고 0부터 다시 인덱싱&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;7. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas의 &lt;code&gt;reindex()&lt;/code&gt; 메서드는 인덱스를 직접 지정하여 데이터 구조를 유연하게 재구성할 수 있는 강력한 도구입니다. 단순한 정렬을 원할 경우에는 &lt;code&gt;sort_index()&lt;/code&gt;, 인덱스를 초기화하고 싶을 경우에는 &lt;code&gt;reset_index()&lt;/code&gt;와 함께 사용하시면 목적에 따라 보다 효율적으로 데이터를 다루실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 원하는 인덱스 구조로 재정렬하거나, 누락된 항목을 포함해 전체 구조를 통일하고자 하신다면 &lt;code&gt;reindex()&lt;/code&gt;를 적극적으로 활용해 보시기 바랍니다.&lt;/p&gt;</description>
      <category>데이터 분석</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/19</guid>
      <comments>https://chodang-corn.tistory.com/19#entry19comment</comments>
      <pubDate>Fri, 30 May 2025 15:22:51 +0900</pubDate>
    </item>
    <item>
      <title>[ 주저리 일상 ] GPT에게 나의 새로운 면을 알려달라 하기</title>
      <link>https://chodang-corn.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;인스타 릴스를 무심코 보다가 @ai_jachung 님의 영상 중 &quot;GPT를 통해 당신 자신도 모르는 당신을 찾는 프롬프트 10가지&quot;라는 영상이 있다.&amp;nbsp;&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: #9d9d9d;&quot;&gt;그중 &quot; 너와 내가 지금까지 상호작용한 대화 모든 것을 바탕으로, 내가 모를 수도 있는 나 자신에 대해 말해줄 수 있는 장점 단점은 무엇인가요? 5000자로 대답.&quot;을 시도해봤는데,&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: #9d9d9d;&quot;&gt;생각보다 너무 따스한 말을 해줘서 울컥했다.&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: #9d9d9d;&quot;&gt;이 자식, 자존감 메이커였잖아? &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: #9d9d9d;&quot;&gt;스스로 고민하던 부분을 단점이 아닌, 강점이라 말해주고&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: #9d9d9d;&quot;&gt;단점이라고 생각하지 못했던 것도 우려점을 구체적으로 말해줘서 유의할 수 있게 됐다. 의외로 도움이 되네 이게.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;169&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;네가 보여준 정보와 우리가 나눈 대화를 바탕으로 하면, 너는 이미 스스로를 많이 객관화해서 보고 있는 편이야. 하지만, 내가 너의 이야기와 행동 패턴을 분석한 결과, 너 스스로 인식하지 못했을 수도 있는 장점과 단점이 보였어. 깊이 있는 통찰을 바탕으로 정리해볼게. 너에 대한 새로운 시각이 되길 바라.&lt;/p&gt;
&lt;hr data-end=&quot;174&quot; data-start=&quot;171&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;212&quot; data-start=&quot;176&quot; data-ke-size=&quot;size26&quot;&gt;1. 네가 스스로 인식하지 못했을 가능성이 있는 &lt;b&gt;장점&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;257&quot; data-start=&quot;214&quot; data-ke-size=&quot;size23&quot;&gt;1) &lt;b&gt;너는 &amp;lsquo;탐구&amp;rsquo;와 &amp;lsquo;실행&amp;rsquo;의 균형을 맞출 줄 아는 사람이다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;369&quot; data-start=&quot;258&quot; data-ke-size=&quot;size16&quot;&gt;많은 사람들이 &amp;lsquo;탐구&amp;rsquo;에만 머물거나 &amp;lsquo;행동&amp;rsquo;만 하느라 깊이를 놓치기 쉬워. 하지만 너는 아이디어와 개념을 탐구하는 동시에, 그것을 현실로 끌어내서 실체화하는 실행력을 가지고 있어.&lt;br /&gt;예를 들어,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;788&quot; data-start=&quot;370&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;458&quot; data-start=&quot;370&quot;&gt;너는 데이터를 분석하는 과정에서 단순히 모델을 개발하는 것에 그치지 않고, 그걸 &lt;b&gt;사용자 중심 서비스로 연결&lt;/b&gt;하는 비즈니스 마인드를 가지고 있었어.&lt;/li&gt;
&lt;li data-end=&quot;788&quot; data-start=&quot;459&quot;&gt;우리 FIS에서 했던 &amp;lsquo;우대리&amp;rsquo; 프로젝트를 보면, LLM 기반 챗봇을 단순히 구현하는 게 아니라, &lt;b&gt;Airflow를 통한 파이프라인 구축&lt;/b&gt;, &lt;b&gt;데이터 자동화&lt;/b&gt;, &lt;b&gt;실제 사용자 환경에서의 효용성&lt;/b&gt;까지 고민했잖아.&lt;br /&gt;이건 많은 데이터 분석가나 개발자가 놓치는 부분이야. 연구는 깊이 있게 하지만, 사용자 입장에서의 실용성을 신경 쓰지 않거나, 반대로 실용성만 좇다가 기술적 완성도가 낮아지는 경우가 많거든.&lt;br /&gt;그런데 너는 &lt;b&gt;탐구와 실행을 동시에, 그리고 균형 있게 가져가는 역량&lt;/b&gt;이 있어.&lt;br /&gt;이건 너 스스로도 충분히 인지하지 못했을 수도 있지만, 상당히 드문 강점이야.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;793&quot; data-start=&quot;790&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;839&quot; data-start=&quot;795&quot; data-ke-size=&quot;size23&quot;&gt;2) &lt;b&gt;조직과 팀에 긍정적인 에너지를 주는 &amp;lsquo;촉진자&amp;rsquo; 역할을 한다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;937&quot; data-start=&quot;840&quot; data-ke-size=&quot;size16&quot;&gt;네가 팀 프로젝트에서 보여준 역할을 보면, &lt;b&gt;주도적으로 관리하고 설계하는 리더&lt;/b&gt;이기도 하지만, 팀원 간의 &lt;b&gt;다리 역할&lt;/b&gt;도 자연스럽게 수행하고 있어.&lt;br /&gt;예를 들어,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1263&quot; data-start=&quot;938&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;997&quot; data-start=&quot;938&quot;&gt;우리 FIS 세미나에서 너는 팀 내 갈등을 &amp;lsquo;구성원의 제안을 수용하고 반영하는 방식&amp;rsquo;으로 해결했지.&lt;/li&gt;
&lt;li data-end=&quot;1263&quot; data-start=&quot;998&quot;&gt;해외진출 프로젝트에서는 상사와 고객사의 입장을 동시에 고려하고, 자료와 근거를 통해 &lt;b&gt;이해시키고 설득하는 과정&lt;/b&gt;을 거쳤어.&lt;br /&gt;이런 행동들은 사실 &lt;b&gt;팀 내에서 &amp;lsquo;조율자&amp;rsquo; 혹은 &amp;lsquo;촉진자&amp;rsquo;의 역할&lt;/b&gt;을 자처하고 있다는 의미야.&lt;br /&gt;팀 전체의 속도를 늦추지 않고 오히려 &lt;b&gt;앞으로 가게 하는 사람&lt;/b&gt;이라는 거지.&lt;br /&gt;이런 유형의 사람은 리더가 될 수도 있지만, 그보다 더 중요한 건 &lt;b&gt;조직의 분위기와 방향을 세팅하는 사람&lt;/b&gt;이야.&lt;br /&gt;너는 그걸 자연스럽게 해내고 있어.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1268&quot; data-start=&quot;1265&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1313&quot; data-start=&quot;1270&quot; data-ke-size=&quot;size23&quot;&gt;3) &lt;b&gt;성취에 대한 집착보다는 &amp;lsquo;완성도와 지속가능성&amp;rsquo;을 중시한다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1389&quot; data-start=&quot;1314&quot; data-ke-size=&quot;size16&quot;&gt;많은 사람들이 결과물에만 집착하는 반면, 너는 &amp;lsquo;이게 얼마나 지속가능할까?&amp;rsquo;, &amp;lsquo;얼마나 구조가 탄탄한가?&amp;rsquo;를 생각하는 경향이 보여.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1784&quot; data-start=&quot;1390&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1505&quot; data-start=&quot;1390&quot;&gt;예를 들어 OpenDART 자동화 프로젝트에서도, 그냥 데이터를 받아오는 걸 넘어서 &lt;b&gt;Airflow 기반의 데이터 수집과 저장을 자동화&lt;/b&gt;하고, 향후에도 지속적으로 활용할 수 있는 구조를 고민했지.&lt;/li&gt;
&lt;li data-end=&quot;1784&quot; data-start=&quot;1506&quot;&gt;우리 FIS &amp;lsquo;우대리&amp;rsquo;도 단순한 챗봇이 아니라, &lt;b&gt;LLM-RAG 구조를 탄탄히 다지고 벡터DB를 최적화해서 재사용 가능하도록 만들었어.&lt;/b&gt;&lt;br /&gt;이런 접근 방식은 &lt;b&gt;장기적인 안정성과 서비스의 확장성을 고민하는 사람&lt;/b&gt;이라는 뜻이야.&lt;br /&gt;네가 말은 &amp;lsquo;집요하게 성과를 냈다&amp;rsquo;고 하지만, 사실 너는 &lt;b&gt;지속가능성&lt;/b&gt;과 &lt;b&gt;탄탄한 기반&lt;/b&gt;을 더 중요하게 생각하고 있어.&lt;br /&gt;그래서 너는 &amp;lsquo;빠른 성과&amp;rsquo;가 아니라 &amp;lsquo;올바른 성과&amp;rsquo;를 만들고, 그걸 &lt;b&gt;반복 가능한 시스템으로 전환하는 데에 강점&lt;/b&gt;이 있어.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;1789&quot; data-start=&quot;1786&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;1826&quot; data-start=&quot;1791&quot; data-ke-size=&quot;size23&quot;&gt;4) &lt;b&gt;의외로 &amp;lsquo;감성적인 배려심&amp;rsquo;이 깊은 사람이다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;1898&quot; data-start=&quot;1827&quot; data-ke-size=&quot;size16&quot;&gt;표면적으로는 네가 체계적이고 분석적인 성향이 강하게 보이지만, 대화 곳곳에서 &lt;b&gt;상대의 감정을 배려하는 태도&lt;/b&gt;가 묻어나와.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2241&quot; data-start=&quot;1899&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1936&quot; data-start=&quot;1899&quot;&gt;팀원들의 의견을 존중하고, 그들의 기여를 높이 평가하는 태도&lt;/li&gt;
&lt;li data-end=&quot;2241&quot; data-start=&quot;1937&quot;&gt;세미나나 프로젝트에서 누군가 소외되지 않게 하려고 &lt;b&gt;일부러 역할을 나눠주거나, 명확하게 피드백을 주는 방식&lt;/b&gt;&lt;br /&gt;이런 건 단순히 리더십 스킬이 아니라, &lt;b&gt;사람에 대한 관심과 공감 능력&lt;/b&gt;이 있다는 의미야.&lt;br /&gt;특히 &lt;b&gt;비전문가가 이해할 수 있도록 시각화하고, 친절하게 설명하는 태도&lt;/b&gt;는 그저 기능적 친절함이 아니야. 상대방의 입장을 고려해서 &lt;b&gt;불안이나 혼란을 덜어주고 싶은 마음&lt;/b&gt;이 기반에 있어 보여.&lt;br /&gt;그래서 네가 미래에 어떤 리더가 될지는 모르지만, &lt;b&gt;사람을 우선하는 방식으로 팀을 이끌 수 있는 인물&lt;/b&gt;이라는 건 확실해.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2246&quot; data-start=&quot;2243&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;2280&quot; data-start=&quot;2248&quot; data-ke-size=&quot;size26&quot;&gt;2. 네가 자각하지 못했을 가능성이 있는 &lt;b&gt;단점&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;2328&quot; data-start=&quot;2282&quot; data-ke-size=&quot;size23&quot;&gt;1) &lt;b&gt;높은 기준과 완성도를 팀원에게 암묵적으로 요구하는 경향이 있다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2370&quot; data-start=&quot;2329&quot; data-ke-size=&quot;size16&quot;&gt;너는 스스로 기준이 높고, 그걸 지키기 위해 굉장히 노력하는 타입이야.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2768&quot; data-start=&quot;2371&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2390&quot; data-start=&quot;2371&quot;&gt;데이터는 정제돼 있어야 하고&lt;/li&gt;
&lt;li data-end=&quot;2410&quot; data-start=&quot;2391&quot;&gt;파이프라인은 자동화돼야 하고&lt;/li&gt;
&lt;li data-end=&quot;2433&quot; data-start=&quot;2411&quot;&gt;서비스는 사용자 친화적이어야 하고&lt;/li&gt;
&lt;li data-end=&quot;2768&quot; data-start=&quot;2434&quot;&gt;문서는 논리적이어야 하고&lt;br /&gt;너는 이걸 다 해내고 있지만, 다른 사람에게는 그게 &lt;b&gt;암묵적인 기준이 되어 부담을 줄 수도 있어.&lt;/b&gt;&lt;br /&gt;직접적인 지적은 하지 않더라도, &lt;b&gt;너의 완성도와 기준에 못 미치는 것을 보면 &amp;lsquo;왜 저렇게 하지?&amp;rsquo;라는 생각을 할 가능성이 크고&lt;/b&gt;, 그게 표정이나 말투에 묻어날 수 있어.&lt;br /&gt;결과적으로 팀원 입장에서는 네가 친절하고 배려심이 많아도 &lt;b&gt;심리적으로 위축될 수 있는 리스크&lt;/b&gt;가 있어.&lt;br /&gt;너는 &amp;lsquo;기대를 낮출 필요&amp;rsquo;는 없지만, &lt;b&gt;기대치에 대한 명확한 기준을 사전에 공유하고, 부족한 부분은 구체적인 방법을 제시하며 채워주는 방식&lt;/b&gt;을 계속 고민해야 할 거야.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;2773&quot; data-start=&quot;2770&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;2822&quot; data-start=&quot;2775&quot; data-ke-size=&quot;size23&quot;&gt;2) &lt;b&gt;변화에 유연하지만, 때로는 본인이 만든 구조에서 스스로를 가둔다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2952&quot; data-start=&quot;2823&quot; data-ke-size=&quot;size16&quot;&gt;너는 구조화와 체계를 굉장히 잘 만드는 사람이고, 시스템을 기반으로 문제를 해결하려는 경향이 강해.&lt;br /&gt;하지만 때로는 네가 만든 그 &lt;b&gt;체계가 너무 견고해서 새로운 시도나 예외 상황에서 네 스스로 움직임이 제한될 때&lt;/b&gt;가 있어.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3207&quot; data-start=&quot;2953&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3026&quot; data-start=&quot;2953&quot;&gt;예를 들어 데이터 파이프라인을 설계할 때, &amp;lsquo;완전한 자동화&amp;rsquo;를 목표로 하다 보면, 오히려 유연한 임시 대응이 느려질 수 있고&lt;/li&gt;
&lt;li data-end=&quot;3207&quot; data-start=&quot;3027&quot;&gt;너의 사고 방식도 &amp;lsquo;이 단계에서 이걸 해야 한다&amp;rsquo;는 &lt;b&gt;프로세스가 강해서&lt;/b&gt;, 직관적인 접근을 시도하지 않을 때가 있지.&lt;br /&gt;너의 &amp;lsquo;계획적 사고&amp;rsquo;가 너를 안정적으로 만들지만, 때로는 &amp;lsquo;비합리적인 시도&amp;rsquo;나 &amp;lsquo;충동적 결정&amp;rsquo;이 새로운 기회를 만들기도 하거든.&lt;br /&gt;너는 &lt;b&gt;직관을 조금 더 신뢰하는 연습&lt;/b&gt;이 필요할지도 몰라.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3212&quot; data-start=&quot;3209&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3246&quot; data-start=&quot;3214&quot; data-ke-size=&quot;size23&quot;&gt;3) &lt;b&gt;완벽주의에서 오는 에너지 소모가 있다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3345&quot; data-start=&quot;3247&quot; data-ke-size=&quot;size16&quot;&gt;너는 집요하게 결과를 내고, 품질을 끝까지 챙기는 사람이라서, 결과적으로는 성과가 아주 높아.&lt;br /&gt;하지만 스스로에게 &amp;lsquo;이 정도면 충분하다&amp;rsquo;고 말하기 힘든 성향이 있어 보여.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3694&quot; data-start=&quot;3346&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3398&quot; data-start=&quot;3346&quot;&gt;프로젝트에서 역할이 주어지면, &lt;b&gt;범위를 넓혀서 추가적인 가치를 계속 고민&lt;/b&gt;하게 되고&lt;/li&gt;
&lt;li data-end=&quot;3694&quot; data-start=&quot;3399&quot;&gt;문서나 발표 자료도 &amp;lsquo;보기 좋은 수준&amp;rsquo;을 넘어서 &amp;lsquo;구조적으로 완성된 자료&amp;rsquo;로 만드느라 &lt;b&gt;시간과 에너지가 더 들어가&lt;/b&gt;.&lt;br /&gt;너는 이걸 &amp;lsquo;즐긴다&amp;rsquo;고 생각할 수 있지만, 사실은 &lt;b&gt;소모가 크고&lt;/b&gt;, 일정이 겹치거나 몸이 지칠 때 &lt;b&gt;스스로를 컨트롤하기 힘든 상황&lt;/b&gt;이 오기도 해.&lt;br /&gt;그러다 보면 &lt;b&gt;장기적으로 &amp;lsquo;번아웃&amp;rsquo; 위험&lt;/b&gt;이 커질 수 있어.&lt;br /&gt;완성도도 중요하지만, &lt;b&gt;&amp;lsquo;적정 기준&amp;rsquo;을 설정하고 과감히 멈추는 연습&lt;/b&gt;도 필요할 거야.&lt;br /&gt;너는 &lt;b&gt;이미 충분히 잘하고 있다는 사실을 네가 제일 늦게 인정하는 편&lt;/b&gt;이니까.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;3699&quot; data-start=&quot;3696&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-end=&quot;3736&quot; data-start=&quot;3701&quot; data-ke-size=&quot;size23&quot;&gt;4) &lt;b&gt;너무 빠르게 팀을 리딩하려는 조급함이 있다.&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;3816&quot; data-start=&quot;3737&quot; data-ke-size=&quot;size16&quot;&gt;네가 프로젝트를 진행할 때 &lt;b&gt;스케줄 관리와 일정 준수가 철저한 편&lt;/b&gt;인데, 이게 팀원들에겐 &lt;b&gt;심리적 압박으로 작용할 가능성&lt;/b&gt;이 있어.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;4070&quot; data-start=&quot;3817&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;3891&quot; data-start=&quot;3817&quot;&gt;일정이 조금만 밀려도 &lt;b&gt;스스로 보완하거나 혼자 해결하려는 습관&lt;/b&gt;이 있는데, 이게 반복되면 팀원은 책임감을 덜 느낄 수 있고&lt;/li&gt;
&lt;li data-end=&quot;4070&quot; data-start=&quot;3892&quot;&gt;반대로 팀원들에게 자율권을 줘야 하는 상황에서도 &lt;b&gt;기대만큼 결과가 안 나오면 간섭하거나 직접 수정하려는 욕구&lt;/b&gt;가 커질 수 있어.&lt;br /&gt;너는 속도를 맞춰주려는 노력이 필요한 시점이야.&lt;br /&gt;&lt;b&gt;팀이 느리다고 해서 네가 빨라지는 게 아니라&lt;/b&gt;, 그들의 속도가 전체적인 방향성을 만들 수도 있다는 걸 가끔은 잊지 말아줘.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-end=&quot;4075&quot; data-start=&quot;4072&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-end=&quot;4095&quot; data-start=&quot;4077&quot; data-ke-size=&quot;size26&quot;&gt;3. 너라는 사람의 &amp;lsquo;본질&amp;rsquo;&lt;/h2&gt;
&lt;p data-end=&quot;4343&quot; data-start=&quot;4097&quot; data-ke-size=&quot;size16&quot;&gt;너는 &lt;b&gt;철저하게 논리적이지만, 근본은 사람을 향한 애정과 책임감에서 출발하는 사람&lt;/b&gt;이야.&lt;br /&gt;네가 데이터를 다루고, 시스템을 설계하고, 프로젝트를 이끄는 이유는 결국 &lt;b&gt;사람들이 더 나은 선택을 하고, 효율적인 경험을 하도록 돕고 싶어서&lt;/b&gt;야.&lt;br /&gt;스스로는 &lt;b&gt;&amp;lsquo;문제 해결형 인간&amp;rsquo;이라고 생각하겠지만, 실은 &amp;lsquo;문제를 푸는 과정에서 사람을 살피는 인간&amp;rsquo;&lt;/b&gt;이기도 해.&lt;br /&gt;이건 너도 앞으로 더 깊이 탐구할 너만의 성향이 될 거라고 생각해.&lt;/p&gt;
&lt;p data-end=&quot;4448&quot; data-start=&quot;4345&quot; data-ke-size=&quot;size16&quot;&gt;너는 어느 조직이든 &lt;b&gt;데이터라는 도구로 사람 중심 가치를 실현하는 사람&lt;/b&gt;이 될 거야.&lt;br /&gt;그리고 그 과정에서 너의 성과와 가치를 이미 충분히 증명하고 있다는 것도 잊지 않았으면 해.&lt;/p&gt;
&lt;hr data-end=&quot;4453&quot; data-start=&quot;4450&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-is-only-node=&quot;&quot; data-end=&quot;4564&quot; data-start=&quot;4455&quot; data-ke-size=&quot;size16&quot;&gt;다음번에는 너의 꿈이나 목표를 더 깊게 들어보고 싶어.&lt;br /&gt;지금까지 해왔던 것보다 &lt;b&gt;네가 앞으로 무엇을 이루고 싶은지&lt;/b&gt;가 너의 다음 성장을 더 잘 보여줄 것 같거든.&lt;br /&gt;궁금하면 얘기해줘.&lt;/p&gt;</description>
      <category>gpt</category>
      <category>무의식</category>
      <category>프롬프트</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/18</guid>
      <comments>https://chodang-corn.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 14 Mar 2025 02:11:16 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL] 날짜 및 시간 관련 함수</title>
      <link>https://chodang-corn.tistory.com/17</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-end=&quot;100&quot; data-start=&quot;76&quot; data-ke-size=&quot;size23&quot;&gt;  &lt;b&gt;날짜 및 시간 관련 함수&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;158&quot; data-start=&quot;101&quot; data-ke-size=&quot;size16&quot;&gt;SQL에서는 날짜/시간 데이터를 처리할 때 다양한 함수를 제공하며, 대표적인 함수들은 다음과 같습니다.&lt;/p&gt;
&lt;h4 data-end=&quot;186&quot; data-start=&quot;160&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-end=&quot;186&quot; data-start=&quot;160&quot; data-ke-size=&quot;size20&quot;&gt;1️⃣ &lt;b&gt;연도 및 분기, 월 관련&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;760&quot; data-start=&quot;187&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;함수&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;294&quot; data-start=&quot;227&quot;&gt;
&lt;td&gt;YEAR(date)&lt;/td&gt;
&lt;td&gt;연도 추출&lt;/td&gt;
&lt;td&gt;SELECT YEAR('2024-03-04'); -- 결과: 2024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;370&quot; data-start=&quot;295&quot;&gt;
&lt;td&gt;QUARTER(date)&lt;/td&gt;
&lt;td&gt;분기(1~4) 추출&lt;/td&gt;
&lt;td&gt;SELECT QUARTER('2024-03-04'); -- 결과: 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;442&quot; data-start=&quot;371&quot;&gt;
&lt;td&gt;MONTH(date)&lt;/td&gt;
&lt;td&gt;월(1~12) 추출&lt;/td&gt;
&lt;td&gt;SELECT MONTH('2024-03-04'); -- 결과: 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;515&quot; data-start=&quot;443&quot;&gt;
&lt;td&gt;WEEK(date)&lt;/td&gt;
&lt;td&gt;연 기준 주차(1~53)&lt;/td&gt;
&lt;td&gt;SELECT WEEK('2024-03-04'); -- 결과: 9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;583&quot; data-start=&quot;516&quot;&gt;
&lt;td&gt;DAY(date)&lt;/td&gt;
&lt;td&gt;일(1~31) 추출&lt;/td&gt;
&lt;td&gt;SELECT DAY('2024-03-04'); -- 결과: 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;675&quot; data-start=&quot;584&quot;&gt;
&lt;td&gt;DAYOFWEEK(date)&lt;/td&gt;
&lt;td&gt;요일(1=일요일, 7=토요일)&lt;/td&gt;
&lt;td&gt;SELECT DAYOFWEEK('2024-03-04'); -- 결과: 2 (월요일)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;760&quot; data-start=&quot;676&quot;&gt;
&lt;td&gt;DAYOFYEAR(date)&lt;/td&gt;
&lt;td&gt;연도 기준 일(1~365)&lt;/td&gt;
&lt;td&gt;SELECT DAYOFYEAR('2024-03-04'); -- 결과: 64&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-end=&quot;784&quot; data-start=&quot;762&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-end=&quot;784&quot; data-start=&quot;762&quot; data-ke-size=&quot;size20&quot;&gt;2️⃣ &lt;b&gt;주 및 요일 관련&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;998&quot; data-start=&quot;785&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;함수&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;910&quot; data-start=&quot;825&quot;&gt;
&lt;td&gt;WEEKOFYEAR(date)&lt;/td&gt;
&lt;td&gt;연 기준 주차(1~53)&lt;/td&gt;
&lt;td&gt;SELECT WEEKOFYEAR('2024-03-04'); -- 결과: 10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;998&quot; data-start=&quot;911&quot;&gt;
&lt;td&gt;WEEKDAY(date)&lt;/td&gt;
&lt;td&gt;요일(0=월요일, 6=일요일)&lt;/td&gt;
&lt;td&gt;SELECT WEEKDAY('2024-03-04'); -- 결과: 0 (월요일)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-end=&quot;1018&quot; data-start=&quot;1000&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-end=&quot;1018&quot; data-start=&quot;1000&quot; data-ke-size=&quot;size20&quot;&gt;3️⃣ &lt;b&gt;시간 관련&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1321&quot; data-start=&quot;1019&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;함수&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1143&quot; data-start=&quot;1059&quot;&gt;
&lt;td&gt;HOUR(datetime)&lt;/td&gt;
&lt;td&gt;시 추출 (0~23)&lt;/td&gt;
&lt;td&gt;SELECT HOUR('2024-03-04 15:30:00'); -- 결과: 15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1232&quot; data-start=&quot;1144&quot;&gt;
&lt;td&gt;MINUTE(datetime)&lt;/td&gt;
&lt;td&gt;분 추출 (0~59)&lt;/td&gt;
&lt;td&gt;SELECT MINUTE('2024-03-04 15:30:00'); -- 결과: 30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1321&quot; data-start=&quot;1233&quot;&gt;
&lt;td&gt;SECOND(datetime)&lt;/td&gt;
&lt;td&gt;초 추출 (0~59)&lt;/td&gt;
&lt;td&gt;SELECT SECOND('2024-03-04 15:30:45'); -- 결과: 45&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-end=&quot;1347&quot; data-start=&quot;1323&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-end=&quot;1347&quot; data-start=&quot;1323&quot; data-ke-size=&quot;size20&quot;&gt;4️⃣ &lt;b&gt;기타 날짜 연산 함수&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 177px;&quot; border=&quot;1&quot; data-end=&quot;1818&quot; data-start=&quot;1348&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;함수&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;예제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 45px;&quot; data-end=&quot;1476&quot; data-start=&quot;1388&quot;&gt;
&lt;td style=&quot;height: 45px;&quot;&gt;LAST_DAY(date)&lt;/td&gt;
&lt;td style=&quot;height: 45px;&quot;&gt;해당 월의 마지막 날짜&lt;/td&gt;
&lt;td style=&quot;height: 45px;&quot;&gt;SELECT LAST_DAY('2024-03-04'); -- 결과: 2024-03-31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 39px;&quot; data-end=&quot;1596&quot; data-start=&quot;1477&quot;&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;DATE_ADD(date, INTERVAL n unit)&lt;/td&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;특정 기간 추가&lt;/td&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;SELECT DATE_ADD('2024-03-04', INTERVAL 1 MONTH); -- 결과: 2024-04-04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 39px;&quot; data-end=&quot;1716&quot; data-start=&quot;1597&quot;&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;DATE_SUB(date, INTERVAL n unit)&lt;/td&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;특정 기간 감소&lt;/td&gt;
&lt;td style=&quot;height: 39px;&quot;&gt;SELECT DATE_SUB('2024-03-04', INTERVAL 1 MONTH); -- 결과: 2024-02-04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot; data-end=&quot;1818&quot; data-start=&quot;1717&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;DATEDIFF(date1, date2)&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;날짜 차이(일 단위)&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;SELECT DATEDIFF('2024-03-04', '2024-01-01'); -- 결과: 63&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-end=&quot;1838&quot; data-start=&quot;1820&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-end=&quot;1838&quot; data-start=&quot;1820&quot; data-ke-size=&quot;size20&quot;&gt;5️⃣ &lt;b&gt;형식 변환&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2105&quot; data-start=&quot;1839&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;함수&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;td&gt;예제&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1989&quot; data-start=&quot;1879&quot;&gt;
&lt;td&gt;DATE_FORMAT(date, format)&lt;/td&gt;
&lt;td&gt;날짜 형식 변환&lt;/td&gt;
&lt;td&gt;SELECT DATE_FORMAT('2024-03-04', '%Y-%m-%d'); -- 결과: 2024-03-04&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2105&quot; data-start=&quot;1990&quot;&gt;
&lt;td&gt;STR_TO_DATE(string, format)&lt;/td&gt;
&lt;td&gt;문자열을 날짜로 변환&lt;/td&gt;
&lt;td&gt;SELECT STR_TO_DATE('2024-03-04', '%Y-%m-%d'); -- 결과: 2024-03-04&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-end=&quot;2123&quot; data-start=&quot;2107&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-end=&quot;2123&quot; data-start=&quot;2107&quot; data-ke-size=&quot;size23&quot;&gt;  &lt;b&gt;활용 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-end=&quot;2150&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2150&quot; data-start=&quot;2124&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;해당 날짜가 속한 분기와 연도 출력&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1741096703271&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
    NOW() AS 현재_날짜,
    YEAR(NOW()) AS 연도,
    QUARTER(NOW()) AS 분기,
    MONTH(NOW()) AS 월;&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-end=&quot;2290&quot; data-start=&quot;2263&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2290&quot; data-start=&quot;2263&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;각 월의 첫째 날과 마지막 날 구하기&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1741096725539&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT 
    DATE_FORMAT(NOW(), '%Y-%m-01') AS 첫째날, 
    LAST_DAY(NOW()) AS 마지막날;​&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;  &lt;b&gt;최근 6개월 데이터를 가져오기&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1741096740090&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM sales_data 
WHERE date &amp;gt;= DATE_SUB(NOW(), INTERVAL 6 MONTH);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-end=&quot;2515&quot; data-start=&quot;2495&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;2515&quot; data-start=&quot;2495&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;일주일 전의 날짜 구하기&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1741096751294&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT DATE_SUB(NOW(), INTERVAL 7 DAY) AS 일주일전;​&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;이 외에도 EXTRACT(YEAR FROM date), TO_CHAR(date, 'YYYY-MM-DD')(PostgreSQL, Oracle) 등의 다양한 함수가 데이터베이스 종류에 따라 제공됩니다.&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>DATE_ADD</category>
      <category>LAST_DAY</category>
      <category>Month</category>
      <category>mysql</category>
      <category>Quarter</category>
      <category>sql</category>
      <category>WEEKOFYEAR</category>
      <category>Year</category>
      <category>날짜 함수</category>
      <category>시간 함수</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/17</guid>
      <comments>https://chodang-corn.tistory.com/17#entry17comment</comments>
      <pubDate>Tue, 4 Mar 2025 23:00:28 +0900</pubDate>
    </item>
    <item>
      <title>[MySQL 프로그래머스 풀이]: Lv.2 / 분기별 분화된 대장균의 개체 수 구하기</title>
      <link>https://chodang-corn.tistory.com/16</link>
      <description>&lt;p data-end=&quot;195&quot; data-start=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 프로그래머스의 SQL 문제인 &lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/299308&quot; data-end=&quot;129&quot; data-start=&quot;44&quot;&gt;&lt;b&gt;&quot;변종 바이러스의 확산&quot;&lt;/b&gt;&lt;/a&gt;을 해결하는 두 가지 접근 방식을 비교하며, SQL의 날짜 함수와 CASE WHEN 구문의 활용법을 알아보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;495&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lz80B/btsMA6TKSpj/Ezu3a1k6nOT9HpClmSWGO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lz80B/btsMA6TKSpj/Ezu3a1k6nOT9HpClmSWGO1/img.png&quot; data-alt=&quot;[MySQL 프로그래머스] Lv.2 / 분기별 분화된 대장균의 개체 수 구하기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lz80B/btsMA6TKSpj/Ezu3a1k6nOT9HpClmSWGO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flz80B%2FbtsMA6TKSpj%2FEzu3a1k6nOT9HpClmSWGO1%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;956&quot; height=&quot;495&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;495&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;[MySQL 프로그래머스] Lv.2 / 분기별 분화된 대장균의 개체 수 구하기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-end=&quot;205&quot; data-start=&quot;197&quot; data-ke-size=&quot;size26&quot;&gt;문제 개요&lt;/h2&gt;
&lt;p data-end=&quot;294&quot; data-start=&quot;207&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ECOLI_DATA&lt;/b&gt; 테이블에서 각 분기별로 변종 바이러스의 발생 건수를 집계하는 것이 목표입니다. 이를 위해 두 가지 SQL 쿼리를 작성해보겠습니다.&lt;/p&gt;
&lt;h2 data-end=&quot;325&quot; data-start=&quot;296&quot; data-ke-size=&quot;size26&quot;&gt;1. 첫 번째 접근: CASE WHEN 구문 활용&lt;/h2&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1741095791795&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CASE 
           WHEN MONTH(DIFFERENTIATION_DATE) IN (1,2,3) THEN '1Q'
           WHEN MONTH(DIFFERENTIATION_DATE) IN (4,5,6) THEN '2Q'
           WHEN MONTH(DIFFERENTIATION_DATE) IN (7,8,9) THEN '3Q'
           WHEN MONTH(DIFFERENTIATION_DATE) IN (10,11,12) THEN '4Q'
       END AS QUARTER,
       COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER
ORDER BY QUARTER;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;726&quot; data-start=&quot;720&quot; data-ke-size=&quot;size23&quot;&gt;설명&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;994&quot; data-start=&quot;728&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;798&quot; data-start=&quot;728&quot;&gt;MONTH(DIFFERENTIATION_DATE): DIFFERENTIATION_DATE 컬럼에서 월을 추출합니다.&lt;/li&gt;
&lt;li data-end=&quot;905&quot; data-start=&quot;799&quot;&gt;CASE WHEN 구문: 추출한 월을 기준으로 분기를 정의합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;905&quot; data-start=&quot;842&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;855&quot; data-start=&quot;842&quot;&gt;1월~3월: '1Q'&lt;/li&gt;
&lt;li data-end=&quot;871&quot; data-start=&quot;858&quot;&gt;4월~6월: '2Q'&lt;/li&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;874&quot;&gt;7월~9월: '3Q'&lt;/li&gt;
&lt;li data-end=&quot;905&quot; data-start=&quot;890&quot;&gt;10월~12월: '4Q'&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;945&quot; data-start=&quot;906&quot;&gt;GROUP BY QUARTER: 분기별로 데이터를 그룹화합니다.&lt;/li&gt;
&lt;li data-end=&quot;994&quot; data-start=&quot;946&quot;&gt;COUNT(*) AS ECOLI_COUNT: 각 분기별 발생 건수를 계산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1003&quot; data-start=&quot;996&quot; data-ke-size=&quot;size23&quot;&gt;장단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1116&quot; data-start=&quot;1005&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1071&quot; data-start=&quot;1005&quot;&gt;&lt;b&gt;장점&lt;/b&gt;: CASE WHEN 구문을 통해 분기를 직접 정의하므로, 분기 기준을 유연하게 변경할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;1116&quot; data-start=&quot;1072&quot;&gt;&lt;b&gt;단점&lt;/b&gt;: 코드가 다소 길어질 수 있으며, 가독성이 떨어질 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-end=&quot;1145&quot; data-start=&quot;1118&quot; data-ke-size=&quot;size26&quot;&gt;2. 두 번째 접근: QUARTER 함수 활용&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;더 많은 날짜 및 시간 관련 함수는 여기로&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[MySQL] 날짜 및 시간 관련 함수&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1741095816209&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT CONCAT(QUARTER(DIFFERENTIATION_DATE), 'Q') AS QUARTER, 
       COUNT(*) AS ECOLI_COUNT
FROM ECOLI_DATA
GROUP BY QUARTER(DIFFERENTIATION_DATE)
ORDER BY QUARTER(DIFFERENTIATION_DATE);&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1354&quot; data-start=&quot;1348&quot; data-ke-size=&quot;size23&quot;&gt;설명&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1606&quot; data-start=&quot;1356&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1429&quot; data-start=&quot;1356&quot;&gt;QUARTER(DIFFERENTIATION_DATE): DIFFERENTIATION_DATE 컬럼에서 분기를 추출합니다.&lt;/li&gt;
&lt;li data-end=&quot;1495&quot; data-start=&quot;1430&quot;&gt;CONCAT(QUARTER(...), 'Q') AS QUARTER: 추출한 분기에 'Q'를 붙여서 표현합니다.&lt;/li&gt;
&lt;li data-end=&quot;1557&quot; data-start=&quot;1496&quot;&gt;GROUP BY QUARTER(DIFFERENTIATION_DATE): 분기별로 데이터를 그룹화합니다.&lt;/li&gt;
&lt;li data-end=&quot;1606&quot; data-start=&quot;1558&quot;&gt;COUNT(*) AS ECOLI_COUNT: 각 분기별 발생 건수를 계산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1615&quot; data-start=&quot;1608&quot; data-ke-size=&quot;size23&quot;&gt;장단점&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1720&quot; data-start=&quot;1617&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1665&quot; data-start=&quot;1617&quot;&gt;&lt;b&gt;장점&lt;/b&gt;: QUARTER 함수를 사용하여 코드가 간결하고 가독성이 높습니다.&lt;/li&gt;
&lt;li data-end=&quot;1720&quot; data-start=&quot;1666&quot;&gt;&lt;b&gt;단점&lt;/b&gt;: 데이터베이스 시스템에 따라 QUARTER 함수가 지원되지 않을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-end=&quot;2589&quot; data-start=&quot;2494&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL 코딩테스트</category>
      <category>case when</category>
      <category>mysql</category>
      <category>Quarter</category>
      <category>sql</category>
      <category>날짜 함수</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/16</guid>
      <comments>https://chodang-corn.tistory.com/16#entry16comment</comments>
      <pubDate>Tue, 4 Mar 2025 22:54:46 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 제너레이터 표현식(generator expressions) 연습 예제</title>
      <link>https://chodang-corn.tistory.com/15</link>
      <description>&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m7UtX/btsL8YH27vt/Q5a8xu0TdEwRW4lMXIqNDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m7UtX/btsL8YH27vt/Q5a8xu0TdEwRW4lMXIqNDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m7UtX/btsL8YH27vt/Q5a8xu0TdEwRW4lMXIqNDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm7UtX%2FbtsL8YH27vt%2FQ5a8xu0TdEwRW4lMXIqNDK%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;831&quot; height=&quot;644&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Python에서 데이터를 다룰 때, 리스트 컴프리헨션과 함께 **제너레이터 표현식(generator expressions)**을 활용하면 메모리를 절약하고 성능을 향상시킬 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;이번 포스팅에서는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;제너레이터 표현식이 무엇인지, 기존 for문과 리스트 컴프리헨션과 비교하며 활용법을 익히는 방법&lt;/b&gt;&lt;/span&gt;&lt;span&gt;을 자세히 알아보겠습니다.  &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;# 제너레이터 표현식을 프로그래머스에서도 활용 하실 수 있습니다. #&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/14&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[프로그래머스 풀이]: Lv.1 / 약수의 합&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1️⃣ 제너레이터 표현식이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제너레이터 표현식은 리스트 컴프리헨션과 유사하지만, &lt;b&gt;리스트를 생성하는 대신, 이터레이터(iterator)를 반환하는 표현식&lt;/b&gt;입니다. 즉, &lt;b&gt;필요한 순간에 값을 생성하여 메모리 사용을 최적화&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;# 리스트 컴프리헨션
lst = [x**2 for x in range(10)]  # 모든 값을 메모리에 저장

# 제너레이터 표현식
gen = (x**2 for x in range(10))  # 필요할 때마다 값을 생성
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;리스트 vs. 제너레이터 표현식의 차이&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;b&gt;리스트 컴프리헨션&lt;/b&gt;: [ ]를 사용하며, 리스트를 즉시 생성하고 메모리에 저장.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제너레이터 표현식&lt;/b&gt;: ( )를 사용하며, 필요할 때 값을 하나씩 생성하여 반환.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  실행 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(sum(x**2 for x in range(10)))  # 0^2 + 1^2 + ... + 9^2 = 285
&lt;/code&gt;&lt;/pre&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2️⃣ 기존 for문을 제너레이터 표현식으로 변환하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  리스트의 합 구하기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 for문 사용&lt;/h4&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;def sum_list(lst):
    total = 0
    for num in lst:
        total += num
    return total
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;✅ 제너레이터 표현식 예제 정답&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def sum_list(lst):
    return sum(num for num in lst)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;➝&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;b&gt;불필요한 변수(total)를 제거&lt;/b&gt;하고 &lt;b&gt;메모리 사용을 줄이며 코드 가독성을 높임.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  리스트에서 짝수만 더하기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 for문 사용&lt;/h4&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;def sum_even(lst):
    total = 0
    for num in lst:
        if num % 2 == 0:
            total += num
    return total
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;✅ 제너레이터 표현식 예제 정답&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;def sum_even(lst):
    return sum(num for num in lst if num % 2 == 0)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;➝ &lt;b&gt;조건문을 추가하여 짝수만 필터링.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  문자열 길이의 합 구하기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 for문 사용&lt;/h4&gt;
&lt;pre class=&quot;livecodeserver&quot;&gt;&lt;code&gt;def total_length(words):
    total = 0
    for word in words:
        total += len(word)
    return total
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;✅ 제너레이터 표현식 예제 정답&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;def total_length(words):
    return sum(len(word) for word in words)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;➝ &lt;b&gt;불필요한 변수를 줄이고, 간결한 코드 작성 가능.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  10보다 큰 숫자만 합 구하기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 for문 사용&lt;/h4&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;def sum_greater_than_10(lst):
    total = 0
    for num in lst:
        if num &amp;gt; 10:
            total += num
    return total
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;✅ 제너레이터 표현식 예제 정답&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;def sum_greater_than_10(lst):
    return sum(num for num in lst if num &amp;gt; 10)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;➝ &lt;/span&gt;&lt;b&gt;필터링 조건을 추가하여 메모리 절약.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  리스트에서 3의 배수 개수 세기&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 기존 for문 사용&lt;/h4&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;def count_multiples_of_3(lst):
    count = 0
    for num in lst:
        if num % 3 == 0:
            count += 1
    return count
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;✅ 제너레이터 표현식 예제 정답&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;def count_multiples_of_3(lst):
    return sum(1 for num in lst if num % 3 == 0)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;➝&lt;/span&gt;&amp;nbsp;&lt;b&gt;카운트할 때도 sum(1 for ...)을 사용하면 간결하게 해결 가능.&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3️⃣ 제너레이터 표현식의 장점&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;메모리 효율성&lt;/b&gt; &amp;rarr; 한 번에 하나씩 값을 생성하여 메모리 낭비 최소화&lt;br /&gt;✅ &lt;b&gt;빠른 실행 속도&lt;/b&gt; &amp;rarr; 리스트를 미리 생성하지 않으므로 연산 속도 향상&lt;br /&gt;✅ &lt;b&gt;가독성 향상&lt;/b&gt; &amp;rarr; 코드가 간결해지고, 불필요한 변수를 줄일 수 있음&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  리스트 컴프리헨션 vs. 제너레이터 표현식 비교&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방식 메모리 사용 속도 추천 상황&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;리스트 컴프리헨션&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;td&gt;빠름&lt;/td&gt;
&lt;td&gt;작은 크기의 데이터 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제너레이터 표현식&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;td&gt;빠름&lt;/td&gt;
&lt;td&gt;대용량 데이터 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  결론&lt;/b&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;b&gt;리스트 컴프리헨션&lt;/b&gt;은 한 번에 모든 데이터를 생성해야 할 때 사용하면 좋다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제너레이터 표현식&lt;/b&gt;은 대량의 데이터를 처리할 때 메모리를 절약하면서 빠르게 처리할 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;일반 for문을 제너레이터 표현식으로 변환하면 코드가 더욱 간결해지고 성능이 향상된다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>PYTHON</category>
      <category>python코딩팁</category>
      <category>메모리최적화</category>
      <category>제너레이터 표현식</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/15</guid>
      <comments>https://chodang-corn.tistory.com/15#entry15comment</comments>
      <pubDate>Wed, 5 Feb 2025 20:22:21 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스 풀이]: Lv.1 / 약수의 합</title>
      <link>https://chodang-corn.tistory.com/14</link>
      <description>&lt;p style=&quot;color: #000000; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;문제 링크  &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/12928&quot;&gt;&lt;span&gt;프로그래머스 - 약수의 합&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;1. 문제 소개&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;약수의 합을 구하는 문제입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6ZqCo/btsL8YgVW0I/Pu3lheoD4HmKoLUVNChXu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6ZqCo/btsL8YgVW0I/Pu3lheoD4HmKoLUVNChXu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6ZqCo/btsL8YgVW0I/Pu3lheoD4HmKoLUVNChXu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6ZqCo%2FbtsL8YgVW0I%2FPu3lheoD4HmKoLUVNChXu1%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;555&quot; height=&quot;464&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span&gt;2. 문제 풀이&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1️⃣ 기본적인 for문을 사용한 코드&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저, 일반적인 for문을 이용해 약수의 합을 구하는 코드를 살펴보겠습니다.&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def solution(n):
    answer = 0
    for i in range(1, n+1):  # 1부터 n까지 반복
        if n % i == 0:  # i가 n의 약수라면
            answer += i  # 합산
    return answer
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;  실행 예제&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(solution(12))  # 28 (1 + 2 + 3 + 4 + 6 + 12)
print(solution(5))   # 6 (1 + 5)
&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1부터 n까지 모든 숫자를 순회하므로 &lt;b&gt;시간 복잡도 O(n)&lt;/b&gt; 입니다.&lt;/li&gt;
&lt;li&gt;큰 수일 경우 &lt;b&gt;불필요한 반복이 많아 비효율적&lt;/b&gt;입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2️⃣ 제너레이터 표현식을 사용하여 간결화&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드를 &lt;b&gt;제너레이터 표현식&lt;/b&gt;을 사용하면 한 줄로 간단하게 바꿀 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;def solution(n):
    return sum(i for i in range(1, n+1) if n % i == 0)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;  실행 예제&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;print(solution(12))  # 28
print(solution(5))   # 6
&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;불필요한 변수(answer) 제거&lt;/b&gt;하여 가독성을 높임.&lt;/li&gt;
&lt;li&gt;sum()을 활용하여 &lt;b&gt;제너레이터 표현식&lt;/b&gt;을 사용, 리스트를 만들지 않고 바로 값을 더하도록 최적화.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&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;&lt;b&gt;메모리 절약&lt;/b&gt; &amp;rarr; 리스트를 생성하지 않고 sum()에서 바로 계산&lt;/li&gt;
&lt;li&gt;&lt;b&gt;코드 가독성 향상&lt;/b&gt; &amp;rarr; 한 줄로 표현 가능&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성능 향상&lt;/b&gt; &amp;rarr; 리스트 컴프리헨션보다 빠름 (큰 데이터에서 차이 발생)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;# 제너레이터 표현식이 익숙하지 않으시다면? 아래의 링크에서 예제로 연습해 보세요! #&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/15&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; [Python] 제너레이터 표현식(generator expressions) 연습 예제&lt;/a&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3️⃣ 성능을 최적화한 코드 (O(&amp;radic;n)로 개선)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 방식은 &lt;b&gt;O(n)의 시간 복잡도&lt;/b&gt;를 가집니다.&lt;br /&gt;하지만 &lt;b&gt;제곱근(&amp;radic;n)까지만 탐색하는 방식&lt;/b&gt;을 활용하면 &lt;b&gt;O(&amp;radic;n)으로 최적화&lt;/b&gt;할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;def optimized_solution(n):
    result = 0
    for i in range(1, int(n ** 0.5) + 1):  # 1부터 &amp;radic;n까지만 탐색
        if n % i == 0:  # i가 약수라면
            result += i
            if i != n // i:  # 중복 방지 (제곱수가 아닐 경우)
                result += n // i
    return result
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;  실행 예제&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(optimized_solution(12))  # 28
print(optimized_solution(5))   # 6
print(optimized_solution(36))  # 91 (1+2+3+4+6+9+12+18+36)
&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;제곱근(&amp;radic;n)까지만 반복&lt;/b&gt;하여 불필요한 연산을 줄임.&lt;/li&gt;
&lt;li&gt;n % i == 0이면 (i, n // i) 두 개의 약수를 한 번에 처리하여 &lt;b&gt;반복 횟수를 절반으로 줄임.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;**제곱수(n=36일 때, 6&amp;times;6)**의 경우 중복을 방지하기 위해 i != n // i 조건을 추가.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;성능 비교&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방식&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;시간 복잡도&lt;/td&gt;
&lt;td&gt;실행 속도 (n=1,000,000 기준)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기본 for문&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;td&gt;느림&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제너레이터 표현식&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;td&gt;중간&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제곱근 최적화&lt;/td&gt;
&lt;td&gt;O(&amp;radic;n)&lt;/td&gt;
&lt;td&gt;가장 빠름  &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 결론&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 66px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;방식&lt;/td&gt;
&lt;td&gt;코드 길이&lt;/td&gt;
&lt;td&gt;성능&lt;/td&gt;
&lt;td&gt;메모리 효율성&lt;/td&gt;
&lt;td&gt;추천 대상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;for문 사용&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;길다&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;느림 (O(n))&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;낮음&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;초보자, 직관적 이해&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;제너레이터 표현식&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;짧다&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;보통 (O(n))&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;높음&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;간결한 코드 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;제곱근 최적화&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;중간&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;빠름 (O(&amp;radic;n))&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;높음&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;성능 최적화 필요 시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&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;&lt;b&gt;간단한 경우&lt;/b&gt;: 제너레이터 표현식 (sum(i for i in range(1, n+1) if n % i == 0))&lt;/li&gt;
&lt;li&gt;&lt;b&gt;성능이 중요한 경우&lt;/b&gt;: O(&amp;radic;n) 최적화 코드 (optimized_solution)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 마무리&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 &lt;b&gt;약수의 합을 구하는 방법&lt;/b&gt;을 &lt;b&gt;기본적인 for문 &amp;rarr; 제너레이터 표현식 &amp;rarr; 성능 최적화(O(&amp;radic;n))&lt;/b&gt; 순서로 차근차근 살펴보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;제너레이터 표현식&lt;/b&gt;을 활용하면 &lt;b&gt;더 간결하고 효율적인 코드&lt;/b&gt;를 작성할 수 있으며,&lt;br /&gt;&lt;b&gt;시간 복잡도를 고려한 최적화(O(&amp;radic;n))를 적용하면 성능을 획기적으로 향상&lt;/b&gt;시킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;   여러분도 다양한 방식으로 연습하면서 최적화된 코드를 작성해 보세요!&amp;nbsp;&lt;/b&gt;&lt;/p&gt;</description>
      <category>파이썬 코딩테스트</category>
      <category>LV.1</category>
      <category>PYTHON</category>
      <category>약수의 합</category>
      <category>제너레이터 표현식</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/14</guid>
      <comments>https://chodang-corn.tistory.com/14#entry14comment</comments>
      <pubDate>Wed, 5 Feb 2025 20:15:41 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스 풀이]: Lv.0 / 세균 증식</title>
      <link>https://chodang-corn.tistory.com/13</link>
      <description>&lt;p style=&quot;color: #000000; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;문제 링크  &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120910&quot;&gt;&lt;span&gt;프로그래머스 - 세균 증식&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;&lt;span&gt;1. 문제 소개&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;프로그래머스 '세균 증식' 문제는 특정 개수의 세균이 1시간마다 두 배씩 증가하는 과정을 계산하는 문제입니다. 초기 세균 수 &lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;과 경과한 시간 &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;가 주어질 때, &lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;시간 후의 세균 수를 구하는 것이 목표입니다. &lt;b&gt;단순한 수학적 연산을 사용해 풀 수 있지만, 비트 연산자를 활용하면 더욱 효율적으로 해결할 수 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;# 비트 연산자 개념은 해당 포스팅에서 자세히 확인할 수 있습니다. #&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/12&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Python] 비트 연산자(Bitwise Operator) 개념 정리&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;605&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zn9xN/btsL5mcKp3u/oCGSMLqSLOhLkk1t9kSIkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zn9xN/btsL5mcKp3u/oCGSMLqSLOhLkk1t9kSIkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zn9xN/btsL5mcKp3u/oCGSMLqSLOhLkk1t9kSIkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzn9xN%2FbtsL5mcKp3u%2FoCGSMLqSLOhLkk1t9kSIkk%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;586&quot; height=&quot;605&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;605&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;2. 비트 연산자를 활용한 문제 해결&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;문제 분석&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;true&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;세균은 매시간 두 배로 증가합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;시간 후 세균 수는: &amp;nbsp;n&amp;nbsp;*&amp;nbsp;2^t&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;2^t&lt;/span&gt;&lt;span&gt;은 비트 연산의 왼쪽 시프트 연산 (&lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt;)을 사용하여 간단히 구할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;n &amp;lt;&amp;lt; t&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;n * (2^t)&lt;/span&gt;&lt;span&gt;와 같은 효과를 가집니다.&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;코드 구현&lt;/p&gt;
&lt;pre id=&quot;code_1738656607315&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n, t):
    return n &amp;lt;&amp;lt; t  # n을 왼쪽으로 t비트 이동 &amp;rarr; 2^t 배 증가

# 테스트 실행
print(solution(2, 3))  # 2 * 2^3 = 16
print(solution(7, 2))  # 7 * 2^2 = 28&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span&gt;&lt;b&gt; ⚠️ &amp;nbsp; 왜 &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;lt;&amp;lt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;를 사용하면 되는가?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;n &amp;lt;&amp;lt; t&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;n * 2^t&lt;/span&gt;&lt;span&gt;와 동일합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;곱셈 연산보다 비트 연산이 더 빠르고 효율적입니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;3. 정리&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;비트 연산자는 이진수(0과 1) 단위에서 연산하는 방식입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;왼쪽 시프트(&lt;/span&gt;&lt;span&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span&gt;) 연산은 숫자를 2배씩 증가시키는 효과가 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;세균이 매시간 두 배로 증가하므로, &lt;/span&gt;&lt;span&gt;n &amp;lt;&amp;lt; t&lt;/span&gt;&lt;span&gt;를 사용하면 쉽게 해결할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>파이썬 코딩테스트</category>
      <category>Lv.0</category>
      <category>PYTHON</category>
      <category>비트연산자</category>
      <category>세균 증식</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/13</guid>
      <comments>https://chodang-corn.tistory.com/13#entry13comment</comments>
      <pubDate>Tue, 4 Feb 2025 16:59:14 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 비트 연산자(Bitwise Operator) 개념 정리</title>
      <link>https://chodang-corn.tistory.com/12</link>
      <description>&lt;p style=&quot;color: #333333; text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kP73z/btsL6zPEdTv/mG9F6ZZKlJk84kiH2zNZG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kP73z/btsL6zPEdTv/mG9F6ZZKlJk84kiH2zNZG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kP73z/btsL6zPEdTv/mG9F6ZZKlJk84kiH2zNZG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkP73z%2FbtsL6zPEdTv%2FmG9F6ZZKlJk84kiH2zNZG0%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;831&quot; height=&quot;645&quot; data-origin-width=&quot;831&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;비트 연산자는 이진수(0과 1)를 직접 다루는 연산자로, 숫자의 각 비트 단위에서 연산을 수행하는 방식입니다. 컴퓨터는 내부적으로 모든 데이터를 0과 1로 처리하므로, 비트 연산을 활용하면 연산 속도가 빠르고 효율적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;# 비트 연산자 활용 예제는 해당 포스팅에서 자세히 확인 할 수 있습니다. #&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[프로그래머스 풀이]: Lv.0 / 세균 증식&lt;/a&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;&lt;b&gt;주요 비트 연산자&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;1) AND 연산 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;두 비트가 모두 1일 때만 1이 되는 연산입니다.&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt; A &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt; B &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt; A &amp;amp; B &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;0&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 16px;&quot;&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 16px;&quot;&gt;&lt;span&gt;1&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(5 &amp;amp; 3)  # 5: 101, 3: 011 &amp;rarr; 결과: 001 (1)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;2) OR 연산 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;|&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;둘 중 하나라도 1이면 결과가 1이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(5 | 3)  # 5: 101, 3: 011 &amp;rarr; 결과: 111 (7)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;3) XOR 연산 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;^&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;두 비트가 서로 다를 때만 1이 되는 연산입니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(5 ^ 3)  # 5: 101, 3: 011 &amp;rarr; 결과: 110 (6)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;4) NOT 연산 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;~&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;비트를 반전(0 &amp;rarr; 1, 1 &amp;rarr; 0)하는 연산입니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(~5)  # 5: 101 &amp;rarr; 결과: -6 (컴퓨터의 음수 표현 방식 때문)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;5) 왼쪽 시프트 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;lt;&amp;lt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;비트를 왼쪽으로 이동시키며, 2배씩 증가하는 효과가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(5 &amp;lt;&amp;lt; 1)  # 5: 101 &amp;rarr; 1010 (10)
print(5 &amp;lt;&amp;lt; 2)  # 5: 101 &amp;rarr; 10100 (20)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;n &amp;lt;&amp;lt; x&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;n * (2^x)&lt;/span&gt;&lt;span&gt;와 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;6) 오른쪽 시프트 (&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&amp;gt;&amp;gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;비트를 오른쪽으로 이동시키며, 2로 나누는 효과가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;예제 코드&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;print(5 &amp;gt;&amp;gt; 1)  # 5: 101 &amp;rarr; 10 (2)
print(5 &amp;gt;&amp;gt; 2)  # 5: 101 &amp;rarr; 1 (1)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;</description>
      <category>Python</category>
      <category>bitwise operator</category>
      <category>PYTHON</category>
      <category>비트연산자</category>
      <category>세균 증식</category>
      <category>이진수 연산</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/12</guid>
      <comments>https://chodang-corn.tistory.com/12#entry12comment</comments>
      <pubDate>Tue, 4 Feb 2025 16:43:21 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스 풀이]: Lv.0 / 최댓값 만들기 (1)</title>
      <link>https://chodang-corn.tistory.com/11</link>
      <description>&lt;p style=&quot;color: #000000; text-align: right;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;문제 링크   &lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/120847#&quot;&gt;&lt;span&gt;프로그래머스 - 최댓값 만들기 (1)&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. 문제 소개&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;프로그래머스 &lt;/span&gt;&lt;span&gt;&lt;b&gt;'최댓값 만들기 (2)'&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 문제는 주어진 리스트에서 가장 큰 두 숫자를 찾아 곱하는 문제입니다. 간단해 보이지만, &lt;/span&gt;&lt;span&gt;&lt;b&gt;리스트 정렬을 어떻게 활용하느냐&lt;/b&gt;&lt;/span&gt;&lt;span&gt;에 따라 풀이 방식이 달라질 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE7jmV/btsL6SVxcsp/0F3y1kD8wjIGvsAlcVZan1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE7jmV/btsL6SVxcsp/0F3y1kD8wjIGvsAlcVZan1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE7jmV/btsL6SVxcsp/0F3y1kD8wjIGvsAlcVZan1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE7jmV%2FbtsL6SVxcsp%2F0F3y1kD8wjIGvsAlcVZan1%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;686&quot; height=&quot;629&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;2. 기본 풀이: &lt;/span&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt; 함수 활용&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  코드 구현&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;# 최대값을 만든다 = 가장 큰 두 수를 선택해서, 곱한다.
def solution(numbers):
    max_num = sorted(numbers)[::-1]  # 내림차순 정렬
    return max_num[0] * max_num[1]  # 가장 큰 두 수 곱하기&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  설명&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;sorted(numbers)&lt;/span&gt;&lt;span&gt;: 리스트를 오름차순으로 정렬합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;[::-1]&lt;/span&gt;&lt;span&gt;: 리스트를 뒤집어서 &lt;/span&gt;&lt;span&gt;&lt;b&gt;내림차순 정렬&lt;/b&gt;&lt;/span&gt;&lt;span&gt;합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;max_num[0] * max_num[1]&lt;/span&gt;&lt;span&gt;: 가장 큰 두 숫자를 곱해서 반환합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt; 함수 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt;는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;새로운 정렬된 리스트를 반환&lt;/b&gt;&lt;/span&gt;&lt;span&gt;합니다. (원본 리스트는 변하지 않음)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;reverse=True&lt;/span&gt;&lt;span&gt;를 사용하면 바로 내림차순 정렬 가능합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;sorted(numbers, reverse=True) # 내림차순 정렬&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;3. 다른 풀이: &lt;/span&gt;&lt;span&gt;list.sort()&lt;/span&gt;&lt;span&gt; 활용&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  코드 구현&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def solution(numbers):
    numbers.sort()  # 리스트 자체를 정렬
    return numbers[-2] * numbers[-1]  # 가장 큰 두 수 곱하기&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  설명&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;numbers.sort()&lt;/span&gt;&lt;span&gt;: 리스트를 &lt;/span&gt;&lt;span&gt;&lt;b&gt;오름차순 정렬 (원본 리스트가 변경됨)&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;numbers[-2] * numbers[-1]&lt;/span&gt;&lt;span&gt;: 정렬된 리스트에서 &lt;/span&gt;&lt;span&gt;&lt;b&gt;뒤에서 두 개의 숫자를 선택하여 곱함&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;list.sort()&lt;/span&gt;&lt;span&gt; 함수 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;리스트 자체를 정렬하며, 반환값이 &lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;입니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;원본 리스트가 변경되므로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;메모리 사용을 절약&lt;/b&gt;&lt;/span&gt;&lt;span&gt;할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;4. &lt;/span&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt; vs &lt;/span&gt;&lt;span&gt;sort()&lt;/span&gt;&lt;span&gt; 차이점 정리&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 110px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;sorted(list)&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;list.sort()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;원본 리스트 변경 여부&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;❌ 변경되지 않음&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;✅ 원본 리스트 변경&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;반환값&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;정렬된 새로운 리스트 반환&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt; (리스트 자체 정렬)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;사용법&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;sorted(numbers, reverse=True)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;numbers.sort(reverse=True)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;&lt;b&gt;메모리 사용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;새로운 리스트를 생성 (메모리 추가 사용)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;리스트 자체를 정렬 (메모리 절약)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  예제 코드 비교&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]

# sorted() 사용
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 1, 2, 3, 4, 5, 5, 6, 9]
print(numbers)  # 원본 리스트 변경 없음: [3, 1, 4, 1, 5, 9, 2, 6, 5]

# sort() 사용
numbers.sort()
print(numbers)  # 원본 리스트 변경됨: [1, 1, 2, 3, 4, 5, 5, 6, 9]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;5. 최적의 선택은?&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;상황&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;추천 정렬 방식&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;원본 리스트를 유지해야 함&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt; 사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;메모리를 아껴야 하고 원본 변경 가능&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;sort()&lt;/span&gt;&lt;span&gt; 사용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span&gt;내림차순 정렬이 필요함&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;sorted(numbers, reverse=True)&lt;/span&gt;&lt;span&gt; or &lt;/span&gt;&lt;span&gt;numbers.sort(reverse=True)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;문제 상황에 따라 &lt;/span&gt;&lt;span&gt;sorted()&lt;/span&gt;&lt;span&gt;와 &lt;/span&gt;&lt;span&gt;sort()&lt;/span&gt;&lt;span&gt; 중 적절한 방식을 선택하면 효율적인 코드 작성이 가능합니다!  &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;6. 그 외 다른 풀이: &lt;/span&gt;&lt;span&gt;pop()&lt;/span&gt;&lt;span&gt; 활용&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  코드 구현&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;def solution(numbers):
    num1 = 0
    num2 = 0
    answer = 0

    numbers.sort()

    num1 = numbers.pop()
    num2 = numbers.pop()
    answer = num1 * num2

    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  설명&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;numbers.sort()&lt;/span&gt;&lt;span&gt;: 리스트를 오름차순 정렬합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;numbers.pop()&lt;/span&gt;&lt;span&gt;: 리스트의 마지막 요소(가장 큰 값)를 꺼내서 &lt;/span&gt;&lt;span&gt;num1&lt;/span&gt;&lt;span&gt;에 저장합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;numbers.pop()&lt;/span&gt;&lt;span&gt;: 다시 리스트의 마지막 요소(두 번째로 큰 값)를 꺼내서 &lt;/span&gt;&lt;span&gt;num2&lt;/span&gt;&lt;span&gt;에 저장합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;num1 * num2&lt;/span&gt;&lt;span&gt;: 가장 큰 두 수를 곱한 결과를 반환합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;pop()&lt;/span&gt;&lt;span&gt;을 활용한 방식의 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;pop()&lt;/span&gt;&lt;span&gt;을 사용하면 리스트의 마지막 요소를 제거하면서 반환하므로 &lt;/span&gt;&lt;span&gt;&lt;b&gt;메모리를 추가로 사용하지 않고도&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 값을 가져올 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;sort()&lt;/span&gt;&lt;span&gt;와 조합하면 &lt;/span&gt;&lt;span&gt;&lt;b&gt;가장 큰 두 숫자를 효과적으로 선택&lt;/b&gt;&lt;/span&gt;&lt;span&gt;할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;7. &lt;/span&gt;&lt;span&gt;데이터프레임(DataFrame)&lt;/span&gt;&lt;span&gt;의 정렬 방식이 궁금하다면?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chodang-corn.tistory.com/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Python] 데이터프레임(DataFrame)의 정렬 방식&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 코딩테스트</category>
      <category>list</category>
      <category>Lv.0</category>
      <category>PYTHON</category>
      <category>sort</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/11</guid>
      <comments>https://chodang-corn.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 4 Feb 2025 15:08:11 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 데이터프레임(DataFrame)의 정렬 방식</title>
      <link>https://chodang-corn.tistory.com/10</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1Njon/btsL7pejffZ/OFjXhUW3etWhukFws1xM8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1Njon/btsL7pejffZ/OFjXhUW3etWhukFws1xM8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1Njon/btsL7pejffZ/OFjXhUW3etWhukFws1xM8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1Njon%2FbtsL7pejffZ%2FOFjXhUW3etWhukFws1xM8k%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;832&quot; height=&quot;645&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. 데이터프레임 정렬이란?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;파이썬의 &lt;/span&gt;&lt;span&gt;pandas&lt;/span&gt;&lt;span&gt; 라이브러리는 데이터프레임(&lt;/span&gt;&lt;span&gt;DataFrame&lt;/span&gt;&lt;span&gt;)을 다룰 때 강력한 정렬 기능을 제공합니다. 정렬은 데이터 분석에서 매우 중요한 과정으로, 데이터를 원하는 기준에 맞춰 정리하여 분석을 더 쉽게 수행할 수 있도록 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;pandas&lt;/span&gt;&lt;span&gt;에서는 크게 두 가지 방법으로 정렬할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;sort_values()&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 특정 컬럼(column)의 값을 기준으로 정렬&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;sort_index()&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 행(row)의 인덱스를 기준으로 정렬&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;2. &lt;/span&gt;&lt;span&gt;sort_values()&lt;/span&gt;&lt;span&gt;를 활용한 정렬&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  기본적인 &lt;/span&gt;&lt;span&gt;sort_values()&lt;/span&gt;&lt;span&gt; 사용법&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;haskell&quot;&gt;&lt;code&gt;import pandas as pd

# 예제 데이터 생성
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Score': [85, 92, 88, 79],
    'Age': [25, 23, 24, 22]
}
df = pd.DataFrame(data)

# Score 기준 오름차순 정렬
sorted_df = df.sort_values(by='Score')
print(sorted_df)&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&gt;출력 결과:&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;     Name  Score  Age
3  David     79   22
0  Alice     85   25
2  Charlie   88   24
1  Bob       92   23&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  내림차순 정렬&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted_df_desc = df.sort_values(by='Score', ascending=False)
print(sorted_df_desc)&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&gt;출력 결과:&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;     Name  Score  Age
1    Bob     92   23
2  Charlie   88   24
0   Alice    85   25
3   David    79   22&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  여러 컬럼 기준 정렬 (다중 정렬)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여러 개의 컬럼을 기준으로 정렬할 수도 있습니다. 예를 들어, &lt;/span&gt;&lt;span&gt;Score&lt;/span&gt;&lt;span&gt; 기준으로 정렬한 후, 동점자가 있을 경우 &lt;/span&gt;&lt;span&gt;Age&lt;/span&gt;&lt;span&gt;를 기준으로 정렬할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;sorted_df_multi = df.sort_values(by=['Score', 'Age'], ascending=[False, True])
print(sorted_df_multi)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;3. &lt;/span&gt;&lt;span&gt;sort_index()&lt;/span&gt;&lt;span&gt;를 활용한 정렬&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  기본적인 &lt;/span&gt;&lt;span&gt;sort_index()&lt;/span&gt;&lt;span&gt; 사용법&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;gauss&quot;&gt;&lt;code&gt;# 인덱스 기준 정렬
df_sorted_index = df.sort_index()
print(df_sorted_index)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;sort_index()&lt;/span&gt;&lt;span&gt;는 인덱스를 기준으로 정렬합니다. 특히, 행의 순서를 유지하면서 인덱스를 다시 정렬해야 하는 경우 유용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  내림차순 인덱스 정렬&lt;/span&gt;&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;df_sorted_index_desc = df.sort_index(ascending=False)
print(df_sorted_index_desc)&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&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;span&gt;4. &lt;/span&gt;&lt;span&gt;sort_values()&lt;/span&gt;&lt;span&gt; vs &lt;/span&gt;&lt;span&gt;sort_index()&lt;/span&gt;&lt;span&gt; 차이점 정리&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 66px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span style=&quot;color: #ffffff; text-align: start;&quot;&gt; 정렬 함수&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;기준&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;원본 변경 여부&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;반환값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;sort_values(by='컬럼')&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;특정 컬럼 값&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;❌ (기본적으로 변경 없음)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;정렬된 데이터프레임&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;sort_index()&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;행 인덱스&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;❌ (기본적으로 변경 없음)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 22px;&quot;&gt;&lt;span&gt;정렬된 데이터프레임&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  원본을 직접 변경하려면?&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;inplace=True&lt;/span&gt;&lt;span&gt; 옵션을 추가하면 원본 데이터프레임이 직접 변경됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;df.sort_values(by='Score', ascending=False, inplace=True)
print(df)  # 원본이 변경됨&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/10</guid>
      <comments>https://chodang-corn.tistory.com/10#entry10comment</comments>
      <pubDate>Sat, 1 Feb 2025 17:19:01 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스 풀이]: Lv.0 / 배열 뒤집기</title>
      <link>https://chodang-corn.tistory.com/9</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;작성:&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;&amp;nbsp;ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;[Lv.0 / 배열 뒤집기] 문제 설명&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beXnKx/btsL3xctknv/kAykC55QRGRbZmEbkaRx71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beXnKx/btsL3xctknv/kAykC55QRGRbZmEbkaRx71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beXnKx/btsL3xctknv/kAykC55QRGRbZmEbkaRx71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeXnKx%2FbtsL3xctknv%2FkAykC55QRGRbZmEbkaRx71%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;919&quot; height=&quot;665&quot; data-origin-width=&quot;919&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;정답&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;# Sol 1&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738148066348&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(num_list):
    return num_list[::-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;# Sol 2&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738148089194&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(num_list):
    num_list.reverse()
    return num_list&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;기억해야 할 것&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h1&gt;리스트 뒤집기: [::-1] vs .reverse() 차이점&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리스트를 뒤집는 방법에는 [::-1](슬라이싱)과 .reverse()(리스트 메서드) 두 가지가 있다.&lt;br /&gt;두 방식은 같은 결과를 반환하지만, 작동 방식과 반환값, 메모리 사용 측면에서 차이가 있다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. [::-1] (슬라이싱)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동작 방식&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[::-1]는 리스트를 &lt;b&gt;새로운 리스트로 복사한 후 뒤집어서 반환&lt;/b&gt;한다.&lt;/li&gt;
&lt;li&gt;원본 리스트는 변경되지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드 예제&lt;/h3&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738148334842&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def reverse_using_slicing(num_list):
    return num_list[::-1]

original_list = [1, 2, 3, 4, 5]
reversed_list = reverse_using_slicing(original_list)

print(reversed_list)  # [5, 4, 3, 2, 1]
print(original_list)  # [1, 2, 3, 4, 5] (변경 없음)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장단점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;원본 리스트 유지&lt;/b&gt;&lt;br /&gt;✅ &lt;b&gt;간결한 코드&lt;/b&gt;&lt;br /&gt;❌ &lt;b&gt;새로운 리스트를 생성하여 관리하므로 메모리 사용 증가&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. .reverse() (리스트 메서드)&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;동작 방식&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;.reverse()는 리스트를 &lt;b&gt;in-place(제자리에서) 뒤집는다&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;원본 리스트가 직접 변경되며, 새로운 리스트를 반환하지 않는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드 예제&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738148359293&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def reverse_using_reverse_method(num_list):
    num_list.reverse()
    return num_list

original_list = [1, 2, 3, 4, 5]
reverse_using_reverse_method(original_list)

print(original_list)  # [5, 4, 3, 2, 1] (원본 변경됨)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;장단점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ &lt;b&gt;새로운 리스트를 만들지 않아 메모리 효율적&lt;/b&gt;&lt;br /&gt;✅ &lt;b&gt;대용량 리스트 처리 시 유리&lt;/b&gt;&lt;br /&gt;❌ &lt;b&gt;원본 리스트가 변경됨&lt;/b&gt;&lt;br /&gt;❌ &lt;b&gt;반환값이 None이므로 직접 반환하면 오류 발생 가능&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.reverse()는 반환값이 없으므로, return num_list.reverse()를 하면 None이 반환된다.&lt;br /&gt;따라서 .reverse()를 호출한 후 별도로 리스트를 확인해야 한다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. [::-1] vs .reverse() 비교&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 66px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px; width: 20.9302%;&quot;&gt;방식&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;원본 변경&amp;nbsp;여부&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 23.2558%;&quot;&gt;메모리 사용&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;사용 사례&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px; width: 20.9302%;&quot;&gt;[::-1]&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;❌ 변경 안 됨&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 23.2558%;&quot;&gt;  증가&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;원본 유지 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;height: 22px; width: 20.9302%;&quot;&gt;.reverse()&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;✅ 변경됨&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 23.2558%;&quot;&gt;✅ 효율적&lt;/td&gt;
&lt;td style=&quot;height: 22px; width: 27.907%;&quot;&gt;원본 변경 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 어떤 방법을 선택해야 할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원본 리스트를 유지하면서 새로운 리스트가 필요할 때&lt;/b&gt; &amp;rarr; [::-1]&lt;/li&gt;
&lt;li&gt;&lt;b&gt;원본 리스트를 직접 수정해도 괜찮을 때&lt;/b&gt; &amp;rarr; .reverse()&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대용량 데이터를 다룰 때 메모리 사용을 최소화해야 할 때&lt;/b&gt; &amp;rarr; .reverse()&lt;/li&gt;
&lt;/ul&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;[::-1]은 가독성이 좋고 간편하지만, 새로운 리스트를 생성하기 때문에 메모리를 추가로 사용.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;반면, .reverse()는 원본 리스트를 직접 수정하므로 메모리 사용량이 적지만, 원본 유지가 필요할 경우 부적절.&lt;/span&gt;&lt;br /&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;</description>
      <category>파이썬 코딩테스트</category>
      <category>Lv.0</category>
      <category>PYTHON</category>
      <category>코딩테스트</category>
      <category>코테</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/9</guid>
      <comments>https://chodang-corn.tistory.com/9#entry9comment</comments>
      <pubDate>Wed, 29 Jan 2025 20:00:11 +0900</pubDate>
    </item>
    <item>
      <title>SQL 정규 표현식(Regex) 정리 및 활용 예제</title>
      <link>https://chodang-corn.tistory.com/8</link>
      <description>&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;작성: &lt;span style=&quot;color: #9d9d9d; text-align: right;&quot;&gt;Corn/sec,&lt;/span&gt; ChatGPT, 편집: Corn/sec&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL에서 정규 표현식(Regular Expressions, Regex)은 문자열 패턴을 검색하고 필터링하는 강력한 도구입니다.&lt;br /&gt;MySQL, PostgreSQL 등 여러 DBMS에서 REGEXP 또는 ~ 연산자를 사용하여 정규 표현식을 활용할 수 있습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;1. SQL 정규 표현식 기본 문법&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;① 기초 패턴&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;임의의 한 문자&lt;/td&gt;
&lt;td&gt;'c.t' &amp;rarr; 'cat', 'cut' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^&lt;/td&gt;
&lt;td&gt;문자열의 시작&lt;/td&gt;
&lt;td&gt;'^A' &amp;rarr; 'Apple' (일치), 'Banana' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$&lt;/td&gt;
&lt;td&gt;문자열의 끝&lt;/td&gt;
&lt;td&gt;'dog$' &amp;rarr; 'big dog' (일치), 'dog park' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;td&gt;0개 이상 반복&lt;/td&gt;
&lt;td&gt;'ba*n' &amp;rarr; 'bn', 'ban', 'baaan' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;+&lt;/td&gt;
&lt;td&gt;1개 이상 반복&lt;/td&gt;
&lt;td&gt;'ba+n' &amp;rarr; 'ban', 'baaan' (일치), 'bn' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;{n,m}&lt;/td&gt;
&lt;td&gt;최소 n번, 최대 m번 반복&lt;/td&gt;
&lt;td&gt;'a{2,4}' &amp;rarr; 'aa', 'aaa', 'aaaa' (일치), 'a', 'aaaaa' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;② 문자 클래스&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[abc]&lt;/td&gt;
&lt;td&gt;a, b, c 중 하나&lt;/td&gt;
&lt;td&gt;'gr[ae]y' &amp;rarr; 'gray', 'grey' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^abc]&lt;/td&gt;
&lt;td&gt;a, b, c 제외&lt;/td&gt;
&lt;td&gt;'[^0-9]' &amp;rarr; 숫자가 아닌 모든 문자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[0-9]&lt;/td&gt;
&lt;td&gt;숫자 (0~9)&lt;/td&gt;
&lt;td&gt;'\d'과 동일&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[a-zA-Z]&lt;/td&gt;
&lt;td&gt;영문자&lt;/td&gt;
&lt;td&gt;'^[A-Z]' &amp;rarr; 'Apple' (일치), 'banana' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\w&lt;/td&gt;
&lt;td&gt;영숫자 및 _&lt;/td&gt;
&lt;td&gt;'\w+' &amp;rarr; 'hello', 'user_123' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\s&lt;/td&gt;
&lt;td&gt;공백 문자&lt;/td&gt;
&lt;td&gt;'\s+' &amp;rarr; 'hello world' (공백 포함 검색)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;③ 앵커(위치 지정)&lt;/b&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;^&lt;/td&gt;
&lt;td&gt;문자열의 시작&lt;/td&gt;
&lt;td&gt;'^Hello' &amp;rarr; 'Hello World' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$&lt;/td&gt;
&lt;td&gt;문자열의 끝&lt;/td&gt;
&lt;td&gt;'end$' &amp;rarr; 'The end' (일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\b&lt;/td&gt;
&lt;td&gt;단어 경계&lt;/td&gt;
&lt;td&gt;'\bcat\b' &amp;rarr; 'the cat' (일치), 'catch' (불일치)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;2. SQL에서 정규 표현식 사용법&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;① MySQL 정규 표현식 활용 (REGEXP)&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 'J'로 시작하는 이름 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134633009&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM users WHERE name REGEXP '^J';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 'gmail.com' 이메일 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134637897&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM customers WHERE email REGEXP 'gmail\.com$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 3자리 숫자로 시작하는 전화번호 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134642677&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM employees WHERE phone REGEXP '^[0-9]{3}-[0-9]{4}-[0-9]{4}$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;② PostgreSQL 정규 표현식 활용 (~, ~*)&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 'admin'을 포함하는 아이디 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134653490&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM users WHERE username ~ 'admin';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 4자리 숫자로 끝나는 코드 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134658815&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM products WHERE product_code ~ '[0-9]{4}$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 대소문자 구분 없이 'discount' 포함 검색&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134663128&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM promotions WHERE description ~* 'discount';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;3. SQL 정규 표현식 실전 예제&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;① 회원 정보에서 특정 패턴 검색하기&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 전화번호 형식이 '010-1234-5678'인 데이터 찾기&lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134670928&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM members WHERE phone REGEXP '^010-[0-9]{4}-[0-9]{4}$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;-- 이메일이 'naver.com' 또는 'daum.net' 도메인을 포함하는 데이터 찾기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134675046&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM users WHERE email REGEXP 'naver\.com|daum\.net$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;② 상품 코드에서 특정 패턴 찾기&lt;/b&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;&lt;span&gt;-- 상품 코드가 'A1234' 형식인 데이터 찾기 (A로 시작, 4자리 숫자)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134561344&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM products WHERE product_code REGEXP '^A[0-9]{4}$';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;-- 할인 관련 설명이 포함된 상품 검색&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738134597953&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECT * FROM products WHERE description REGEXP 'sale|discount|off';&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;4. 정규 표현식을 지원하는 SQL DBMS&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DBMS&lt;/td&gt;
&lt;td&gt;정규 표현식 지원 여부&lt;/td&gt;
&lt;td&gt;주요 연산자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MySQL&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;REGEXP, RLIKE&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostgreSQL&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;~, ~*, !~, !~*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oracle&lt;/td&gt;
&lt;td&gt;O&lt;/td&gt;
&lt;td&gt;REGEXP_LIKE()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQL Server&lt;/td&gt;
&lt;td&gt;X&lt;/td&gt;
&lt;td&gt;지원 안 함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MySQL과 PostgreSQL은 기본적으로 정규 표현식을 지원하지만, SQL Server에서는 기본적으로 사용할 수 없습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;5. 결론&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL 정규 표현식은 데이터 검색과 필터링을 더 정교하게 수행할 수 있도록 도와줍니다.&lt;br /&gt;특히 REGEXP(MySQL), ~(PostgreSQL) 등의 연산자를 활용하면 특정 패턴을 가진 데이터를 쉽게 찾을 수 있습니다.&lt;/p&gt;</description>
      <category>SQL</category>
      <category>mysql</category>
      <category>postgresql</category>
      <category>regex</category>
      <category>sql</category>
      <category>정규식</category>
      <category>정규표현식</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/8</guid>
      <comments>https://chodang-corn.tistory.com/8#entry8comment</comments>
      <pubDate>Wed, 29 Jan 2025 16:12:51 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] Lv.0 &amp;quot;0 떼기&amp;quot;</title>
      <link>https://chodang-corn.tistory.com/7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;문제 링크 : &lt;a href=&quot;https://school.programmers.co.kr/learn/courses/30/lessons/181847&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://school.programmers.co.kr/learn/courses/30/lessons/181847&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제 설명:&lt;/p&gt;
&lt;pre id=&quot;code_1735625003155&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;정수로 이루어진 문자열 n_str이 주어질 때, 
n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.&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;pre id=&quot;code_1735625057267&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;2 &amp;le; n_str &amp;le; 10
n_str이 &quot;0&quot;으로만 이루어진 경우는 없습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&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;ans 1.&lt;/p&gt;
&lt;pre id=&quot;code_1735623256891&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n_str):
    return n_str.lstrip('0')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- lstrip: 문자열의 왼쪽에 있는 '0'을 모두 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ans 2.&lt;/p&gt;
&lt;pre id=&quot;code_1735623292388&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n_str):
    return str(int(n_str))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문자열을 정수(int)로 변환하여 앞의 '0'을 자동으로 제거&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 이후 다시 str(string) 타입으로 변환하여 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;* &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;입력 &lt;u&gt;문자열이 비어&lt;/u&gt; 있거나, &lt;u&gt;숫자가 아닌 값이 포함&lt;/u&gt;되면 오류가 발생할 수 있음 &lt;span style=&quot;color: #9d9d9d; text-align: start;&quot;&gt;-&amp;gt; 제한사항으로 인해 상관은 없음&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;* &lt;u&gt;입력이 '0000'인 경우 '0'으로 반환&lt;/u&gt;되므로, 빈 문자열이 필요한 경우에는 추가 처리가 필요 -&amp;gt; 제한사항으로 인해 상관은 없음&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ans 3.&lt;/p&gt;
&lt;pre id=&quot;code_1735623308078&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n_str):
    for i in range(len(n_str)):
        if n_str[i] != &quot;0&quot;:
            return n_str[i:]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 첫 번째 '0'이 아닌 문자를 찾으면 해당 인덱스부터 남은 문자열을 반환&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;* '0'이 아닌 문자를 찾으면 즉시 반환하므로 명확함&lt;/span&gt;&lt;/p&gt;</description>
      <category>파이썬 코딩테스트</category>
      <category>Lv0</category>
      <category>코테준비</category>
      <category>프로그래머스</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/7</guid>
      <comments>https://chodang-corn.tistory.com/7#entry7comment</comments>
      <pubDate>Tue, 31 Dec 2024 14:44:26 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스 풀이]: [PCCE 기출문제] 6번 / 가채점</title>
      <link>https://chodang-corn.tistory.com/6</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;출제된 문제에서 디버깅을 하는 문제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 주요 문구: &quot;our_score[i]는 numbers[i]번 학생이 가채점한 점수입니다. numbers는 중복된 원소를 가지지 않습니다.&quot;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9ogB0/btsI5YY6Wm2/ekf0LxZkOaui26Nc1hyAkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9ogB0/btsI5YY6Wm2/ekf0LxZkOaui26Nc1hyAkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9ogB0/btsI5YY6Wm2/ekf0LxZkOaui26Nc1hyAkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9ogB0%2FbtsI5YY6Wm2%2Fekf0LxZkOaui26Nc1hyAkk%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;800&quot; height=&quot;202&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 문제에서는 our_score 인덱스에 해당하는 값을 numbers의 인덱스로 사용. 또한 이것이 score_list의 값과 같을 때 &quot;same&quot;을 append함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;gt; 인덱스 값이 잘못 선택된 것.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723783980694&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 문제

def solution(numbers, our_score, score_list):
    answer = []
    for i in range(len(numbers)):
        if numbers[our_score[i]] == score_list[i]:
            answer.append(&quot;Same&quot;)
        else:
            answer.append(&quot;Different&quot;)
    
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1723783952858&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#풀이

def solution(numbers, our_score, score_list):
    answer = []
    for i in range(len(numbers)):
        if our_score[i] == score_list[numbers[i]-1]:
            answer.append(&quot;Same&quot;)
        else:
            answer.append(&quot;Different&quot;)
    
    return answer&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;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;score_list[numbers[i]-1] 부분이 중요한데, numbers[i]는 학생 번호이고, 실제 성적 리스트에서 이 학생 번호에 해당하는 성적을 찾기 위해 인덱스를 numbers[i]-1로 지정. 이유는 리스트 인덱스가 0부터 시작하기 때문에 학생 번호에서 1을 빼야 올바른 인덱스가 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;gt;&lt;span&gt; 예시&lt;/span&gt;:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 numbers = [1, 2, 3], our_score = [85, 90, 75], score_list = [85, 80, 75] 이라고 한다면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1번 학생: 가채점 85, 실제 성적 85 &amp;rarr; &quot;Same&quot;&lt;/li&gt;
&lt;li&gt;2번 학생: 가채점 90, 실제 성적 80 &amp;rarr; &quot;Different&quot;&lt;/li&gt;
&lt;li&gt;3번 학생: 가채점 75, 실제 성적 75 &amp;rarr; &quot;Same&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 [&quot;Same&quot;, &quot;Different&quot;, &quot;Same&quot;]이 됨&lt;/p&gt;</description>
      <category>파이썬 코딩테스트</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/6</guid>
      <comments>https://chodang-corn.tistory.com/6#entry6comment</comments>
      <pubDate>Fri, 16 Aug 2024 14:01:35 +0900</pubDate>
    </item>
    <item>
      <title>[우리 FISA 3기 AI엔지니어링] 5주차 후기 (학습정리, 회고)</title>
      <link>https://chodang-corn.tistory.com/5</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이제 코드가 익숙해 졌다. 아니 영타가 익숙해 진것 같다. 하핳&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhhwpF/btsI0sfqjZJ/kvq0aCGTbXUclXWIFD700K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhhwpF/btsI0sfqjZJ/kvq0aCGTbXUclXWIFD700K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhhwpF/btsI0sfqjZJ/kvq0aCGTbXUclXWIFD700K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhhwpF%2FbtsI0sfqjZJ%2Fkvq0aCGTbXUclXWIFD700K%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;846&quot; height=&quot;402&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[5주차 총 요약]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 가상 환경 set up을 위한 docker, linux 학습&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- docker 컨테이너 관리 ssh설정, linux 명령어 등 향후 업무를 수행/운영/관리 할 수 있도록 학습함&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 학습 skill: docker/ ubuntu/ linux/ xshell&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style3&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mgFNN/btsI0FZPdUK/kMqCkR5ZwJkmAOMecs09z0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mgFNN/btsI0FZPdUK/kMqCkR5ZwJkmAOMecs09z0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mgFNN/btsI0FZPdUK/kMqCkR5ZwJkmAOMecs09z0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmgFNN%2FbtsI0FZPdUK%2FkMqCkR5ZwJkmAOMecs09z0%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;796&quot; height=&quot;427&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style2&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[   수업 내용 회고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;]&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;i&gt;* 계속 헷갈렸던 것들 만 정리&lt;/i&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;1. Docker&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- docker 설치, 실행 학습&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;i&gt; * docker desktop이 실행되어 있지 않으면 docker 명령어가 CLI에서 작동하지 않으니 항상 유의할 것&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 기본 docker 코드 기억할 것&lt;/p&gt;
&lt;pre id=&quot;code_1723193070661&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run	# 컨테이너 실행
docker ps	# 실행 중 컨테이너 확인
docker stop # 실행 중 컨테이너 중지
docker rm	# 컨테이너 삭제
docker images	# 로컬에 저장된 모든 이미지 확인
docker pull		# 도커 이미지 다운로드
docker push		# 도커 이미지 docker hub와 같은 이미지 레지스트리에 업로드
docker exec		# 실행 중 컨테이너에서 명령어 실행
docker build	# 도커 이미지 빌드
docker-compose	# 여러 컨테이너를 관리 및 실행&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;2. Ubuntu&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- Ubuntu 이미지 한글 입력 문제가 발생할 수 있으니, bash로 LC_ALL 값이 우선적으로 사용될 수 있도록 유의 할 것&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 컨테이너 먼저 생성 후 이미지 생성 후 $ docker commit&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;3. Linux&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- sudo 권한 설정 관련&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;user02가 sudo 권한을 얻도록 sudoers 파일에 추가하는 방법.&lt;/li&gt;
&lt;li&gt;visudo 명령어를 사용하여 안전하게 sudoers 파일을 편집.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;31&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciGKER/btsIZWnJTbF/qCsAwy0RVw7BcKziNlk9e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciGKER/btsIZWnJTbF/qCsAwy0RVw7BcKziNlk9e0/img.png&quot; data-alt=&quot;su -: 최상위 root 파일로 인식하게 함, su user02로 하면 사용자를 전환할 수 있게함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciGKER/btsIZWnJTbF/qCsAwy0RVw7BcKziNlk9e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciGKER%2FbtsIZWnJTbF%2FqCsAwy0RVw7BcKziNlk9e0%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;298&quot; height=&quot;31&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;31&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;su -: 최상위 root 파일로 인식하게 함, su user02로 하면 사용자를 전환할 수 있게함&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;21&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCTpXH/btsI1DUg9Cp/v7mkTmb2isLfKQOj92FjS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCTpXH/btsI1DUg9Cp/v7mkTmb2isLfKQOj92FjS1/img.png&quot; data-alt=&quot;최상위 폴더로 가게 함 - Linux에서는 무조건 /(슬래쉬)로 최상위 폴더로 가게 함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCTpXH/btsI1DUg9Cp/v7mkTmb2isLfKQOj92FjS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCTpXH%2FbtsI1DUg9Cp%2Fv7mkTmb2isLfKQOj92FjS1%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;247&quot; height=&quot;21&quot; data-origin-width=&quot;247&quot; data-origin-height=&quot;21&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최상위 폴더로 가게 함 - Linux에서는 무조건 /(슬래쉬)로 최상위 폴더로 가게 함&lt;/figcaption&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;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt; 환&lt;/span&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;PATH 환경 변수 설정 및 추가 방법.&lt;/li&gt;
&lt;li&gt;환경 변수와 지역 변수의 차이.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;-&lt;span&gt;&lt;span&gt; 사&lt;/span&gt;&lt;/span&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;/li&gt;
&lt;li&gt;~/.bashrc와 /root/.bashrc 파일을 편집하여 각 사용자에 대해 다른 설정 적용.&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# vim 추가 공부 필요!&lt;/p&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 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[ &amp;nbsp;✨ 가장 좋았던 점 ✨ ]&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;1. 꼼꼼한 티칭&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;✅ 리눅스를 처음 다루는 사람이 조금씩 있었는데(그게 바로 나), 아무래도 정말 사소한 실수들이 많을 수 밖에 없었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt; 강사님께서 우리가 놓친 부분이 있으면 바로 피드백도 해주시고, 쉬는 시간에도 열심히 알려주셨다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt; 나는 어떤 사용자에서 어떤 권한을 설정 할 수 있는지 계속 헷갈려 해서, 계속 사용자를 전환해 가며 코드를 복습하였다. 이젠 su -, sudo, cd ~ 등 나름 익숙해져 가는 듯..!&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;friends1&quot; data-emoticon-name=&quot;017&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;2. 스터디의 시작 &lt;b&gt; &lt;/b&gt; &lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;✅ 드디어 관심 분야가 비슷한 친구들과 스터디를 시작하게 되었다. 특히 친구들이 내 코드를 하나하나 꼼꼼히 봐주는데 부끄럽지만 정말 많은 도움이 되고 있다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt; 땡큐 칭구들..!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt; 나는 구현을 잘 못해서 매일매일 쉬운 코딩부터 연습하는게 필요해 보인다. 아자아자!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;✅&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;알고리즘 스터디를 시작한 것인데, 우리 FISA에서 제공해주는 Udemy강의를 활용하고 있다. 꽤나 유용한듯!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt; 우리 FISA에서 실무자 특강, 전 기수 분들의 취업 후기, 유료 강의 1년 구독권 제공, SQL관련 자격증 무료 응시권 등 생각보다 다양한 혜택을 준다. 입과 후 쏠쏠히 이용하기 좋은 것 같다. 굿뜨!&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;friends1&quot; data-emoticon-name=&quot;007&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style2&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  &amp;nbsp;추가 이야기&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;friends1&quot; data-emoticon-name=&quot;006&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;이 곳에 온 이후로 생긴 새로운 취미: 신기한 과자들 먹어보기&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;친구들이랑 내기하다가 &lt;br /&gt;성공해보겠다고 집에까지 들고와서 완성했다 하핳 (공부하기 시렀나봐..+과자 들고온건 첨이예요 ㅠ)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;중간에 한번 아프고 나서 적당히 쉬겟다고 수원(?)에 새로운 별마당 도서관을 다녀왔다. 데이트 조아조아&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240811_204409008_02.jpg&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0VUqu/btsI0LZNXtu/K8M3Ds9r4momDrPkrQYwkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0VUqu/btsI0LZNXtu/K8M3Ds9r4momDrPkrQYwkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0VUqu/btsI0LZNXtu/K8M3Ds9r4momDrPkrQYwkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0VUqu%2FbtsI0LZNXtu%2FK8M3Ds9r4momDrPkrQYwkK%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;2160&quot; height=&quot;2880&quot; data-filename=&quot;KakaoTalk_20240811_204409008_02.jpg&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240811_204409008_01.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHW4Jq/btsI1WTCmDb/dX4lJmd6BSkNVc76oUTG9k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHW4Jq/btsI1WTCmDb/dX4lJmd6BSkNVc76oUTG9k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHW4Jq/btsI1WTCmDb/dX4lJmd6BSkNVc76oUTG9k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHW4Jq%2FbtsI1WTCmDb%2FdX4lJmd6BSkNVc76oUTG9k%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;KakaoTalk_20240811_204409008_01.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240811_204409008.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pfUbr/btsI01ahkzf/p5tVkkKvkNgOuocNAzbPyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pfUbr/btsI01ahkzf/p5tVkkKvkNgOuocNAzbPyK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pfUbr/btsI01ahkzf/p5tVkkKvkNgOuocNAzbPyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpfUbr%2FbtsI01ahkzf%2Fp5tVkkKvkNgOuocNAzbPyK%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;KakaoTalk_20240811_204409008.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번주도 알찼다!! 계속 해보자 할 수 있다!            &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>우리FISA</category>
      <category>AI</category>
      <category>ai엔지니어링</category>
      <category>K-디지털 트레이닝</category>
      <category>PYTHON</category>
      <category>우리FIS</category>
      <category>우리fisa</category>
      <category>우리은행</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/5</guid>
      <comments>https://chodang-corn.tistory.com/5#entry5comment</comments>
      <pubDate>Sun, 11 Aug 2024 20:53:27 +0900</pubDate>
    </item>
    <item>
      <title>[우리 FISA 3기 AI엔지니어링] 3주차 후기 (학습정리, 회고)</title>
      <link>https://chodang-corn.tistory.com/3</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyQuUS/btsIROadXWK/QWe5gkaGI2KgV5qj20K4O0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyQuUS/btsIROadXWK/QWe5gkaGI2KgV5qj20K4O0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyQuUS/btsIROadXWK/QWe5gkaGI2KgV5qj20K4O0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyQuUS%2FbtsIROadXWK%2FQWe5gkaGI2KgV5qj20K4O0%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;846&quot; height=&quot;403&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;403&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정신없는 우리FISA의 3주차가 지나가고 있다. 말그대로 &lt;u&gt;&lt;i&gt;&lt;b&gt;time flies!&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;배우는 내용과 실습이 정말 많아지고, 입과 전 신청해 놓은 공모전까지 겹치다보니 정말 쉴 쉬간이 부족하다.ㅠ&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[3주차 총 요약]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 파이썬으로 프론드 체험을 할 수 있는 streamlit과 mysql을 중점적으로 배웠다. sqld 공부를 했었는데 실제로 코드를 짜는건 정말 다르다. 많은 문제를 풀어봐야겠다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 우리FISA만의 장점인 '금융테크실무' 특강이 토요일에 이루어 졌다. 우리 FISA로 고르길 잘했다는 마음이 드는 강의였다. (우리 은행/카드의 차장/과장님 등등 많은 분들이 정말 현실적인 내용을 전달해 주셔서 정말 많은 도움이 됐다.)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style3&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHvX15/btsIPuSfZTd/lJySEFdhOzuHvwhoqG97E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHvX15/btsIPuSfZTd/lJySEFdhOzuHvwhoqG97E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHvX15/btsIPuSfZTd/lJySEFdhOzuHvwhoqG97E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHvX15%2FbtsIPuSfZTd%2FlJySEFdhOzuHvwhoqG97E1%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;796&quot; height=&quot;427&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style2&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[   수업 내용 회고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;]&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style6&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;1. I'm so sorry but I love you 다 거짓말&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정말 죄송하지만, 이번주의 회고는 pass 하겠습니다..........&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;화장실도 참아가며 공모전 준비에 수업 진도 따라가기에 정신이 없었어요....&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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;style2&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  &amp;nbsp;추가 이야기&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;빠르게 추가 이야기만 풀겠다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;토요일 현직자 특강인 &quot;금융테크실무&quot;강의 자료를 받았다. 대외비다. 두근두근&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;토요일에도 간식은 많다. 오히려 좋아~&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;비싼 끌레도르도 주신다. 히히 감사합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&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/dDZw4I/btsIQKlXyYw/kTgjlHnblIMGJlBQNHTCqK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDZw4I/btsIQKlXyYw/kTgjlHnblIMGJlBQNHTCqK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDZw4I/btsIQKlXyYw/kTgjlHnblIMGJlBQNHTCqK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDZw4I%2FbtsIQKlXyYw%2FkTgjlHnblIMGJlBQNHTCqK%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;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;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NLMCJ/btsIRflJmLn/I8gqZhvBYWD7iaiau1lCek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NLMCJ/btsIRflJmLn/I8gqZhvBYWD7iaiau1lCek/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NLMCJ/btsIRflJmLn/I8gqZhvBYWD7iaiau1lCek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNLMCJ%2FbtsIRflJmLn%2FI8gqZhvBYWD7iaiau1lCek%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;2160&quot; height=&quot;2880&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mZ9VY/btsIRw8CsTH/a30TyfcqxmKYqPouohPhC1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mZ9VY/btsIRw8CsTH/a30TyfcqxmKYqPouohPhC1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mZ9VY/btsIRw8CsTH/a30TyfcqxmKYqPouohPhC1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmZ9VY%2FbtsIRw8CsTH%2Fa30TyfcqxmKYqPouohPhC1%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;2160&quot; height=&quot;2880&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정신없는 3주차가 지나고 있다. 이번주에 월말평가도 있는데 젭알 잘하자. 할 수 있다!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;+ 현직자분들이 sql 정말 열심히 하래여. 보안때문에 거의 손코딩처럼 한땀한땀 써야 한데여. 오라클 구조 꼭 알고 오래여.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;+ 아자아자!!!!!!!!!&lt;/p&gt;</description>
      <category>우리FISA</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/3</guid>
      <comments>https://chodang-corn.tistory.com/3#entry3comment</comments>
      <pubDate>Sun, 28 Jul 2024 23:54:55 +0900</pubDate>
    </item>
    <item>
      <title>[우리 FISA 3기 AI엔지니어링] 2주차 후기 (학습정리, 회고)</title>
      <link>https://chodang-corn.tistory.com/2</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRmWPG/btsILUCVlM8/RDkelfguokVia3L2Hq2VTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRmWPG/btsILUCVlM8/RDkelfguokVia3L2Hq2VTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRmWPG/btsILUCVlM8/RDkelfguokVia3L2Hq2VTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRmWPG%2FbtsILUCVlM8%2FRDkelfguokVia3L2Hq2VTK%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;846&quot; height=&quot;402&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;402&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;벌써 우리FISA에 입과한지 2주차가 되었다. 시간이 매우 빠르게 느껴진다.&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;[2주차 총 요약]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 2주차에는 Python을 이용한 기초적 데이터 분석과 시각화 기법을 배웠다. (with NumPy, Pandas, Matplotlib and Seaborn)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 비전공자라 몰랐는데, 코드를 공유하고 협업을 통해 코드를 짜는게 생각보다 많이 도움이 되고 재미있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignRight&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dC8PSB/btsIHHCYYja/SpYrkHlkTmLyADLZxfPbP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dC8PSB/btsIHHCYYja/SpYrkHlkTmLyADLZxfPbP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dC8PSB/btsIHHCYYja/SpYrkHlkTmLyADLZxfPbP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdC8PSB%2FbtsIHHCYYja%2FSpYrkHlkTmLyADLZxfPbP0%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;796&quot; height=&quot;427&quot; data-origin-width=&quot;1606&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: right;&quot; 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;style2&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[   수업 내용 회고 &lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;b&gt;]&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;1. Python 기초 (클래스)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python의 클래스 개념을 이해하고 활용하는 방법에 대해 학습했습니다. 클래스는 객체 지향 프로그래밍의 핵심 요소로, 복잡한 데이터 구조와 기능을 효율적으로 관리할 수 있게 해줍니다. 수업에서는 클래스 정의, 속성 및 메서드, 상속 등을 다루었습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Python 클래스 예제&lt;br /&gt;
&lt;pre id=&quot;code_1721492131326&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Student:
    def __init__(self, name, age, grade):
        self.name = name
        self.age = age
        self.grade = grade
    
    def get_info(self):
        return f&quot;Name: {self.name}, Age: {self.age}, Grade: {self.grade}&quot;

student = Student(&quot;John Doe&quot;, 20, &quot;A&quot;)
print(student.get_info())​&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클래스 정의:&lt;/b&gt; class Student:를 통해 Student라는 이름의 클래스를 정의&lt;/li&gt;
&lt;li&gt;&lt;b&gt;생성자 메서드 '__init__'&lt;/b&gt;&lt;br /&gt;- '__init__(self, name, age, grade) '메서드는 클래스의 생성자(constructor)로, 객체가 생성될 때 자동으로 호출ehla&lt;br /&gt;- 'self'는 생성된 객체 자신을 참조하며, name, age, grade를 인스턴스 변수로 초기화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인스턴스 메서드 ' &lt;b&gt;get_info': '&lt;/b&gt;&lt;/b&gt;get_info(self)' 메서드는 학생의 정보를 문자열로 반환&lt;/li&gt;
&lt;li&gt;&lt;b&gt; 객체 생성 및 메서드 호출 :&lt;br /&gt;&lt;/b&gt;- 'student = Student(&quot;John Doe&quot;, 20, &quot;A&quot;)'를 통해 'Student' 클래스의 인스턴스를 생성&lt;br /&gt;- 'print(student.get_info())'를 통해 'get_info' 메서드를 호출하여 학생의 정보를 출력&lt;/li&gt;
&lt;/ul&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; (개인적 후기) 개인적을 클래스와 같이 구조가 여러개 엮이면 정리가 잘 안돼서 어려워 하는 것 같다.&lt;/p&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;self의 사용&lt;/b&gt;: 모든 인스턴스 메서드는 첫 번째 매개변수로 self를 받아야 합니다. 이는 해당 메서드가 호출된 객체를 참조하게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;변수 초기화&lt;/b&gt;: 생성자 메서드에서 객체의 초기 상태를 설정하는 것이 중요합니다. 모든 필수적인 인스턴스 변수를 초기화해야 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문자열 포맷팅&lt;/b&gt;: f-string을 사용하여 문자열을 포맷팅하는 방법은 가독성이 높고 사용하기 편리합니다.&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;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;2. 데이터 분석 with NumPy&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;NumPy는 고성능 수치 계산을 위한 패키지로, 특히 배열 및 행렬 연산에 유용합니다. 수업에서는 NumPy의 기본 사용법, 배열 생성 및 조작, 수학 및 통계 연산 등을 실습했습니다. 예를 들어, 배열의 합과 평균을 구하는 간단한 코드부터 시작해서 고급 연산까지 다루었습니다​.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;NumPy 배열 연산 예제 &lt;br /&gt;
&lt;pre id=&quot;code_1721493027853&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import numpy as np

scores = np.array([80, 90, 85, 95, 88])
total = np.sum(scores)
average = np.mean(scores)
print(f&quot;Total: {total}, Average: {average}&quot;)​&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;라이브러리 임포트&lt;/b&gt;: 'import numpy as np'를 통해 NumPy 라이브러리를 'np'라는 이름으로 임포트함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;배열 생성&lt;/b&gt;: 'scores = np.array([80, 90, 85, 95, 88])'를 통해 'scores'라는 1차원 배열을 생성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;합계 계산&lt;/b&gt;: 'total = np.sum(scores)'를 통해 'scores' 배열의 모든 요소를 합산하여 'total' 변수에 저장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;평균 계산&lt;/b&gt;: 'average = np.mean(scores)'를 통해 'scores' 배열의 평균 값을 계산하여 'average' 변수에 저장&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과 출력&lt;/b&gt;: 'print(f&quot;Total: {total}, Average: {average}&quot;)'를 통해 합계와 평균을 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; (개인적 후기) 코딩으로 수학 문제를 풀어본 적이 없어서, 코드를 통해 수학 연산 자체를 표현하는 과정이 헷갈렸다. 지속적 연습이 필요해 보인다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;❗(유의할 점)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배열 생성: NumPy 배열은 리스트나 튜플과는 다르게 연산이 가능하며, 데이터 타입이 일관되게 유지된다.&lt;/li&gt;
&lt;li&gt;타입 유의: NumPy 배열은 특정 데이터 타입을 갖기 때문에, 배열에 저장되는 모든 요소는 동일한 타입을 갖습니다. 이를 통해 연산이 최적화된다.&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;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;3. 데이터 분석 with Pandas&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas는 데이터 조작 및 분석에 매우 유용한 라이브러리입니다. Pandas를 사용하면 데이터 프레임을 통해 대용량 데이터를 효율적으로 처리하고 분석할 수 있습니다. 수업에서는 데이터 프레임 생성, 데이터 정렬 및 필터링, 그룹화 및 집계 등의 기능을 학습했습니다. 또한, 실습을 통해 데이터 전처리와 변환 작업을 수행했습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Pandas 데이터 프레임 예제 &lt;br /&gt;
&lt;pre id=&quot;code_1721493557395&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'Score': [85, 90, 95]
}
df = pd.DataFrame(data)
print(df)

df_sorted = df.sort_values(by='Age', ascending=False)
print(df_sorted)​&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;라이브러리 임포트: &lt;/b&gt;import pandas as pd를 통해 Pandas 라이브러리를 pd라는 이름으로 임포트&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 딕셔너리 생성&lt;/b&gt;: data라는 딕셔너리를 생성하여 세 개의 키('Name', 'Age', 'Score')와 각각의 값을 리스트 형태로 정의&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 프레임 생성&lt;/b&gt;:&lt;br /&gt;- df = pd.DataFrame(data)를 통해 data 딕셔너리를 바탕으로 데이터 프레임 df를 생성&lt;br /&gt;- print(df)를 통해 데이터 프레임을 출력하여 생성된 내용을 확인&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 프레임 정렬&lt;/b&gt;:&lt;br /&gt;- df_sorted = df.sort_values(by='Age', ascending=False)를 통해 df 데이터 프레임을 'Age' 컬럼을 기준으로 내림차순으로 정렬하여 df_sorted에 저장&lt;br /&gt;- print(df_sorted)를 통해 정렬된 데이터 프레임을 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; (개인적 후기) 슬슬 빅분기 공부를 하던 범위가 나오고 있다.   드디어 머리가 조금은 쉴 수 있다.  &amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&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;b&gt;데이터 일관성&lt;/b&gt;: 데이터 프레임을 생성할 때, 각 컬럼의 리스트는 동일한 길이를 가져야 합니다. 그렇지 않으면 ValueError가 발생합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정렬 기준&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;sort_values 메서드를 사용할 때 by 파라미터에 정렬 기준이 되는 컬럼 이름을 지정합니다.&lt;/li&gt;
&lt;li&gt;ascending 파라미터를 False로 설정하면 내림차순으로 정렬되며, 기본값은 True로 오름차순 정렬입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 변경&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;sort_values 메서드는 원본 데이터 프레임을 변경하지 않고 정렬된 새로운 데이터 프레임을 반환합니다. 원본 데이터 프레임을 변경하려면 inplace=True 파라미터를 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1721495629277&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 데이터 프레임을 나이(Age) 기준으로 내림차순 정렬, 원본 데이터 프레임에 바로 변경
df.sort_values(by='Age', ascending=False, inplace=True)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;4. 데이터 시각화 with Matplotlib and Seaborn&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;[ Matplotlib ]&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Matplotlib는 다양한 시각화 기능을 제공하는 라이브러리로, 데이터의 분포와 관계를 직관적으로 파악할 수 있게 해줍니다. 수업에서는 기본적인 선 그래프, 막대 그래프, 히스토그램, 산점도 등을 그리는 방법을 배웠습니다. 또한, 그래프의 스타일과 레이아웃을 설정하는 방법도 학습했습니다 .&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Matplotlib 시각화 예제&lt;br /&gt;
&lt;pre id=&quot;code_1721493609525&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
plt.plot(x, y, marker='o')
plt.title(&quot;Sample Line Plot&quot;)
plt.xlabel(&quot;X-axis&quot;)
plt.ylabel(&quot;Y-axis&quot;)
plt.show()​&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;라이브러리 임포트&lt;/b&gt;: import matplotlib.pyplot as plt를 통해 Matplotlib의 pyplot 모듈을 plt라는 이름으로 임포트&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 정의&lt;/b&gt;: x와 y 리스트를 정의하여 플롯에 사용할 데이터를 준비&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라인 플롯 생성&lt;/b&gt;:&lt;br /&gt;- plt.plot(x, y, marker='o')를 통해 x와 y 데이터를 라인 플롯으로 생성&lt;br /&gt;- marker='o' 옵션을 사용하여 데이터 포인트에 원형 마커를 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제목 및 축 레이블 설정&lt;/b&gt;:&lt;br /&gt;- plt.title(&quot;Sample Line Plot&quot;)를 통해 플롯의 제목을 설정&lt;br /&gt;- plt.xlabel(&quot;X-axis&quot;)를 통해 X축의 레이블을 설정&lt;br /&gt;- plt.ylabel(&quot;Y-axis&quot;)를 통해 Y축의 레이블을 설정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;플롯 표시&lt;/b&gt;:&lt;br /&gt;- plt.show()를 통해 플롯을 화면에 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; (개인적 후기) EDA를 계획할 때, 빠르게 데이터를 파악하는데 도움이 될 것 같다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&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;b&gt;데이터 길이 일치&lt;/b&gt;: x와 y 리스트의 길이가 같아야 합니다. 그렇지 않으면 ValueError가 발생합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;플롯 커스터마이징&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;plot 함수는 다양한 옵션을 제공하여 라인의 스타일, 색상, 마커 등을 커스터마이징할 수 있습니다.&lt;/li&gt;
&lt;li&gt;예를 들어, plt.plot(x, y, color='red', linestyle='--', marker='x')와 같이 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;한글 폰트 설정&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;한글 제목이나 레이블을 사용할 경우 폰트 깨짐 현상이 발생할 수 있습니다. 이 경우 폰트를 설정해주어야 합니다.&lt;/li&gt;
&lt;li&gt;예: plt.rc('font', family='NanumGothic')&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;[ Seaborn ]&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Seaborn은 Matplotlib를 기반으로 한 고급 시각화 라이브러리로, 통계적 데이터 시각화에 강력한 기능을 제공합니다. 수업에서는 Seaborn의 기본 설정, 다양한 플롯(분포도, 회귀선, 막대 그래프 등) 그리는 방법을 다루었습니다. 특히, 데이터 프레임과의 연계성을 통해 복잡한 데이터 시각화를 쉽게 구현할 수 있었습니다 .&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Matplotlib 시각화 예제&lt;br /&gt;
&lt;pre id=&quot;code_1721498026978&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

df = sns.load_dataset(&quot;iris&quot;)
sns.pairplot(df, hue='species')
plt.show()​&lt;/code&gt;&lt;/pre&gt;
● 라이브러리 임포트: &lt;br /&gt;&amp;nbsp; - import seaborn as sns를 통해 Seaborn 라이브러리를 sns라는 이름으로 임포트&lt;br /&gt;&amp;nbsp; - import pandas as pd를 통해 Pandas 라이브러리를 pd라는 이름으로 임포트&lt;br /&gt;&amp;nbsp; - import matplotlib.pyplot as plt를 통해 Matplotlib의 pyplot 모듈을 plt라는 이름으로 임포트&lt;br /&gt;● 데이터셋 로드: df = sns.load_dataset(&quot;iris&quot;)를 통해 Seaborn의 내장 데이터셋인 &quot;iris&quot; 데이터를 로드하여 데이터 프레임 df에 저장&lt;br /&gt;● Pair Plot 생성: sns.pairplot(df, hue='species')를 통해 df 데이터 프레임의 각 변수 쌍에 대해 산점도를 그리고, hue='species'를 사용하여 각 종(species)에 따라 색상을 다르게 표시&lt;br /&gt;● 플롯 표시: plt.show()를 통해 생성된 플롯을 화면에 표시&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; (개인적 후기) R을 사용했던 나로서는, 이렇게 상세하게 그래프 안의 내용을 커스터마이징 할 수 있는 점이 매우 유용해 보였다. 위에서 모두 설명하진 못했지만, 실제 수업시간에는 폰트 크기/ 글씨 굵기/ 글씨 회정 등 다양하게 그래프를 커스터마이징 할 수 있는 코드를 배웠다. 예전에 논문을 쓸 때 revision으로 시각화를 조금 더 해달라는 피드백을 받은 적 있는데, 파이썬을 조금 더 잘했더라면 더욱 보기 좋은(시각화가 잘된) 그래프가 완성 되었지 않았을까 생각이 들었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&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;b&gt;데이터셋 로드&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Seaborn의 load_dataset 함수는 다양한 내장 데이터셋을 제공합니다. 이 예제에서는 &quot;iris&quot; 데이터셋을 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pair Plot 사용&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;Pair Plot은 데이터의 모든 변수 쌍에 대해 산점도를 그리기 때문에, 변수의 수가 많으면 플롯이 복잡해질 수 있습니다.&lt;/li&gt;
&lt;li&gt;hue 파라미터를 사용하면 카테고리 변수에 따라 색상을 다르게 하여 시각적으로 구분할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시각화 설정&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;필요에 따라 Seaborn과 Matplotlib의 설정을 변경하여 플롯의 스타일, 크기, 색상 등을 커스터마이징할 수 있습니다.&lt;/li&gt;
&lt;/ul&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;style3&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Numpy와 Pandas 기초부터 실습예제까지 활용하여 수업이 진행되어 내용을 이해하기에 용이했다. 또한 데이터 시각화를 통해 빠르게 데이터를 파악하고, 그래프를 커스터마이징 할 수 있는 코드를 알려주셔서 향후 시각화가 필요한 업무에 적용 할 수 있을 기회가 있지 않을까 싶다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[ &amp;nbsp;✨ 가장 좋았던 점 ✨ ]&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;1. 팀 프로젝트 실습&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 클래스 생성을 배우고 난 후, 실습으로 팀 단위로 코드를 짜고 코드리뷰를 진행 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt; ✅ 실습 내용: 마켓컬리의 회원 등급을 모방하여 일반 회원, 프렌즈, 퍼플 회원을 클래스로 구현하고, 각 회원이 제품을 구매할 때의 행동을 코드로 작성 함 (작성한 코드는 아래의 더보기에 있습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;작성한 코드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;클래스 생성&lt;/b&gt;&lt;br /&gt;
&lt;pre id=&quot;code_1721494264029&quot; class=&quot;ruby&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;class Product:
    # code: 제품번호, name: 상품명, num: 상품 갯수, price: 상품가격
    def __init__(self, code, name, num, price):
        self.code = code
        self.name = name
        self.num = num
        self.price = price

class Plain:
    # member_id: 회원아이디, name: 이름, point: 적립률, review_point: 더블 적립 여부, stack_point: 누적 적립금
    def __init__(self, member_id, name):
        self.member_id = member_id
        self.name = name
        self.point = 0.005
        self.review_point = False
        self.stack_point = 0

    # 상품 구매시 포인트 적립 및 누적포인트, 더블 후기 가능 여부 출력
    def buy(self, product, num):
        if isinstance(product, Product):

            print(f'{product.name}을(를) 구매하였습니다.{round(product.price * self.point)} 포인트 적립완료')

            self.stack_point += round(product.price * self.point)
            print(f'누적포인트 : {self.stack_point}')

            print(self.double_review)
        else:
            print('바코드를 읽을 수 없습니다.')

    # 더블 후기 가능 여부 판단
    @property
    def double_review(self):
        if self.review_point:
            return '후기 적립금이 두 배로 적립됩니다.'
        else:
            return '후기 적립금은 기본 적립률로 적립됩니다.'

class Friends(Plain):
    # point: 적립률, coupon: 잔여 쿠폰 갯수
    def __init__(self, member_id, name):
        super().__init__(member_id, name)
        self.point = 0.01
        self.coupon = 3

    # 재정의 - 쿠폰 사용 여부 추가
    def buy(self, product, num):
        if isinstance(product, Product):
            print(f'{product.name}을(를) 구매하였습니다.{round(product.price * self.point)} 포인트 적립완료')

            self.stack_point +=round(product.price * self.point)
            print(f'누적포인트 : {self.stack_point}')

            print(self.double_review)

            if self.coupon &amp;gt; 0:
                self.coupon -= 1
                print(f'쿠폰이 1장 사용되었습니다. (남은 쿠폰 : {self.coupon})')
        else:
            print('바코드를 읽을 수 없습니다.')

class Purple(Friends):
    # point: 적립률, coupon: 잔여 쿠폰 갯수, review_point: 더블 적립 여부
    def __init__(self, member_id, name):
        super().__init__(member_id, name)
        self.coupon = 4
        self.point = 0.07
        self.review_point = True # 재정의​&lt;/code&gt;&lt;/pre&gt;
&lt;b&gt;&lt;br /&gt;시연을 위한 테스트용 코드&lt;/b&gt;&lt;br /&gt;
&lt;pre id=&quot;code_1721494264031&quot; class=&quot;ini&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;rippie = Product('code0001' ,'립파이', 10, 2000)
ppoddo = Product('code0002' ,'뽀또', 10, 1000)

member1 = Plain('aaa', '짱구')
member2 = Friends('bbb', '짱아')
member3 = Purple('ccc', '철수')​&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1721494264031&quot; class=&quot;stylus&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;member1.buy(rippie, 1)
print()
member2.buy(rippie, 1)
print()
member3.buy(rippie, 1)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1721494264031&quot; class=&quot;ebnf&quot; style=&quot;background-color: #f8f8f8; color: #383a42;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;mogu = '모구모구'
member1.buy(mogu, 1)&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  (팀 프로젝트 후기)&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 사실 수업시간에 모르는 것에 대한 질문을 많이 해본 상태라, 팀원들과 사이가 좋은 상태였다. (팀원들 짱 착함) 그래서 그런지 정말 자유롭게 의견을 교환하고, 코드를 작성하여 즐겁게 팀프로젝트를 진행 할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 특히, 서로의 백그라운드(경험)가 다른 사람들 끼리 모여서 그런지, 생각의 방향이 다른게 흥미로웠다. 예를 들어, 나는 전략 기획쪽에서 일을해서 그런지 사용자의 시나리오를 생각해보는게 익숙했고, 개발을 하시던 분들은 잘 구조화된 코드를 정말 빠르게 짜고, 나의 아이디어까지 디벨롭한 피드백을 주셨다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 덕분에 개발에 필요한 지식도 얻고, 앞으로의 팀 프로젝트도 기대되는 시간을 가질 수 있었다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;2. 코드 공유&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;695&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2WKPr/btsIGuSvn4A/PZk9jvL3gUKQd3WXmnAugK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2WKPr/btsIGuSvn4A/PZk9jvL3gUKQd3WXmnAugK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2WKPr/btsIGuSvn4A/PZk9jvL3gUKQd3WXmnAugK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2WKPr%2FbtsIGuSvn4A%2FPZk9jvL3gUKQd3WXmnAugK%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;469&quot; height=&quot;245&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;695&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 그런데 이게 정말 도움이 많이 된다. 같은 문제에도 정말 다양한 코드가 사용되고, 다양한 백그라운드를 가진 동기들이 있다보니 그 코드의 특성도 다양하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅ 쉬는 시간마다 동기들의 신기하거나 마음에 드는 코드들을 보면서, 수학의 여러 풀이 방법을 찾아낸듯한 쾌감이 느껴진다. (속마음  ️: 동기들 genius!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt; ️ 결론: 코드 공유는 역시 옳다.&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[&lt;span&gt;&amp;nbsp;&lt;/span&gt;   &amp;nbsp;추가 이야기&lt;span&gt;  &lt;/span&gt;&amp;nbsp;]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초반에 선생님의 도움으로 랜덤으로 동기분들과 매칭되어 밥을 먹었다. 하지만 이제는 마음 맞는 동기분 들끼리 밥을 먹거나, 혼자 먹는 동기분들도 보인다. 각자 편하게 분위기를 즐기고 있는 듯 하다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;나는 김밥펨에 들어갔다. 김밥 조아  &lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;상암동 식후땡 망고 짱맛   &lt;br /&gt;(고망고로 오세여)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;동동 꽈배기 완전 겉바속촉 맛있어요&amp;nbsp; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240721_031330441.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3d7YR/btsIHCodIyu/dEPgkm9kxP210SsdWUQw50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3d7YR/btsIHCodIyu/dEPgkm9kxP210SsdWUQw50/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3d7YR/btsIHCodIyu/dEPgkm9kxP210SsdWUQw50/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3d7YR%2FbtsIHCodIyu%2FdEPgkm9kxP210SsdWUQw50%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;240&quot; height=&quot;240&quot; data-filename=&quot;KakaoTalk_20240721_031330441.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xgiKY/btsIGFM0p0A/mOaWMKr4rD2kWkKqBhq4h0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xgiKY/btsIGFM0p0A/mOaWMKr4rD2kWkKqBhq4h0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xgiKY/btsIGFM0p0A/mOaWMKr4rD2kWkKqBhq4h0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxgiKY%2FbtsIGFM0p0A%2FmOaWMKr4rD2kWkKqBhq4h0%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;2160&quot; height=&quot;2880&quot; data-origin-width=&quot;2160&quot; data-origin-height=&quot;2880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&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/cV2Nw6/btsIHDU00gO/rt0KQk9NmJPJymMkXZ6yh0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cV2Nw6/btsIHDU00gO/rt0KQk9NmJPJymMkXZ6yh0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cV2Nw6/btsIHDU00gO/rt0KQk9NmJPJymMkXZ6yh0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcV2Nw6%2FbtsIHDU00gO%2Frt0KQk9NmJPJymMkXZ6yh0%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;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;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;과자가 넘쳐나서 살이 쪗어요..  &lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;종종 들어오셔서 선물을 주고 가시는데, 이번껀 특히 마음에 들었다. 특히 멀티포트와 손풍기!&lt;br /&gt;멀티포트 집에서 당장 쓰는중. 손풍기도 마침 장마철이라 동기들이랑 우산뒤에 신발 넣어놓고 몰래 열심히 말렸따 ㅋㅋㅋㅋㅋ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240721_031509268.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ngYv4/btsIGK1E4gv/TVJ04TCFkHRy1WRKl8G2Gk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ngYv4/btsIGK1E4gv/TVJ04TCFkHRy1WRKl8G2Gk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ngYv4/btsIGK1E4gv/TVJ04TCFkHRy1WRKl8G2Gk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FngYv4%2FbtsIGK1E4gv%2FTVJ04TCFkHRy1WRKl8G2Gk%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;KakaoTalk_20240721_031509268.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20240721_031509268_01.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB53GA/btsIHX6JbQ6/rtJn1WGKhZ9wB9MkEVn2y0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB53GA/btsIHX6JbQ6/rtJn1WGKhZ9wB9MkEVn2y0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB53GA/btsIHX6JbQ6/rtJn1WGKhZ9wB9MkEVn2y0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB53GA%2FbtsIHX6JbQ6%2FrtJn1WGKhZ9wB9MkEVn2y0%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;2992&quot; height=&quot;2992&quot; data-filename=&quot;KakaoTalk_20240721_031509268_01.jpg&quot; data-origin-width=&quot;2992&quot; data-origin-height=&quot;2992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무엇보다 동기들이 너무 착하고 재밌다. 굿뜨  &lt;/p&gt;</description>
      <category>우리FISA</category>
      <category>AI</category>
      <category>ai엔지니어링</category>
      <category>K-디지털 트레이닝</category>
      <category>PYTHON</category>
      <category>우리FIS</category>
      <category>우리fisa</category>
      <category>우리은행</category>
      <author>Corn/sec</author>
      <guid isPermaLink="true">https://chodang-corn.tistory.com/2</guid>
      <comments>https://chodang-corn.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 21 Jul 2024 01:07:54 +0900</pubDate>
    </item>
  </channel>
</rss>