<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>오늘도 얼리코딩</title>
    <link>https://earlykim.tistory.com/</link>
    <description>컴공 졸업 후 외식업 관리자로 7년, 다시 키보드를 잡았습니다. 본업 퇴근 후 밤 12시, AI와 함께하는 '얼리(Early)'의 1인 앱 개발 도전기. 멈춰있던 코딩 근육을 깨우는 과정을 기록합니다.</description>
    <language>ko</language>
    <pubDate>Tue, 7 Jul 2026 15:14:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>earlykim</managingEditor>
    <image>
      <title>오늘도 얼리코딩</title>
      <url>https://tistory1.daumcdn.net/tistory/3342814/attach/b00610b52a6341619429cb121a6cb85f</url>
      <link>https://earlykim.tistory.com</link>
    </image>
    <item>
      <title>*공지*[sudoku garden : 스도쿠 가든] 개인정보처리방침</title>
      <link>https://earlykim.tistory.com/12</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,1&quot;&gt;&lt;b data-path-to-node=&quot;7,1&quot; data-index-in-node=&quot;0&quot;&gt;1. 개인정보의 처리 목적&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;본 앱('sudoku&amp;nbsp;garden&amp;nbsp;:&amp;nbsp;스도쿠&amp;nbsp;가든')은 사용자로부터 어떠한 개인정보도 수집, 저장, 전송하지 않습니다. 앱 내의 모든 데이터(즐겨찾기 등)는 사용자의 기기 내부에만 저장됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,2&quot;&gt;&lt;b data-path-to-node=&quot;7,2&quot; data-index-in-node=&quot;0&quot;&gt;2. 제3자 서비스 제공&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;본 앱은 광고 노출 및 분석을 위해 다음과 같은 제3자 서비스를 이용합니다. 이 서비스들은 각사의 정책에 따라 익명의 광고 식별자 등을 수집할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;7,3&quot;&gt;
&lt;li&gt;Google AdMob (광고 서비스)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,4&quot;&gt;&lt;b data-path-to-node=&quot;7,4&quot; data-index-in-node=&quot;0&quot;&gt;3. 개인정보의 파기&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;앱 삭제 시 기기에 저장된 모든 데이터는 즉시 파기됩니다. 본 서비스는 서버에 데이터를 저장하지 않으므로 별도의 파기 절차가 필요하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,5&quot;&gt;&lt;b data-path-to-node=&quot;7,5&quot; data-index-in-node=&quot;0&quot;&gt;4. 이용자 및 법정대리인의 권리&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;사용자는 언제든지 앱을 삭제함으로써 데이터 처리를 거부할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,6&quot;&gt;&lt;b data-path-to-node=&quot;7,6&quot; data-index-in-node=&quot;0&quot;&gt;5. 개인정보 보호책임자&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;7,7&quot;&gt;
&lt;li&gt;성명: [김주은]&lt;/li&gt;
&lt;li&gt;이메일: [earlykim1001@gmail.com]&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-path-to-node=&quot;7,8&quot;&gt;&lt;b data-path-to-node=&quot;7,8&quot; data-index-in-node=&quot;0&quot;&gt;시행일자:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;2026년 5월 5일&lt;/p&gt;</description>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/12</guid>
      <comments>https://earlykim.tistory.com/12#entry12comment</comments>
      <pubDate>Tue, 5 May 2026 02:10:42 +0900</pubDate>
    </item>
    <item>
      <title>*공지*[하루 명언] 개인정보처리방침</title>
      <link>https://earlykim.tistory.com/11</link>
      <description>&lt;p data-path-to-node=&quot;7,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,1&quot;&gt;1. 개인정보의 처리 목적&lt;/b&gt; 본 앱('하루 명언')은 사용자로부터 어떠한 개인정보도 수집, 저장, 전송하지 않습니다. 앱 내의 모든 데이터(즐겨찾기 등)는 사용자의 기기 내부에만 저장됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7,2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,2&quot;&gt;2. 제3자 서비스 제공&lt;/b&gt; 본 앱은 광고 노출 및 분석을 위해 다음과 같은 제3자 서비스를 이용합니다. 이 서비스들은 각사의 정책에 따라 익명의 광고 식별자 등을 수집할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7,3&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Google AdMob (광고 서비스)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;7,4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,4&quot;&gt;3. 개인정보의 파기&lt;/b&gt; 앱 삭제 시 기기에 저장된 모든 데이터는 즉시 파기됩니다. 본 서비스는 서버에 데이터를 저장하지 않으므로 별도의 파기 절차가 필요하지 않습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7,5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,5&quot;&gt;4. 이용자 및 법정대리인의 권리&lt;/b&gt; 사용자는 언제든지 앱을 삭제함으로써 데이터 처리를 거부할 수 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7,6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,6&quot;&gt;5. 개인정보 보호책임자&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7,7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성명: [김주은]&lt;/li&gt;
&lt;li&gt;이메일: [earlykim1001@gmail.com]&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;7,8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;7,8&quot;&gt;시행일자:&lt;/b&gt; 2026년 2월 12일&lt;/p&gt;</description>
      <category>개인정보처리방침</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/11</guid>
      <comments>https://earlykim.tistory.com/11#entry11comment</comments>
      <pubDate>Thu, 12 Feb 2026 01:54:35 +0900</pubDate>
    </item>
    <item>
      <title>[에러코드해결]NUnauthorizedClientException(code: 401, message: [401] Unauthorized client) 네이버 맵 API 에러 코드 해결</title>
      <link>https://earlykim.tistory.com/10</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;제미나이와 함께 어플을 개발하는 중에 네이버 맵 API를 사용해야 하는 순간이 왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 클라우드 플랫폼에서 지도 API 사용 권한을 받아 키도 받아서 코드에 집어넣었는데 자꾸 인증되지 않은 사용자로 나와 구글링을 좀 많이 해보았다.&lt;/p&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_1770133827147&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//main.dart 코드

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 1. 네이버 지도 초기화
  await NaverMapSdk.instance.initialize(
    clientId: mapClientId,
    onAuthFailed: (ex) =&amp;gt; print(&quot;지도 인증 실패: $ex&quot;),
  );

  runApp(const FoundDuApp());
}&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;이게 제미나이가 써준 코드이다. 네이버 지도 API에 접속해 내 클라이언트 ID를 넘겨줘서 인증을 하는 듯 한데, 여기서 문제가 생기니 좌표를 찍어도 하얀 화면만 계속 나왔다. &lt;b&gt;구글링을 하다가 문득 flutter 공식 홈페이지를 찾아보게 됐다.&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;&lt;a href=&quot;https://pub.dev/packages/flutter_naver_map&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://pub.dev/packages/flutter_naver_map&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1770134696927&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;flutter_naver_map | Flutter package&quot; data-og-description=&quot;Naver Map plugin for Flutter, which provides map service of Korea.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/flutter_naver_map&quot; data-og-url=&quot;https://pub.dev/packages/flutter_naver_map&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bl2vNE/dJMb85vJ7yY/0FpweLG0idxHv5TyKHqy6K/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/8jDbO/dJMb83kobUu/fw9KBUoZ8V5aNjvR3BskOK/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/j34kH/dJMb9aKAlLL/PslPxniroIcnte4HK9OpjK/img.png?width=1600&amp;amp;height=1458&amp;amp;face=0_0_1600_1458&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/flutter_naver_map&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/flutter_naver_map&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bl2vNE/dJMb85vJ7yY/0FpweLG0idxHv5TyKHqy6K/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/8jDbO/dJMb83kobUu/fw9KBUoZ8V5aNjvR3BskOK/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/j34kH/dJMb9aKAlLL/PslPxniroIcnte4HK9OpjK/img.png?width=1600&amp;amp;height=1458&amp;amp;face=0_0_1600_1458');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;flutter_naver_map | Flutter package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Naver Map plugin for Flutter, which provides map service of Korea.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pub.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xcp8f/dJMcaivn2Uh/NcEBPH6FUGkb9kbGKNHKlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xcp8f/dJMcaivn2Uh/NcEBPH6FUGkb9kbGKNHKlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xcp8f/dJMcaivn2Uh/NcEBPH6FUGkb9kbGKNHKlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxcp8f%2FdJMcaivn2Uh%2FNcEBPH6FUGkb9kbGKNHKlk%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;768&quot; height=&quot;314&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;314&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;분명 나는 여기서 문제가 생겼을 것이라고 확신했다. 이것저것 다 찾아보고 다른 문서들도 찾아봤는데 해결을 못하고 있으니.. 겨우 인증키가 안먹히는 문제는 근본적으로 코드에 문제가 있다고 판단했다. &lt;b&gt;이후 공식문서 아래에 나와있는 코드로 변경했다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1770134337107&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//변경코드

await FlutterNaverMap().init(
      clientId: 'o2tqhxht3d',
      onAuthFailed: (ex) {
        switch (ex) {
          case NQuotaExceededException(:final message):
            print(&quot;사용량 초과 (message: $message)&quot;);
            break;
          case NUnauthorizedClientException() ||
          NClientUnspecifiedException() ||
          NAnotherAuthFailedException():
            print(&quot;인증 실패: $ex&quot;);
            break;
        }
      });

  runApp(const FoundDuApp());
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서에 있는대로 작성하니 기존에 나오지않던 지도 화면이 딱 서울특별시 서울 시청으로 나왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;나와 똑같이 Naver map API 사용 중 문제가 생긴 사람들에게 많은 도움이 되길 바란다.&lt;/p&gt;</description>
      <category>1인앱개발도전기/고난과역경</category>
      <category>1인앱개발</category>
      <category>Flutter</category>
      <category>navermap</category>
      <category>navermapapi</category>
      <category>얼리코딩</category>
      <category>플러터</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/10</guid>
      <comments>https://earlykim.tistory.com/10#entry10comment</comments>
      <pubDate>Wed, 4 Feb 2026 01:01:09 +0900</pubDate>
    </item>
    <item>
      <title>[직장인 부업] 1인 앱 개발 도전기: 2. android studio &amp;amp; flutter SDK 설치</title>
      <link>https://earlykim.tistory.com/9</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;저번 포스팅에 이어 Android Studio와 flutter SDK 설치, 제미나이가 짜준 코드를 안드로이드 스튜디오에서 테스트 해보도록 하겠다.&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-filename=&quot;1.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwWeiA/dJMcadnhW7u/N0vExD1pnuI1F7ky0ep1LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwWeiA/dJMcadnhW7u/N0vExD1pnuI1F7ky0ep1LK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwWeiA/dJMcadnhW7u/N0vExD1pnuI1F7ky0ep1LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwWeiA%2FdJMcadnhW7u%2FN0vExD1pnuI1F7ky0ep1LK%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;1582&quot; height=&quot;648&quot; data-filename=&quot;1.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 검색창에 안드로이드 스튜디오를 검색한 후 홈페이지에 들어가 설치를 진행해 준다. 어려운 부분은 없고, 가끔 IDE 설치 홈페이지들은 디자인이 바뀌는 경우가 많으니 메인 화면이 다르더라도 당황하지 말고 침착하게 설치하는 버튼을 찾으면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 도중 android virtual device를 체크하는 화면이 나오는데 체크한 후 설치하길 바란다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7t1Ws/dJMcaaKTY2K/tZlPvu3zpzGMOyMukSx1d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7t1Ws/dJMcaaKTY2K/tZlPvu3zpzGMOyMukSx1d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7t1Ws/dJMcaaKTY2K/tZlPvu3zpzGMOyMukSx1d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7t1Ws%2FdJMcaaKTY2K%2FtZlPvu3zpzGMOyMukSx1d1%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;499&quot; height=&quot;388&quot; data-filename=&quot;3.png&quot; data-origin-width=&quot;499&quot; data-origin-height=&quot;388&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;설치가 완료되면 flutter plugin을 설치한다.&amp;nbsp; 초기 화면에서 왼쪽 하단 설정버튼을 눌러 &lt;u&gt;&lt;b&gt;settings&lt;/b&gt;&lt;/u&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;786&quot; data-origin-height=&quot;643&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/laso7/dJMcaaxnxue/oaiOgohDa6EWjOJ4UsYD5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/laso7/dJMcaaxnxue/oaiOgohDa6EWjOJ4UsYD5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/laso7/dJMcaaxnxue/oaiOgohDa6EWjOJ4UsYD5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flaso7%2FdJMcaaxnxue%2FoaiOgohDa6EWjOJ4UsYD5k%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;786&quot; height=&quot;643&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;643&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;왼쪽 설정검색 창에 &quot;&lt;u&gt;&lt;b&gt;plugins&lt;/b&gt;&lt;/u&gt;&quot; 검색 -&amp;gt; 오른쪽 plugins 검색창에 &quot;&lt;u&gt;&lt;b&gt;flutter&lt;/b&gt;&lt;/u&gt;&quot; 검색 -&amp;gt; 맨 위 Flutter 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dart 언어가 자동으로 설치되는 듯 한데 혹여나 설치되지 않는다면 dart 검색 후 설치&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-origin-width=&quot;1506&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Hr6v/dJMcahcaSKz/9uVWdmqy6AyL4yo8rX24ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Hr6v/dJMcahcaSKz/9uVWdmqy6AyL4yo8rX24ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Hr6v/dJMcahcaSKz/9uVWdmqy6AyL4yo8rX24ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Hr6v%2FdJMcahcaSKz%2F9uVWdmqy6AyL4yo8rX24ik%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;1506&quot; height=&quot;1125&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;1125&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;이제 flutter SDK 를 설치해야한다. flutter 공식 홈페이지에 들어가서 flutter SDK를 다운받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/install/manual&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://docs.flutter.dev/install/manual&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769790369372&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Install Flutter manually&quot; data-og-description=&quot;Learn how to install and set up the Flutter SDK manually.&quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/install/manual&quot; data-og-url=&quot;https://docs.flutter.dev/install/install/manual.md&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRAUxN/dJMb8UHJ4OE/NjuMEWxkQgmk228U1lAgZ0/img.png?width=320&amp;amp;height=320&amp;amp;face=0_0_320_320&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/install/manual&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/install/manual&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRAUxN/dJMb8UHJ4OE/NjuMEWxkQgmk228U1lAgZ0/img.png?width=320&amp;amp;height=320&amp;amp;face=0_0_320_320');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Install Flutter manually&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to install and set up the Flutter SDK manually.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조금 밑에 내려보면 .zip 파일 설치하는 링크가 있다.(windows 기준)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 C드라이브에 압축을 풀었고 파일명은 자동으로 flutter라는 이름으로 압축이 풀린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTM2eJ/dJMcagj2Srs/5f2BaFeVjJbOvta8QWmiTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTM2eJ/dJMcagj2Srs/5f2BaFeVjJbOvta8QWmiTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTM2eJ/dJMcagj2Srs/5f2BaFeVjJbOvta8QWmiTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTM2eJ%2FdJMcagj2Srs%2F5f2BaFeVjJbOvta8QWmiTK%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;1024&quot; height=&quot;523&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;523&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;환경변수를 세팅해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 검색에 &quot;&lt;u&gt;&lt;b&gt;시스템 환경 변수 편집&lt;/b&gt;&lt;/u&gt;&quot;을 검색하면 설정 제어판이 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;환경 변수&lt;/u&gt;&lt;/b&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;748&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8xJbW/dJMcahXzxMk/5cVl4qWqKo4YYmlfK6LSMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8xJbW/dJMcahXzxMk/5cVl4qWqKo4YYmlfK6LSMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8xJbW/dJMcahXzxMk/5cVl4qWqKo4YYmlfK6LSMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8xJbW%2FdJMcahXzxMk%2F5cVl4qWqKo4YYmlfK6LSMk%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;499&quot; height=&quot;556&quot; data-origin-width=&quot;748&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;915&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/46ARe/dJMcai3bE2E/o9yp8RXVffPwbVWbvEYhl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/46ARe/dJMcai3bE2E/o9yp8RXVffPwbVWbvEYhl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/46ARe/dJMcai3bE2E/o9yp8RXVffPwbVWbvEYhl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F46ARe%2FdJMcai3bE2E%2Fo9yp8RXVffPwbVWbvEYhl0%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;510&quot; height=&quot;483&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;915&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OD1EO/dJMcaaD8BXq/dS0autyvDFWeHuE7hCY400/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OD1EO/dJMcaaD8BXq/dS0autyvDFWeHuE7hCY400/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OD1EO/dJMcaaD8BXq/dS0autyvDFWeHuE7hCY400/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOD1EO%2FdJMcaaD8BXq%2FdS0autyvDFWeHuE7hCY400%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;523&quot; height=&quot;497&quot; data-origin-width=&quot;824&quot; data-origin-height=&quot;783&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;새로 만들기 버튼을 클릭 후 본인이 압축을 푼 폴더를 지정해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필자의 경우 C드라이브에 바로 압축을 풀었기에 C:\flutter\bin 이라고 추가해 주었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 설치되었는지 &lt;u&gt;&lt;b&gt;PowerShell&lt;/b&gt;&lt;/u&gt;에 아래와 같이 입력한다.&lt;/p&gt;
&lt;pre id=&quot;code_1769792855206&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter doctor&lt;/code&gt;&lt;/pre&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;859&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kS8Lf/dJMcaiITrRb/fbXss3DKqgVKIY3l9lQx90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kS8Lf/dJMcaiITrRb/fbXss3DKqgVKIY3l9lQx90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kS8Lf/dJMcaiITrRb/fbXss3DKqgVKIY3l9lQx90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkS8Lf%2FdJMcaiITrRb%2FfbXss3DKqgVKIY3l9lQx90%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;859&quot; height=&quot;732&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;732&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;잘 설치되다가 뭔가 노란색으로 라이센스가 허가되지 않았다고 나왔다. 뒤에 권장설치인 단어를 쳐서 해결해보자. 그럼 이것저것 동의하라는 내용이 나오는데 y를 누르고 계속 동의하다보면 설치가 완료된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 다른 이슈가 나올 수 있는데 가이드로 나오는 명령어를 치면 손 쉽게 해결되는 듯 하다.&lt;/p&gt;
&lt;pre id=&quot;code_1769792915246&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter doctor --android-licenses&lt;/code&gt;&lt;/pre&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;859&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU4PbV/dJMcadgxVlv/XNaa8bTlZh9W1A9KiuylJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU4PbV/dJMcadgxVlv/XNaa8bTlZh9W1A9KiuylJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU4PbV/dJMcadgxVlv/XNaa8bTlZh9W1A9KiuylJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU4PbV%2FdJMcadgxVlv%2FXNaa8bTlZh9W1A9KiuylJ1%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;859&quot; height=&quot;732&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 동의했더니 이제 이슈가 없다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 flutter sdk와 안드로이드 스튜디오를 설치했으니 프로젝트하나를 만들어보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 스튜디오 메인에서 new flutter project를 선택후에 좌측 flutter를 고른 후 flutter sdk path에서 설치한 flutter 폴더를 설정해준다.&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;786&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oylU5/dJMcafrUbZ0/sdaQpUWmkm55xnJOJ0u7p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oylU5/dJMcafrUbZ0/sdaQpUWmkm55xnJOJ0u7p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oylU5/dJMcafrUbZ0/sdaQpUWmkm55xnJOJ0u7p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoylU5%2FdJMcafrUbZ0%2FsdaQpUWmkm55xnJOJ0u7p0%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;786&quot; height=&quot;718&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;718&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;프로젝트를 만들어주고 나면 약간의 시간이 지난 후에 코드를 짜는 화면이 나온다.&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;1386&quot; data-origin-height=&quot;993&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7mh8U/dJMcaaD8Cb8/rorLmg2JwTKgpjiKpdJupk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7mh8U/dJMcaaD8Cb8/rorLmg2JwTKgpjiKpdJupk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7mh8U/dJMcaaD8Cb8/rorLmg2JwTKgpjiKpdJupk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7mh8U%2FdJMcaaD8Cb8%2FrorLmg2JwTKgpjiKpdJupk%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;1386&quot; height=&quot;993&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;993&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭔가 다양해 보이는데 우리는 현재 main.dart만 수정하면 되고 중간 상단 쪽 device를 나는 chrome으로 설정해서 실행할 때 chrome으로 device 데모가 나오게 설정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;1013&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpIeQn/dJMcagxzgdg/rGJzo2XsRPFmKzI84msoj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpIeQn/dJMcagxzgdg/rGJzo2XsRPFmKzI84msoj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpIeQn/dJMcagxzgdg/rGJzo2XsRPFmKzI84msoj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpIeQn%2FdJMcagxzgdg%2FrGJzo2XsRPFmKzI84msoj0%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;931&quot; height=&quot;1013&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;1013&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;&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;그리고 어제 제미나이가 만들어 준 코드를 똑같이 android studio로 구동 테스트 해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;993&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp0oH3/dJMcajnt8NV/C2NPMe1ckfT5Z5ffBK4ru1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp0oH3/dJMcajnt8NV/C2NPMe1ckfT5Z5ffBK4ru1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp0oH3/dJMcajnt8NV/C2NPMe1ckfT5Z5ffBK4ru1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp0oH3%2FdJMcajnt8NV%2FC2NPMe1ckfT5Z5ffBK4ru1%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;1386&quot; height=&quot;993&quot; data-origin-width=&quot;1386&quot; data-origin-height=&quot;993&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;1013&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB4lJi/dJMcaiPEqxg/kn3esKbUB0W8kOFGqShN6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB4lJi/dJMcaiPEqxg/kn3esKbUB0W8kOFGqShN6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB4lJi/dJMcaiPEqxg/kn3esKbUB0W8kOFGqShN6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB4lJi%2FdJMcaiPEqxg%2Fkn3esKbUB0W8kOFGqShN6K%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;931&quot; height=&quot;1013&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;1013&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;잘 구동이 되었다. 이제 디테일을 가다듬고 apk로 만들어 스토어에 등록하는 일만 남았다. 다음 시간에는 디테일 다듬기와 구글 에드몹 배너 붙이는 작업을 해보도록 하겠다.&lt;/p&gt;</description>
      <category>1인앱개발도전기/개발기</category>
      <category>1인앱개발</category>
      <category>디지털노마드</category>
      <category>부업</category>
      <category>수익형앱</category>
      <category>수익형앱개발</category>
      <category>얼리코딩</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/9</guid>
      <comments>https://earlykim.tistory.com/9#entry9comment</comments>
      <pubDate>Sat, 31 Jan 2026 01:58:12 +0900</pubDate>
    </item>
    <item>
      <title>[직장인 부업] 1인 앱 개발 도전기: 1. 컴공 졸업생이 다시 코딩을 시작한 이유</title>
      <link>https://earlykim.tistory.com/8</link>
      <description>&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&quot;컴공졸업생에서 외식업관리자, 그리고 다시 개발에 발을 담기까지&quot;&lt;/span&gt;&lt;/i&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 컴퓨터공학과 졸업생이다. 지방에 있는 대학교를 나왔지만, 그래도 나름 학업에 열중하고 학점도 꽤 잘 받았으며, 장학금도 여러 번 타면서 학교생활을 했다. 학교를 다닐 때 까지는 개발이 재밌는 줄 알았는데, 이걸 막상 일로 하려고 하다보니 굉장히 지루하고 &quot;이걸 일로 할 수 있을까?&quot; 라는 생각이 많이 들기 시작했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학교다니면서 꾸준히 식당에서 알바를 했었고, 확실히 나는 움직이면서 하는 일이 적성에 맞다고 생각했다. 그렇게 상경하여 7년... 외식업 회사 관리자까지 올라가고 나름 그래도 내 직업에 만족하며 생활하고 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 점점 AI에 대한 사회적인 이슈들이 대두되고 있고 내가 현재 버는 월급 대비 현저히 오르는 물가에 먹고살 걱정이 많아지기 시작했다. 결정적으로 아직은 내가 젊으니까 이 일을 계속 하고있지만 나이가 들어 내 쓸모가 점점 없어졌을 때 그대로 먹고살 수 있을까도 걱정이 많이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 직업에 대한 회의감 등이 겹치면서 다시금 IT쪽에 관심을 가져봐야겠다는 생각이 들었다. 부업 수준으로 할 수 있는 정도면 좋지 않을까 생각했고 본업을 병행하면서 부업의 수익을 늘리고 싶었다. 그러다가 부업의 크기가 커지면 본업을 정리하고 부업 쪽으로 방향을 전환하는게 목표이다. 그래서 첫 번째로 선택한 것이 &quot;1인 앱개발&quot;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 글을 찾아보고 주변에도 물어봐도 1인 앱개발은 소위 말해서 &quot;삽질&quot; 이라는 표현이 많았다. 앱으로 대박나기는 사막에서 바늘 찾는 것 만큼 힘들고 개발을 하더라도 꾸준히 수익이 나기 힘들다는 이유이다. 그래서 나는 방향을 좀 바꾸기로 했다. 어느 개발 블로그에서 본 &quot;하루 1,000원 버는 앱 100개 만들기&quot; 이다. 프로그래밍좀비 님 블로그를 보면서 뭔가 나는 지금까지 생각을 잘못 하고있다는 생각도 들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://soulduse.tistory.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://soulduse.tistory.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769705464454&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;프로그래밍좀비&quot; data-og-description=&quot; &quot; data-og-host=&quot;soulduse.tistory.com&quot; data-og-source-url=&quot;https://soulduse.tistory.com/&quot; data-og-url=&quot;https://soulduse.tistory.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TBGme/dJMb8XkadD9/8Q85KSNIQwPxJy2n30mXXk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cRMvXw/dJMb8XR0lJi/oaApLYjBbnzSQCscFBqFTK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/chrwIk/dJMb8WMkmrk/RKq0WnxiLPSicDsiqasr4K/img.png?width=230&amp;amp;height=300&amp;amp;face=0_0_230_300&quot;&gt;&lt;a href=&quot;https://soulduse.tistory.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://soulduse.tistory.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TBGme/dJMb8XkadD9/8Q85KSNIQwPxJy2n30mXXk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cRMvXw/dJMb8XR0lJi/oaApLYjBbnzSQCscFBqFTK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/chrwIk/dJMb8WMkmrk/RKq0WnxiLPSicDsiqasr4K/img.png?width=230&amp;amp;height=300&amp;amp;face=0_0_230_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로그래밍좀비&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;soulduse.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;i&gt;&quot;AI(제미나이)를 코딩 파트너로 삼은 이유&quot;&lt;/i&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이 분은 현업 개발자기도 하셨고, 앱 개발도 하셨다는 글을 보았다. 그렇기에 더 빠르게 수익화를 할 수 있었고 특화된 작업을 더 순조롭게 진행할 수 있지 않았을까 싶다. 하지만 이제 시대가 많이 바뀌었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI가 나를 도와줄 수 있고 나는 높은 퀄리티의 앱을 시작부터 만드는게 목표가 아니다. 빠르게 양산할 수 있는 아키텍처를 만들고 단지 많은 사람들이 편하게 찾을 수 있는 간단한 앱 여려 개를 만들면 되는 것이다. 그냥 다른 사람들보다 조금 더 빨리 아이디어를 창출하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 최근 구독하게 된 제미나이에게 물어봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blRkCr/dJMcah4ktKP/76iESuQQgJvxS2XiyKAfpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blRkCr/dJMcah4ktKP/76iESuQQgJvxS2XiyKAfpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blRkCr/dJMcah4ktKP/76iESuQQgJvxS2XiyKAfpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblRkCr%2FdJMcah4ktKP%2F76iESuQQgJvxS2XiyKAfpK%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;563&quot; height=&quot;188&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;188&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;이렇게 물어봤더니,&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;547&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czIGV9/dJMcaiB72R5/oqFUdbH5QJaqTcfRIbCqa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czIGV9/dJMcaiB72R5/oqFUdbH5QJaqTcfRIbCqa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czIGV9/dJMcaiB72R5/oqFUdbH5QJaqTcfRIbCqa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FczIGV9%2FdJMcaiB72R5%2FoqFUdbH5QJaqTcfRIbCqa0%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;547&quot; height=&quot;735&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;735&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;그냥 줄줄줄 나온다. 물론 이 코드를 100퍼센트 신뢰할 수는 없다. 하지만 간단한 앱이기에 구조도 단순하고 딱 봤을 때 내가 알아보지 못한 코드는 없었다. 단지 dart 언어에 익숙하지 않아서 문법이 좀 어색했지 기존 c++에서 쓰던 구조랑 비슷하게 이어지는 듯 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제미나이가 웹상에서 실행시킬 수 있는 사이트도 알아서 알려줘서 바로 구동해 보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://zapp.run/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://zapp.run/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1769705771071&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Zapp! An online Dart &amp;amp; Flutter sandbox in the browser&quot; data-og-description=&quot;A free online sandbox for building Dart &amp;amp; Flutter applications in the browser.&quot; data-og-host=&quot;zapp.run&quot; data-og-source-url=&quot;https://zapp.run/&quot; data-og-url=&quot;https://zapp.run&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fLBZS/dJMb8YXGgP0/qDC3oN5A5ZHVkqh8kn7Y91/img.jpg?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bD775T/dJMb8XkadEo/yuDrrarOthrkJKoSLBELf1/img.jpg?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://zapp.run/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zapp.run/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fLBZS/dJMb8YXGgP0/qDC3oN5A5ZHVkqh8kn7Y91/img.jpg?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bD775T/dJMb8XkadEo/yuDrrarOthrkJKoSLBELf1/img.jpg?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Zapp! An online Dart &amp;amp; Flutter sandbox in the browser&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A free online sandbox for building Dart &amp;amp; Flutter applications in the browser.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zapp.run&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VZSNW/dJMcaiPDXTK/xn10HvkRqanEpWcvx4m4E1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VZSNW/dJMcaiPDXTK/xn10HvkRqanEpWcvx4m4E1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VZSNW/dJMcaiPDXTK/xn10HvkRqanEpWcvx4m4E1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVZSNW%2FdJMcaiPDXTK%2Fxn10HvkRqanEpWcvx4m4E1%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;1277&quot; height=&quot;740&quot; data-origin-width=&quot;1277&quot; data-origin-height=&quot;740&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;심플하게 구동도 잘 된다. 앞으로 제미나이와 함께 여러 가지 앱들을 빠르게 만들고 수익창출을 할 수 있도록 만들어보고 싶다. 아직은 본업에 시간을 많이 써야하기에, 하루에 시간을 많이 투자할 순 없지만 MVP 출시를 목표로 기본 기능만 탑재한 채로 스토어에 올려보려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일은 안드로이드 스튜디오, dart SDK 설치 후에 빠르게 앱을 구동시켜 보려고 한다. 필자처럼 부업을 해보고 싶지만 막상 하려고 보니 막막한 사람들, 함께 성장해보고 싶은 사람들은 구독하여 좋은 정보들 많이 공유하면 좋을 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>1인앱개발도전기/개발기</category>
      <category>1인앱개발</category>
      <category>디지털노마드</category>
      <category>부업</category>
      <category>수익형앱</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/8</guid>
      <comments>https://earlykim.tistory.com/8#entry8comment</comments>
      <pubDate>Fri, 30 Jan 2026 02:01:25 +0900</pubDate>
    </item>
    <item>
      <title>1. BeautifulSoup을 활용한 멜론차트 뽑기(파이썬 웹 스크래핑)</title>
      <link>https://earlykim.tistory.com/7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;BeautifulSoup과 Request를 활용하여 웹 스크래핑을 해보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-31cf61f9-736c-4b21-9fba-02aabbc7218c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;BeautifulSoup은 웹 사이트의 정보를 쉽게 스크랩할 수 있도록 도와주는 파이썬 라이브러리입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-40a6321c-e60d-42c1-809a-a508f11e103c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그리고 이를 수행하기 위해 웹 사이트에 https 요청을 보낼 수 있도록 도와주는 라이브러리인 Requests도 활용하도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4bfd5d1b-d9af-4bbd-9257-c3d40f6b7a09&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;작업 환경은 visual studio code 편집기와 Chrome 웹 브라우저를 사용했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-acc6409a-1187-42c3-b7b4-6746a3074725&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;크롬 웹사이트에서 F12를 누르시면 이렇게 개발자 도구가 나타나게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-7a626091-8f66-4552-a297-145e26f6304f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;앞으로 이를 활용해서 우리가 필요로 하는 데이터를 뽑아내도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-1dc62249-eaf8-4af2-b164-15439f928314&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(작성일 11월 8일 00시 기준으로 나타난 멜론차트 내용입니다.)&lt;/span&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;966&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tsk6h/btrlV0xLiMh/Yqs4nlMJpJHXgaJa14GpY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tsk6h/btrlV0xLiMh/Yqs4nlMJpJHXgaJa14GpY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tsk6h/btrlV0xLiMh/Yqs4nlMJpJHXgaJa14GpY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTsk6h%2FbtrlV0xLiMh%2FYqs4nlMJpJHXgaJa14GpY1%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;966&quot; height=&quot;523&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0078cb; font-family: 'Noto Sans Light';&quot;&gt;BeautifulSoup, Requests 설치&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637597794856&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install beautifulsoup4
pip install requests&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;다운로드한 라이브러리를 import 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1637597815927&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import requests
from bs4 import BeautifulSoup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;웹 사이트에 https요청하여 일단 멜론 차트 페이지의 모든 텍스트 내용을 가져와보도록 하겠습니다.&lt;/span&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;958&quot; data-origin-height=&quot;71&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2glev/btrlS0MidL7/qVfyFbFsyOKIaxq4CwYId0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2glev/btrlS0MidL7/qVfyFbFsyOKIaxq4CwYId0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2glev/btrlS0MidL7/qVfyFbFsyOKIaxq4CwYId0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2glev%2FbtrlS0MidL7%2FqVfyFbFsyOKIaxq4CwYId0%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;958&quot; height=&quot;71&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;71&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;SE-6b1445c2-f2a3-4160-9d91-72c7871bc490&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-1ee56f82-6ceb-4cf5-a24f-3012a9911e0f&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://www.melon.com/chart/index.htm&quot;&gt;https://www.melon.com/chart/index.htm&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figure id=&quot;og_1637597891270&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Melon&quot; data-og-description=&quot;음악이 필요한 순간, 멜론&quot; data-og-host=&quot;www.melon.com&quot; data-og-source-url=&quot;https://www.melon.com/chart/index.htm&quot; data-og-url=&quot;http://www.melon.com/chart/index.htm&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mbtFY/hyMq34agPY/1RZWyFVTEEBRuWpmaakop0/img.png?width=142&amp;amp;height=99&amp;amp;face=0_0_142_99&quot;&gt;&lt;a href=&quot;https://www.melon.com/chart/index.htm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.melon.com/chart/index.htm&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mbtFY/hyMq34agPY/1RZWyFVTEEBRuWpmaakop0/img.png?width=142&amp;amp;height=99&amp;amp;face=0_0_142_99');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Melon&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;음악이 필요한 순간, 멜론&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.melon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1637597856474&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pg=requests.get(&quot;https://www.melon.com/chart/index.htm&quot;) #웹페이지 https요청
sp=BeautifulSoup(pg.text,&quot;html.parser&quot;) #요청받은 페이지의 내용을 BeautifulSoup객체로 전달
print(sp.text)&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;SE-ef2a83b3-1e14-404a-b56d-33e5df83c919&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&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;914&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDzwoh/btrlUORSDNv/Lpj5grZkt3ESmBmkLM2cuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDzwoh/btrlUORSDNv/Lpj5grZkt3ESmBmkLM2cuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDzwoh/btrlUORSDNv/Lpj5grZkt3ESmBmkLM2cuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDzwoh%2FbtrlUORSDNv%2FLpj5grZkt3ESmBmkLM2cuK%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;914&quot; height=&quot;208&quot; data-origin-width=&quot;914&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;아무런 내용이 표시되지 않았습니다...&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-344bb33e-0a5f-4766-a317-c9ae7c0cf624&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;​&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-248289bd-f1f8-4918-9fba-4dde4b1b9409&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;그래서 구글링을 해보니, 특정 웹사이트의 서버에서 크롤러를 봇의 부적절한 접근으로 인식할 수 있다고 합니다. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #777777;&quot;&gt;(네이버 메인 사이트로 실험해 본 결과 네이버 웹사이트는 위의 코드가 작동했습니다.)&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; 즉, 무분별한 크롤링을 통해 서버에 과부하가 오는 것을 방지하기 위한 대비책이라고 할 수 있습니다. 이를 해결하기 위해서는 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0078cb;&quot;&gt;&lt;b&gt;Header에 크롤러를 사용하는 것이 봇이 아니라 사람이다!!라는&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt; 정보(User-Agent)를 기입하여 웹사이트에 요청하는 방법을 활용할 수 있습니다. 코드를 수정해보도록 하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6dd6aee3-6676-49e7-8eba-3da601468d33&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;먼저 아래의 페이지에서 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000046;&quot;&gt;&lt;u&gt;&lt;b&gt;User Agent String explained :&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style=&quot;color: #000046;&quot;&gt;&lt;u&gt;​&lt;/u&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000046;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;아래의 내용을 복사해줍니다.(Mozilla/5.0까지만 기입해도 정상적으로 작동했습니다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-dde52dd5-a0e2-496c-99e4-0d647794fc0d&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-f783cc1e-f942-48ec-9268-06c15e6777f6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-64f7f7fd-977f-4a3c-8316-1ec90684690c&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;http://www.useragentstring.com/&quot;&gt;http://www.useragentstring.com/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1637597884270&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;UserAgentString.com - unknown version&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.useragentstring.com&quot; data-og-source-url=&quot;http://www.useragentstring.com/&quot; data-og-url=&quot;http://www.useragentstring.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://www.useragentstring.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.useragentstring.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;UserAgentString.com - unknown version&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.useragentstring.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1637597893151&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import urllib.request
import urllib.parse
from bs4 import BeautifulSoup

url='https://www.melon.com/chart/index.htm'
header={'User-Agent':'Mozilla/5.0'}
mod=urllib.request.Request(url,headers=header)
htmlcontent=urllib.request.urlopen(mod).read()
#헤더에 사이트에 보낼 User-Agent의 내용을 담아 요청함

bs=BeautifulSoup(htmlcontent,'html.parser')
print(bs.text)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PV5ev/btrlV1QYnBt/mfAw6zJyHZ8fcpXICKMyz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PV5ev/btrlV1QYnBt/mfAw6zJyHZ8fcpXICKMyz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PV5ev/btrlV1QYnBt/mfAw6zJyHZ8fcpXICKMyz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPV5ev%2FbtrlV1QYnBt%2FmfAw6zJyHZ8fcpXICKMyz1%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;966&quot; height=&quot;645&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;645&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div id=&quot;SE-cccaf8bf-79bb-4dab-98f6-b3b2c92fe35a&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-f52ea521-6d81-4578-a4fd-6880b83390b1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;이제 정상적으로 작동했습니다!! 지금의 출력 결과는 멜론 차트 페이지의 모든&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;html 소스에서 text 부분을 파싱해온 결과를 출력한 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-831a84cc-73f6-4f5a-8628-04942397c522&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;여기서 우리는 필요한 멜론차트의 노래 정보만 골라내면 완성입니다. 아까 다시 메인 페이지에서 우리가 필요한 정보가 어디에 있는지부터 찾아보도록 하겠습니다. 일단 멜론 차트 1위의 곡 정보가 어디에 위치하는지 알아보겠습니다. 아래 그림과 같이 F12를 누르시고 개발자 도구의 좌상단의 Elements 카테고리를 선택하시고 빨간색 네모 박스의 아이콘을 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-d563c001-62dc-426a-9a66-6883aaa34d65&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-54c10c09-65a8-4852-972d-c132c2a0470c&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNaFS8/btrlNcGZnLg/b5UkyBXReqAda9OQBeXZa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNaFS8/btrlNcGZnLg/b5UkyBXReqAda9OQBeXZa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNaFS8/btrlNcGZnLg/b5UkyBXReqAda9OQBeXZa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNaFS8%2FbtrlNcGZnLg%2Fb5UkyBXReqAda9OQBeXZa0%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;966&quot; height=&quot;88&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;88&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-46f33e88-84d7-40e2-8bdb-6a021719621b&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7d2c3662-ee1e-4e27-a388-4a403c465f29&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;아래 그림과 같이 1위 노래의 제목에 마우스를 갖다대면 현재 마우스 커서가 위치한 내용이 html 코드의 어디에 위치하는지 알 수 있습니다. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&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 id=&quot;SE-43d7cf7b-d90a-475a-a56c-3acdcb4cafa2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-daa5102f-300b-4751-840b-090b4b62f9de&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duTTCJ/btrlQ0suoNv/RGA66P6DautktxqTXTtqTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duTTCJ/btrlQ0suoNv/RGA66P6DautktxqTXTtqTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duTTCJ/btrlQ0suoNv/RGA66P6DautktxqTXTtqTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduTTCJ%2FbtrlQ0suoNv%2FRGA66P6DautktxqTXTtqTk%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;966&quot; height=&quot;412&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-53c32781-6de0-4297-b05b-91b51f22426a&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-ab2d0c87-6e39-497e-96ff-8a81fc67cc80&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;조금 자세히 보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-f6ff4519-0fd7-42dc-9be4-e9e661939623&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;124&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmysIC/btrlS06y530/bPGEXWvIvneAYzormn5EK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmysIC/btrlS06y530/bPGEXWvIvneAYzormn5EK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmysIC/btrlS06y530/bPGEXWvIvneAYzormn5EK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmysIC%2FbtrlS06y530%2FbPGEXWvIvneAYzormn5EK1%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;584&quot; height=&quot;124&quot; data-origin-width=&quot;584&quot; data-origin-height=&quot;124&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a1c67db6-decb-42a5-8788-4e6344af755c&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-8c5c9dac-a5e7-486b-80fa-f314a5260502&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;우리가 필요한 &quot;쉬어 (Feat. MINO) (Prod. GRAY)&quot; 라는 정보는 &lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-9bfadc17-7700-46f8-a813-eb3c83810923&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&amp;lt;div class=&quot;ellipsis rank01&quot;&amp;gt; 아래의 &amp;lt;span&amp;gt; 아래의 a태그 안의 text로 위치해 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-96786cce-b389-4887-aa2d-9c5899abd43b&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;아래의 코드를 이용해 div 태그부터 접근해 보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1637597918624&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;title=bs.find_all('div','ellipsis rank01')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;위의 코드를 보도록 하겠습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;div라는 태그를 검색할건데 클래스가 ellipsis와 rank01을 포함하는 div태그를 모조리 검색하는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-cf9544c1-15ac-470c-ad1d-bad0426b853e&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;우리가 필요한 데이터는 그 아래의 하위 태그인 a태그의 text입니다. 일단 뭐든 출력이 되는지 확인해 봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1637597931159&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(title.text)&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;SE-1f770f59-ce55-4180-949f-72024a0772d1&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;243&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bguyyC/btrlTlJo3ig/fmlSWWg2MIL8z2jRsr9rWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bguyyC/btrlTlJo3ig/fmlSWWg2MIL8z2jRsr9rWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bguyyC/btrlTlJo3ig/fmlSWWg2MIL8z2jRsr9rWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbguyyC%2FbtrlTlJo3ig%2FfmlSWWg2MIL8z2jRsr9rWk%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;966&quot; height=&quot;243&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;243&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-82c10d0c-2965-40ba-980c-7fd84157a503&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 id=&quot;SE-9a366dbf-cb7f-414a-9405-a036425be96e&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;그런데 또 안 됐습니다.... ㅋㅋㅋㅋㅋ&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p id=&quot;SE-597916df-c323-4fe7-b906-9dcebf3f40b1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;그래서 먼저 title이라는 녀석이 어떤 데이터 타입인지 알아봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1637597949272&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(type(title))
&amp;gt;&amp;gt;&amp;gt; &amp;lt;class 'bs4.element.ResultSet'&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; font-family: 'Noto Sans Light';&quot;&gt;bs4.element.ResultSet이라는 데이터 타입인데 뭔가 그냥 데이터셋이라는 느낌을 받아 리스트가 아닐까? 해서 리스트 원소 호출을 해봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637597966360&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(type(title[0]))
&amp;gt;&amp;gt;&amp;gt; &amp;lt;class 'bs4.element.Tag'&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;SE-bc8e30fe-bb69-4c21-b17b-64368f3368fb&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-ae619b2e-17b7-434e-b9db-175899094c29&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이번엔 bs4.element.Tag라는 데이터 타입입니다. 여기서 뭔가를 찾을 수 있을 것 같아 bs4 공식 문서를 찾아봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-6b2f0a2b-d997-4103-9182-eb14fc9de22a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-5a3d6709-cba4-4c88-8f4f-68d2589544c5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&quot;&gt;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;figure id=&quot;og_1637597981762&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Beautiful Soup Documentation &amp;mdash; Beautiful Soup 4.9.0 documentation&quot; data-og-description=&quot;Non-pretty printing If you just want a string, with no fancy formatting, you can call str() on a BeautifulSoup object (unicode() in Python 2), or on a Tag within it: str(soup) # ' I linked to example.com ' str(soup.a) # ' I linked to example.com ' The str(&quot; data-og-host=&quot;www.crummy.com&quot; data-og-source-url=&quot;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&quot; data-og-url=&quot;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.crummy.com/software/BeautifulSoup/bs4/doc/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Beautiful Soup Documentation &amp;mdash; Beautiful Soup 4.9.0 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Non-pretty printing If you just want a string, with no fancy formatting, you can call str() on a BeautifulSoup object (unicode() in Python 2), or on a Tag within it: str(soup) # ' I linked to example.com ' str(soup.a) # ' I linked to example.com ' The str(&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.crummy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-a31d4992-6f96-4811-99b6-0081b39a9354&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-efd00342-b8e1-40d5-bf09-f12c34713bb7&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;문서에서 Ctrl + F로 element.tag를 검색하니 딱 한 구간 나오더군요. 그 이후부터 찾아보니 해당 클래스의 사용법이 나와있었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-4c18fa41-08b6-4379-937d-6cc2de3d147a&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;내용을 출력해보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-701c2cf2-b0f4-4087-9ade-773afa88c4c7&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1637597988367&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(title[0])
&amp;gt;&amp;gt;&amp;gt;
&amp;lt;div class=&quot;ellipsis rank01&quot;&amp;gt;&amp;lt;span&amp;gt;
&amp;lt;a href=&quot;javascript:melon.play.playSong('1000002721',34215822);&quot; title=&quot;쉬어 (Feat. MINO) (Prod. GRAY) 재생&quot;&amp;gt;쉬어 (Feat. MINO) (Prod. GRAY)&amp;lt;/a&amp;gt;
&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #444444; font-family: 'Noto Sans Light';&quot;&gt;잘 나오네요! 이제 여기서 필요한 div 태그아래의 a태그의 text만 출력하면 1위의 곡 제목이 나오게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637598000432&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(title[0].a.text)
&amp;gt;&amp;gt;&amp;gt;쉬어 (Feat. MINO) (Prod. GRAY)&lt;/code&gt;&lt;/pre&gt;
&lt;div id=&quot;SE-6cd47758-705e-435d-b0c2-e0e05c880a7d&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;149&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b04xgm/btrlLvtfM8w/cFknLL3Zy90elkuVzPrlrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b04xgm/btrlLvtfM8w/cFknLL3Zy90elkuVzPrlrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b04xgm/btrlLvtfM8w/cFknLL3Zy90elkuVzPrlrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb04xgm%2FbtrlLvtfM8w%2FcFknLL3Zy90elkuVzPrlrK%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;966&quot; height=&quot;149&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;149&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-904f837e-9e5b-4291-af1f-da72d3b96f6a&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p id=&quot;SE-2cf62e9d-13af-45a9-a497-c8ee866e07ed&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 거의 다 끝났습니다. 1위부터 10위까지만 출력해보도록 하겠습니다!&lt;/span&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uJEAe/btrlTlvQ8G4/neSTNf5eXA66LFwQUAhtPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uJEAe/btrlTlvQ8G4/neSTNf5eXA66LFwQUAhtPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uJEAe/btrlTlvQ8G4/neSTNf5eXA66LFwQUAhtPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuJEAe%2FbtrlTlvQ8G4%2FneSTNf5eXA66LFwQUAhtPk%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;987&quot; height=&quot;460&quot; data-origin-width=&quot;987&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;​&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637598107303&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for i in range(10):
    print(title[i].a.text)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;SE-ac59f28c-9122-4aff-b68c-fff028f635da&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oiysU/btrlTkKuuPm/iS9aHoWHu19cgQsaKBxXk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oiysU/btrlTkKuuPm/iS9aHoWHu19cgQsaKBxXk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oiysU/btrlTkKuuPm/iS9aHoWHu19cgQsaKBxXk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoiysU%2FbtrlTkKuuPm%2FiS9aHoWHu19cgQsaKBxXk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1049&quot; height=&quot;365&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 되네요!!&lt;/p&gt;</description>
      <category>Python</category>
      <category>Beautifulsoup</category>
      <category>Crawling</category>
      <category>Python</category>
      <category>데이터크롤링</category>
      <category>뷰티풀솝</category>
      <category>웹스크래핑</category>
      <category>크롤링</category>
      <category>파이썬</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/7</guid>
      <comments>https://earlykim.tistory.com/7#entry7comment</comments>
      <pubDate>Sun, 21 Nov 2021 02:17:34 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 알고리즘 2960번 : 에라토스테네스의 체(C++ 풀이)</title>
      <link>https://earlykim.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;a href=&quot;https://www.acmicpc.net/problem/2960&quot;&gt;https://www.acmicpc.net/problem/2960&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1586502063703&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2960번: 에라토스테네스의 체&quot; data-og-description=&quot;문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2960&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2960&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/suF2P/hyFCwjKxbr/iqucAI8fZW4gxf52zJ3C9K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2960&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2960&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/suF2P/hyFCwjKxbr/iqucAI8fZW4gxf52zJ3C9K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2960번: 에라토스테네스의 체&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;문제 에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다. 이 알고리즘은 다음과 같다. 2부터 N까지 모든 정수를 적는다. 아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다. P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다. 아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다. N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;에라토스테네스의 체는 N보다 작거나 같은 모든 소수를 찾는 유명한 알고리즘이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이 알고리즘은 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2부터 N까지 모든 정수를 적는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아직 지우지 않은 수 중 가장 작은 수를 찾는다. 이것을 P라고 하고, 이 수는 소수이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;P를 지우고, 아직 지우지 않은 P의 배수를 크기 순서대로 지운다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;아직 모든 수를 지우지 않았다면, 다시 2번 단계로 간다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;N, K가 주어졌을 때, K번째 지우는 수를 구하는 프로그램을 작성하시오.&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 입력&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;첫째 줄에 N과 K가 주어진다. (1 &amp;le; K &amp;lt; N, max(2, K)&amp;nbsp;&amp;lt; N &amp;le; 1000)&lt;/span&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 출력&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;첫째 줄에 K번째 지워진 수를 출력한다.&lt;/span&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span&gt;- 예제&lt;/span&gt;&lt;/span&gt;&lt;/b&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;1158&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6YS9n/btqDlioYxEP/AU6o5DgOuK9Kaym95EPsck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6YS9n/btqDlioYxEP/AU6o5DgOuK9Kaym95EPsck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6YS9n/btqDlioYxEP/AU6o5DgOuK9Kaym95EPsck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6YS9n%2FbtqDlioYxEP%2FAU6o5DgOuK9Kaym95EPsck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1158&quot; height=&quot;135&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 풀이&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;예를들어 1 ~ 100까지의 수들 중에서 소수를 찾는다고 가정해 보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2부터 시작하여 소수가 아닌 수들을 지워 나가기 시작하겠죠.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 지우다 보면 11까지 오게 됩니다. 11은 지금까지 지워지지 않았으니 소수로 판단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 11의 배수들을 지워야 하는데 11의 배수들 부터는 굳이 수행할 필요가 없게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 11보다 작은 수들을 체크하는 부분에서 11의 배수들을 모두 지웠기 때문이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(2X11, 3X11, 4X11 등)&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;본 문제는 k 번째로 지워진 수를 출력하는 것이므로 해답은 아래 소스코드와 같습니다.&lt;/p&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;pre id=&quot;code_1586503145742&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;stdlib.h&amp;gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;stack&amp;gt;
#include&amp;lt;queue&amp;gt;
#include&amp;lt;math.h&amp;gt;
using namespace std;

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	int input, a;
	cin &amp;gt;&amp;gt; input &amp;gt;&amp;gt; a;
	int arr[1001] = { 0 };
	vector&amp;lt;int&amp;gt; v;	//지워진 수 저장
	for (int i = 1; i &amp;lt;= input; i++) {
		arr[i] = i;
	}
	arr[0] = 1;
	arr[1] = 1;
	for (int i = 2; i &amp;lt;= input; i++) {
		if (arr[i] != -1) {
			v.push_back(arr[i]);
			for (int j = i+1; j &amp;lt;= input; j++) {
				if (arr[j] % arr[i] == 0) {
					v.push_back(arr[j]);
					arr[j] = -1;
					
				}
			}
			arr[i] = -1;
		}
	}
	cout &amp;lt;&amp;lt; v[a-1];
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/Beakjoon</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>에라토스테네스의 체</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/6</guid>
      <comments>https://earlykim.tistory.com/6#entry6comment</comments>
      <pubDate>Fri, 10 Apr 2020 16:20:40 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 알고리즘 4948번 : 베르트랑 공준(C++ 풀이)</title>
      <link>https://earlykim.tistory.com/5</link>
      <description>&lt;p&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4948&quot;&gt;https://www.acmicpc.net/problem/4948&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1585843549595&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;4948번: 베르트랑 공준&quot; data-og-description=&quot;문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/4948&quot; data-og-url=&quot;https://www.acmicpc.net/problem/4948&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ojPsL/hyFv7LVy31/8Os2E5fYvKk1zZc5H2N6Ik/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/4948&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/4948&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ojPsL/hyFv7LVy31/8Os2E5fYvKk1zZc5H2N6Ik/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;4948번: 베르트랑 공준&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;- 문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;- 입력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n &amp;le; 123456)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;입력의 마지막에는 0이 주어진다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #000000;&quot;&gt;&lt;b&gt;- 출력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 예제&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Gfbz/btqDbleHfvI/0Jyla92imfydVAx365yizK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Gfbz/btqDbleHfvI/0Jyla92imfydVAx365yizK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Gfbz/btqDbleHfvI/0Jyla92imfydVAx365yizK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Gfbz%2FbtqDbleHfvI%2F0Jyla92imfydVAx365yizK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 풀이&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;풀이의 접근법은 에라토스테네스의 체 알고리즘을 이용하여 주어진 범위 내의 소수들을 모두 구한 후 조건에 맞는 소수들의 개수를 출력하는 방식으로 접근했습니다.&lt;/p&gt;
&lt;p&gt;수의 범위는 123456의 두 배로 계산해야 하지만 약 280000으로 어림잡아 구했습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;- 소스코드&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1585844804388&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;vector&amp;gt;
using namespace std;
typedef long long ll;

bool check[280000];
int input;

//에라토스테네스의 체
void prime() {
	for (ll i = 2; i &amp;lt;= 280000; i++) {
		//지워지지 않은 수는 소수
		if (check[i] == false) {
			for (ll j = i * i; j &amp;lt;= 280000; j += i) {
				//지워진 수의 배수는 소수가 아님
				check[j] = true;
			}
		}
	}
}
int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	check[1] = true;
	prime();
	while (1) {
		cin &amp;gt;&amp;gt; input; if (input == 0)break;
		int cnt = 0;
		for (int i = input + 1; i &amp;lt;= input * 2; i++) {
			if (check[i] == false)
				cnt++;
		}
		cout &amp;lt;&amp;lt; cnt &amp;lt;&amp;lt; &quot;\n&quot;;
	}
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Algorithm/Beakjoon</category>
      <category>C++</category>
      <category>백준</category>
      <category>알고리즘</category>
      <category>에라토스테네스의 체</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/5</guid>
      <comments>https://earlykim.tistory.com/5#entry5comment</comments>
      <pubDate>Fri, 3 Apr 2020 01:05:17 +0900</pubDate>
    </item>
    <item>
      <title>[Data Structure]1. 자료구조란 무엇일까? 정의와 분류</title>
      <link>https://earlykim.tistory.com/4</link>
      <description>&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #ef6f53;&quot;&gt;※본 포스팅은 학부생의 수준에서 작성한 글이므로 내용이 다소 부족할 수 있습니다. 참고하시기 바랍니다※&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size18&quot;&gt;자료구조란?&lt;/h4&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;위키백과에서는 자료구조에 대해 다음과 같이 정의하고 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #666666; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;i&gt;- 컴퓨터 과학에서 효율적인 접근 및 수정을 가능케 하는 자료의 조직, 관리, 저장을 의미&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span&gt;조금 풀어서 설명하자면, 다음과 같이 정의할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;i&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&quot;어떠한 데이터 집단을 보다 효율적으로 다루기 위해서 이 집단을 어떻게 저장할 것인가?&quot;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;따라서 사용하는 자료구조에 따라서 실행시간과 공간활용도의 차이가 매우 상이하게 나타날 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;자료구조의 분류&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;- 구현에 따른 분류&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;배열(Array) - 가장 일반적인 구조. 메모리 상에 같은 타입의 자료가 연속적으로 저장되는 구조.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;튜플(Tuple) &lt;/span&gt;- 둘 이상의 자료형을 묶음으로 다루는 구조.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;연결 리스트(Linked List) &lt;/span&gt;- 기본 단위는 노드. 노드는 자료와 다음 노드를 가리키는 참조값으로 구성되어 있는 구조.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;원형 연결 리스트(Circular Linked List) &lt;/span&gt;- 각 노드는 다음 노드를 가리키고, 마지막 노드가 처음 노드를 가리키는 연결 리스트 구조.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;/span&gt;이중 연결 리스트(Double Linked List) - 각 노드는 이전 노드와 다음 노드를 가리키는 참조값으로 구성되는 구조.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;환형 이중 연결 리스트(Circular Double Linked List) &lt;/span&gt;- 처음 노드가 이전 노드로 마지막 노드를 가리키고, 마지막 노드가 다음 노드로 처음 노드를 가리키는 이중 연결 리스트 구조.&lt;/li&gt;
&lt;li&gt;&lt;span&gt;해시 테이블(Hash Table) &lt;/span&gt;- 개체가&lt;span&gt;&amp;nbsp;해시&lt;/span&gt;값에 따라 해시 테이블에 저장되는 구조.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;- 형태에 따른 분류&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;선형 자료구조(Linear Data Structure)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스택(Stack) - 먼저 들어간 것이 가장 나중에 나오며 반대로 가장 나중에 들어간 것이 가장 먼저 나오는 구조.&lt;/li&gt;
&lt;li&gt;큐(Queue) - 먼저 들어간 것이 가장 먼저 나오는 구조.&lt;/li&gt;
&lt;li&gt;데크(Deque) - 큐에서 입구가 양쪽에 존재하여 스택과 큐의 형태를 모두 사용 가능한 구조&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;비선형 자료구조(Non-Linear Data Structure)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;트리(Tree) - 뿌리와, 뿌리 또는 다른 꼭짓점을 단 하나의 부모로 갖는 꼭짓점들로 이루어진 구조.&lt;/li&gt;
&lt;li&gt;그래프(Graph) - 꼭짓점(Edge)와 각 꼭짓점을 잇는 변(Vertex)로 구성되어 있는 구조.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center; font-size: 1.25em;&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; color: #f89009;&quot;&gt;&lt;i&gt;다음 포스팅에서는 자료구조의 선택기준과 특징에 대해 알아보겠습니다!&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;출처&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://en.wikipedia.org/wiki/Data_structure&quot;&gt;https://en.wikipedia.org/wiki/Data_structure&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://gwakuh.tistory.com/1&quot;&gt;https://gwakuh.tistory.com/1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm/Data Structure</category>
      <category>datastructure</category>
      <category>자료구조</category>
      <category>컴퓨터공학</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/4</guid>
      <comments>https://earlykim.tistory.com/4#entry4comment</comments>
      <pubDate>Tue, 22 Oct 2019 17:58:18 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 알고리즘 1000번 : A+B(Python풀이)</title>
      <link>https://earlykim.tistory.com/3</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1000&quot;&gt;https://www.acmicpc.net/problem/1000&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1571376144748&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;1000번: A+B&quot; data-og-description=&quot;문제 두 정수 A와 B를 입력받은 다음,&amp;nbsp;A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 &amp;lt; A, B &amp;lt; 10) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 1 2 예제 출력 1 복사 3 힌트 여기를 누르면 1000번 예제 소스를 볼 수 있습니다....&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1000&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1000&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nAlSO/hyDjlYiZuX/Ni3QXRunqDCZvm0wtr7hGk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1000&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1000&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nAlSO/hyDjlYiZuX/Ni3QXRunqDCZvm0wtr7hGk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;1000번: A+B&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;문제 두 정수 A와 B를 입력받은 다음,&amp;nbsp;A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 &amp;lt; A, B &amp;lt; 10) 출력 첫째 줄에 A+B를 출력한다. 예제 입력 1 복사 1 2 예제 출력 1 복사 3 힌트 여기를 누르면 1000번 예제 소스를 볼 수 있습니다....&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 문제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;두 정수 A와 B를 입력받은 다음,&amp;nbsp;A+B를 출력하는 프로그램을 작성하시오.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 입력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;첫째 줄에 A와 B가 주어진다. (0 &amp;lt; A, B &amp;lt; 10)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 출력&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; color: #666666;&quot;&gt;첫째 줄에 A+B를 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 예제&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dRHq2h/btqy9eZxQot/1CyMbsdgL9Q7FtVIEwkNK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dRHq2h/btqy9eZxQot/1CyMbsdgL9Q7FtVIEwkNK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dRHq2h/btqy9eZxQot/1CyMbsdgL9Q7FtVIEwkNK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdRHq2h%2Fbtqy9eZxQot%2F1CyMbsdgL9Q7FtVIEwkNK1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;- 풀이&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;본 풀이에서는 Python 언어를 사용하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Python에서는 기본적으로 입력을 받는 함수로 input() 함수를 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;하지만 알고리즘 풀이와 같은 문제에서는 &lt;span style=&quot;color: #ff1212;&quot;&gt;문제를 해결하는 데에 걸리는 시간&lt;/span&gt;도 중요한 요소로 작용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;즉, 내가 작성한 코드가 문제풀이에 &lt;span style=&quot;color: #ff1212;&quot;&gt;얼마만큼의 시간을 소요했느냐&lt;/span&gt;가 정답과 오답을 가르기도 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;하지만 본 문제와 같은 기본적인 문제에서는 시간이라는 요소가 크게 작용하지는 않으니 기본적인 함수 사용으로도 충분히 문제를 해결할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇다면 Python에서 예제와 같이 &lt;span style=&quot;color: #ff1212;&quot;&gt;띄어쓰기로 입력을 받으려면&lt;/span&gt; 어떻게 해야 할까요??&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;여러가지 방법이 있을 수 있겠지만 아래와 같은 방법을 사용해보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571384626441&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a,b=input().split()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Python은 C나 C++과 달리 변수 두 개를 또는 그 이상을 &lt;span style=&quot;color: #ff1212;&quot;&gt;한 번에 다른 값으로 초기화 할 수 있습니다. (같은 자료형)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;span style=&quot;color: #ff1212;&quot;&gt;split()&lt;/span&gt;함수는 괄호 안의 문자를 만나면 잘라서 저장하라는 의미 정도로 알고계시면 좋을 것 같네요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;현재는 괄호 안에 아무 문자도 없으니 띄어쓰기를 기준으로 문자를 자른다 라고 생각하시면 되겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇다면 이제 a와 b를 더할 일만 남았겠군요.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571385020275&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a,b=input().split()
print(a+b)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;하지만 이렇게 실행을 하게되면 쌩뚱맞은 답인 12가 나오게 됩니다.(???)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GZuTF/btqy91ZxYj3/U1F9mJb2ybLnAHToxkpDek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GZuTF/btqy91ZxYj3/U1F9mJb2ybLnAHToxkpDek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GZuTF/btqy91ZxYj3/U1F9mJb2ybLnAHToxkpDek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGZuTF%2Fbtqy91ZxYj3%2FU1F9mJb2ybLnAHToxkpDek%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위와 같은 코드로 a와 b를 저장하게 되면 기본적으로 &lt;span style=&quot;color: #ff1212;&quot;&gt;문자열 형태(str)&lt;span style=&quot;color: #333333;&quot;&gt;로 저장이&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;그렇기 때문에 문자열 &quot;1&quot;과 문자열 &quot;2&quot;가 더해져서 문자열 &quot;12&quot;가 된 것이죠.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;우리가 하고자 하는 풀이는 정수 a와 b의 합이기 때문에 &lt;span style=&quot;color: #ff1212;&quot;&gt;문자열을 다시 정수로 변환하는 과정&lt;/span&gt;이 필요합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571384803234&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a=int(a)
b=int(b)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이러한 과정을 &lt;span style=&quot;color: #ff1212;&quot;&gt;&quot;형변환&quot;&lt;/span&gt; 이라고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위의 코드는 &quot;변수 a를 int라는 형태로 바꾸어 다시 변수 a에 저장하라&quot; 라는 정도의 코드가 되겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(Python의 변수 저장 형태는 추후에 다시 설명하는 시간을 갖겠습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이 과정을 거치게 되면 a와 b는 정수형태인 int형으로 바뀌게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;형 변환이 끝났으니 이제 &lt;span style=&quot;color: #ff1212;&quot;&gt;print()&lt;/span&gt;함수를 사용하여 a+b를 출력해보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571385316086&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a,b=input().split()
a=int(a)
b=int(b)
print(a+b)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn8wy0/btqy9dGnbun/B8TKZiRH1u76WQ1NUHq4X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn8wy0/btqy9dGnbun/B8TKZiRH1u76WQ1NUHq4X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn8wy0/btqy9dGnbun/B8TKZiRH1u76WQ1NUHq4X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn8wy0%2Fbtqy9dGnbun%2FB8TKZiRH1u76WQ1NUHq4X1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&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;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;이제 코드를 약간 간결하게 만들어 보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;Python에서는 &lt;span style=&quot;color: #ff1212;&quot;&gt;map()&lt;/span&gt;이라는 함수를 사용할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571385628216&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;a,b=map(int,input().split())
print(a+b)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;기본적으로 &quot;map 함수는 리스트의 요소에 함수를 적용시켜 결과를 반환한다&quot; 라는 정의를 가지고 있는데&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어려운 개념입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위의 코드를 가지고 설명을 한다면 &lt;span style=&quot;color: #ff1212;&quot;&gt;&quot;input함수를 가지고 입력받은 문자열(str)을 띄어쓰기를 기준으로 띄워서 a와 b에 저장을 할건데, 그걸 정수형(int)으로 저장할게!&quot;&lt;/span&gt; 정도의 의미를 가지고 계시면 될 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;어쨋든, 앞의 4줄 코드보다 훨씬 간략한 코드가 되었죠??&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;위의 코드들 말고도 정말 다양한 코드들이 나올 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #ff1212;&quot;&gt;하지만 그 코드들은 모두 정답인 코드들이며 처음 시작하는 단계에서는 하나하나 어떻게든 풀어 나가는 것이 중요하다고 생각합니다.&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;시간까지 절약할 수 있는 코드를 마지막으로 이번 포스팅을 마무리 하도록 하겠습니다!!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;(코드에 대한 설명은 다음 기회에 하도록 하겠습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1571380643267&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import sys
a,b=map(int,sys.stdin.readline().split())
print(a+b)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Algorithm/Beakjoon</category>
      <category>백준 #알고리즘 #Python #파이썬</category>
      <author>earlykim</author>
      <guid isPermaLink="true">https://earlykim.tistory.com/3</guid>
      <comments>https://earlykim.tistory.com/3#entry3comment</comments>
      <pubDate>Fri, 18 Oct 2019 14:13:31 +0900</pubDate>
    </item>
  </channel>
</rss>