<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>막내의 막무가내 프로그래밍 &amp;amp; 일상</title>
    <link>https://youngest-programming.tistory.com/</link>
    <description>IT 프로그래밍 및 일상 블로그입니다 :)
모바일에 가장 관심이 많습니다.
항상 목표의식을 갖고 생각하는 사람이 되자!</description>
    <language>ko</language>
    <pubDate>Fri, 10 Jul 2026 21:47:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>막무가내막내</managingEditor>
    <image>
      <title>막내의 막무가내 프로그래밍 &amp;amp; 일상</title>
      <url>https://tistory1.daumcdn.net/tistory/3047540/attach/7bda81b751f24addbff2865b3d48b574</url>
      <link>https://youngest-programming.tistory.com</link>
    </image>
    <item>
      <title>2024년 버팀목 전세자금 대출 신청(심사) 시 알아야할 기본사항</title>
      <link>https://youngest-programming.tistory.com/785</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;990&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnK6f5/btsG13tvYkK/WZ5EqaJBm6IObUwjEiQre0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnK6f5/btsG13tvYkK/WZ5EqaJBm6IObUwjEiQre0/img.png&quot; data-alt=&quot;AI 이미지 생성은 처음해봤는데 대단한듯.(진땀빼며 은행 상품 공부를 하고 있는 한국인 IT 개발자 , A Korean IT developer sweating hard studying banking products 입력).&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnK6f5/btsG13tvYkK/WZ5EqaJBm6IObUwjEiQre0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnK6f5%2FbtsG13tvYkK%2FWZ5EqaJBm6IObUwjEiQre0%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;990&quot; height=&quot;990&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;990&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;AI 이미지 생성은 처음해봤는데 대단한듯.(진땀빼며 은행 상품 공부를 하고 있는 한국인 IT 개발자 , A Korean IT developer sweating hard studying banking products 입력).&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;독학하면서 복습겸 간단하게 디딤돌대출 기본사항 정리하는 포스팅이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버팀돌 전세자금 대출은 주택도시기금을 통해 무주택 서민에게 낮은 금리로 공급되는 상품이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자격기준만 충족되면 은행재원 대출보다 저렴하여 많은 사람들이 우선적으로 고려하는 대출상품이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재기준 은행재원이 4%대면 버팀목의 경우 2%대로 절반 수준이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버팀목 전세자금대출을 받기위해 인터넷 또는 지점 방문을 통해 많은 사람들이 상담하러 오시는데 상품 안내나 기본, 공통적인 상담은 해줄 수 있지만 준비서류를 챙겨오더라도&amp;nbsp; 가심사와 대출까지 해주기는 힘들다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기금이든든(&lt;a href=&quot;https://enhuf.molit.go.kr/index.jsp&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://enhuf.molit.go.kr/index.jsp&lt;/a&gt;) 사이트에서 먼저 자산심사를 통과하고 준비서류를 갖고와야 대출심사를 접수해줄 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기금이든든에서 자산심사를 먼저 받고 은행에 방문하여 바로 대출접수가 원활히 가능하게 하길 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(은행에서 오래 기다렸는데 헛걸음하면 마음이 아프다)&lt;/p&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;자격요건 알아보기 -&amp;gt; 기금이든든 자산심사 -&amp;gt; 준비서류 들고 은행방문 상담&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작이 반이란 말이 있다. &lt;b&gt;신청자격과 상품요건&lt;/b&gt;에 대해 최우선적으로 알 필요가 있고 정리해보겠음&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[자격요건]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버팀목 전세자금 대출도 일반, 신혼가구 전용, 중소기업청년, 청년전용, 신생아특례 등 종류가 다양하며 조금씩 기준과 한도가 다르다는 점 알아두자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 무주택 심사&lt;/b&gt;&lt;/h4&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 자산 심사&lt;/b&gt;&lt;/h4&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;부동산, 일반자산, 자동차, 금융자산 등을 포함한 자산이며 &lt;b&gt;순자산가액이 3.45억원 이하&lt;/b&gt;여야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 연소득&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(부부합산) &lt;b&gt;5천만원 이하&lt;/b&gt;, 신생아특례의 경우는 &lt;b&gt;1억3천만&lt;/b&gt; 이하&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신혼가구는 &lt;b&gt;7천5백만 이하&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미성년2자녀이상 등은 &lt;b&gt;6천만 이하&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 대상 주택&lt;/b&gt;&lt;/h4&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;gt; 임차 전용면적 85m^2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수도권 외 -&amp;gt; 임차 전용면적 100m^2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;nbsp; 임차보증금&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반, 신혼가구 -&amp;gt; 수도권 &lt;b&gt;3억&lt;/b&gt;, 수도권 외 &lt;b&gt;2억원&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2자녀 이상 -&amp;gt; 수도권 &lt;b&gt;4억&lt;/b&gt;, 수도권 외 &lt;b&gt;3억원&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4. 대출 한도&amp;nbsp;&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대출비율과 호당 대출한도중 낮은게 기준이 된다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 대출비율 (디딤돌 종류가 마다 상이함)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;대략 일반 디딤돌의 경우&lt;b&gt; 70%이내 나머지는 80%&lt;/b&gt; 정도이내&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 호당 대출한도 : 각각의 버팀목 대출의 최대한도 &lt;b&gt;(디딤돌 종류가 마다 상이함)&lt;/b&gt; &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 디딤돌 대출의 경우 &lt;b&gt;수도권 1.2억원, 수도권 외 0.8억원, 단 미성년자 2자녀 이상등은 수도권 3억, 수도권 외 2억원&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신혼가구 전용 버팀목은 &lt;b&gt;수도권 3억, 수도권 외 2억원&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대출한도는 상품마다 너무 달라서 상품개요를 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;5. 대출신청시기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주택임대차계약을 체결하고 임차보증금의 &lt;b&gt;5% 이상&lt;/b&gt;을 지불한 상태여야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신규계약 -&amp;gt; 임대차계약서상 잔금지급일과 주민등록본상 전입일 중 빠른 날로부터 &lt;b&gt;3개월&lt;/b&gt; 이내&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갱신계약 -&amp;gt; 갱신계약일로부터 &lt;b&gt;3개월&lt;/b&gt; 이내&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &lt;b&gt;3개월&lt;/b&gt;이다. 절대 놓치지 말자!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 복습 겸 정리하는 포스팅을 가졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>금융</category>
      <category>기금이든든</category>
      <category>기금이든든 자산심사</category>
      <category>막무가내 버팀목 대출</category>
      <category>버팀목</category>
      <category>버팀목 대출</category>
      <category>버팀목 전세자금 대출</category>
      <category>청년 전세 대출</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/785</guid>
      <comments>https://youngest-programming.tistory.com/785#entry785comment</comments>
      <pubDate>Sun, 28 Apr 2024 18:19:06 +0900</pubDate>
    </item>
    <item>
      <title>[기타] 엑셀 실적점수표 작업 정리</title>
      <link>https://youngest-programming.tistory.com/781</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;[기획]&lt;br&gt;영업일은 행에&lt;br&gt;직원별 점수분류는 열로 분류했다.&lt;br&gt;추가로 마지막 열에는 전체직원 합계가 들어가게함&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1899&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OktA9/btsGDKHWtXS/O3ZgiYCosX8IY8GFYVVXyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OktA9/btsGDKHWtXS/O3ZgiYCosX8IY8GFYVVXyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OktA9/btsGDKHWtXS/O3ZgiYCosX8IY8GFYVVXyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOktA9%2FbtsGDKHWtXS%2FO3ZgiYCosX8IY8GFYVVXyk%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;1899&quot; height=&quot;1022&quot; data-origin-width=&quot;1899&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;[샘플완성]&lt;br&gt;- 값 테스트 (기본값)&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXDMSQ/btsGDHR1a1N/63InCbQKO85vveE2kN1G7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXDMSQ/btsGDHR1a1N/63InCbQKO85vveE2kN1G7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXDMSQ/btsGDHR1a1N/63InCbQKO85vveE2kN1G7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXDMSQ%2FbtsGDHR1a1N%2F63InCbQKO85vveE2kN1G7k%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;1502&quot; height=&quot;814&quot; data-origin-width=&quot;1502&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;-&amp;nbsp; 수식 표시&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1623&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cW4CPp/btsGBdrCApD/k7w8KmRVuR4hh5uUbBy3l0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cW4CPp/btsGBdrCApD/k7w8KmRVuR4hh5uUbBy3l0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cW4CPp/btsGBdrCApD/k7w8KmRVuR4hh5uUbBy3l0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcW4CPp%2FbtsGBdrCApD%2Fk7w8KmRVuR4hh5uUbBy3l0%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;1623&quot; height=&quot;470&quot; data-origin-width=&quot;1623&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;[파일]&lt;/p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/opTvL/btsGCsOBn6J/bggCEibYzB50Pg8DjEhbek/%EC%98%81%EC%97%85%EC%A0%90%EC%8B%A4%EC%A0%81%EC%A0%90%EC%88%98%ED%91%9C.xlsx?attach=1&amp;amp;knm=tfile.xlsx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;영업점실적점수표.xlsx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;</description>
      <category>기타</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/781</guid>
      <comments>https://youngest-programming.tistory.com/781#entry781comment</comments>
      <pubDate>Sun, 14 Apr 2024 14:45:53 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 손해보험 보험대리점 자격증 취득</title>
      <link>https://youngest-programming.tistory.com/761</link>
      <description>&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;752&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HWSvd/btsppHPbPmO/8cBPkme77YzchRy4J19vnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HWSvd/btsppHPbPmO/8cBPkme77YzchRy4J19vnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HWSvd/btsppHPbPmO/8cBPkme77YzchRy4J19vnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHWSvd%2FbtsppHPbPmO%2F8cBPkme77YzchRy4J19vnK%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;752&quot; height=&quot;817&quot; data-origin-width=&quot;752&quot; data-origin-height=&quot;817&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;1243&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nU4Mv/btspfOo1lkp/h5hf4Qf2Bk0S0oEtKRrL1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nU4Mv/btspfOo1lkp/h5hf4Qf2Bk0S0oEtKRrL1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nU4Mv/btspfOo1lkp/h5hf4Qf2Bk0S0oEtKRrL1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnU4Mv%2FbtspfOo1lkp%2Fh5hf4Qf2Bk0S0oEtKRrL1K%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;1243&quot; height=&quot;196&quot; data-origin-width=&quot;1243&quot; data-origin-height=&quot;196&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;a href=&quot;https://youngest-programming.tistory.com/758&quot;&gt;https://youngest-programming.tistory.com/758&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1690712109411&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[금융] 생명보험 + 제3보험 보험대리점 자격증 취득&quot; data-og-description=&quot;생명보험과 제3보험을 같이 보험대리점 자격증 시험을 봤다. 쉬워서 하루만 공부해도 딸 수 있다고 들어서 딱 전날 퇴근 후 딱 2시간 자고 하루 벼락치기를 했다.. 책 기출만 싹 돌리고 보러갔는&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/758&quot; data-og-url=&quot;https://youngest-programming.tistory.com/758&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cNj8Wi/hyTtrDhoq6/G7RgjEzjBXTKcJJhEyaaOK/img.png?width=715&amp;amp;height=785&amp;amp;face=0_0_715_785,https://scrap.kakaocdn.net/dn/eGRRK/hyTvjKoksa/uOs7imhC26JKzFcWK9i6l0/img.png?width=715&amp;amp;height=785&amp;amp;face=0_0_715_785,https://scrap.kakaocdn.net/dn/XVB7M/hyTtjyuEKl/Ch8Omoc6OKnDf9uVBSKnQK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://youngest-programming.tistory.com/758&quot; data-source-url=&quot;https://youngest-programming.tistory.com/758&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cNj8Wi/hyTtrDhoq6/G7RgjEzjBXTKcJJhEyaaOK/img.png?width=715&amp;amp;height=785&amp;amp;face=0_0_715_785,https://scrap.kakaocdn.net/dn/eGRRK/hyTvjKoksa/uOs7imhC26JKzFcWK9i6l0/img.png?width=715&amp;amp;height=785&amp;amp;face=0_0_715_785,https://scrap.kakaocdn.net/dn/XVB7M/hyTtjyuEKl/Ch8Omoc6OKnDf9uVBSKnQK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;[금융] 생명보험 + 제3보험 보험대리점 자격증 취득&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;생명보험과 제3보험을 같이 보험대리점 자격증 시험을 봤다. 쉬워서 하루만 공부해도 딸 수 있다고 들어서 딱 전날 퇴근 후 딱 2시간 자고 하루 벼락치기를 했다.. 책 기출만 싹 돌리고 보러갔는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;저번 생명보험, 제3보험에 이어서 이번에는 손해보험 보험대리점 자격증 시험을 봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;저번에 보험시험때 벼락치기 하고 너무 피곤하고 불안하게 봤어서 미리미리 공부하고 푹잔상태로 보려했는데 또 시험 하루전날 벼락치기를 하고 보게되었다..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;금요일 퇴근 후 8시반쯤부터 공부를 시작했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555; text-align: left;&quot;&gt;시간이 없어서 한화생명에서 올린 유튜브 개념강의와 기출문제만 1회독하고 2시간만 자고 다음날 오전 11시 시험을 봤다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;선릉역으로 거리도 좀 되서 너무 가는데 너무 피곤했다&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;시험을 봤을떈 역시 족보 그대로 나오는 문제는 없어서 거의 모든 문제를 다 찍고나와서 떨어졌겠다 생각했는데, 찍기 운이 좋았는지 시험점수도 높은(?) 편으로 합격을 해서 좀 의외였다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;비전공자 기준으로는 밤새지말고 2~3일정도 안전하게 공부하면 좋을 것 같다. 신기하게 다 찍고나오는데 커트라인이 60이라 그런지 붙을 확률이 은근 높다.&amp;nbsp;&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;&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>금융</category>
      <category>손해보험 보험대리점 자격증</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/761</guid>
      <comments>https://youngest-programming.tistory.com/761#entry761comment</comments>
      <pubDate>Sun, 30 Jul 2023 19:15:16 +0900</pubDate>
    </item>
    <item>
      <title>SQLD 자격증 취득</title>
      <link>https://youngest-programming.tistory.com/759</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqWnRQ/btsl1WbJLZ0/euOGyoWi8JpktJLvgPq7l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqWnRQ/btsl1WbJLZ0/euOGyoWi8JpktJLvgPq7l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqWnRQ/btsl1WbJLZ0/euOGyoWi8JpktJLvgPq7l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqWnRQ%2Fbtsl1WbJLZ0%2FeuOGyoWi8JpktJLvgPq7l1%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;549&quot; height=&quot;632&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;SQLD 자격증 시험을 봤다!&lt;br&gt;책은 회사에서 준걸로 공부했고 퇴근후 3일 정도 공부했다.&lt;br&gt;시험을 보고 2과목은 잘 풀었다 생각했는데 1과목은 과락이 나올수도 있겠다 싶었다.&lt;br&gt;다행히 과락도 안나고 합격할 수 있었다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SQL</category>
      <category>SQLD 자격증</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/759</guid>
      <comments>https://youngest-programming.tistory.com/759#entry759comment</comments>
      <pubDate>Sun, 2 Jul 2023 02:15:49 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 생명보험 + 제3보험 보험대리점 자격증 취득</title>
      <link>https://youngest-programming.tistory.com/758</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UR8Tn/btsl4mtWyTl/3gKNE7lbyaUqqUCAsLh7Y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UR8Tn/btsl4mtWyTl/3gKNE7lbyaUqqUCAsLh7Y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UR8Tn/btsl4mtWyTl/3gKNE7lbyaUqqUCAsLh7Y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUR8Tn%2Fbtsl4mtWyTl%2F3gKNE7lbyaUqqUCAsLh7Y0%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;715&quot; height=&quot;785&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;785&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;628&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1yGWC/btsl2KB7ZaU/GptteM1Ox2LfiijQu6qtnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1yGWC/btsl2KB7ZaU/GptteM1Ox2LfiijQu6qtnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1yGWC/btsl2KB7ZaU/GptteM1Ox2LfiijQu6qtnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1yGWC%2Fbtsl2KB7ZaU%2FGptteM1Ox2LfiijQu6qtnK%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;628&quot; height=&quot;688&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;생명보험과 제3보험을 같이 보험대리점 자격증 시험을 봤다.&lt;br&gt;쉬워서 하루만 공부해도 딸 수 있다고 들어서 딱 전날 퇴근 후 딱 2시간 자고 하루 벼락치기를 했다..&lt;br&gt;책 기출만 싹 돌리고 보러갔는데 분명 도덕적인 문제가 많아서 맞추기 쉽다했는데 도덕적인 문제가 두세문제 정도밖에 없어서 망했다 싶었는데 커트가 60이다 보니 어찌어찌 붙긴 했다.&lt;br&gt;&amp;nbsp;&lt;br&gt;기출하고도 똑같거나 그런 문젠 거의 없었고 기출문제에 나온 개념을 꼬아서 낸 문제가 많다고 느꼈다.&lt;br&gt;(공부를 넘 짧게한게 문제긴함)&lt;br&gt;&amp;nbsp;&lt;br&gt;이번 시험이 좀 다르게 나온게 아니라면 안전하게 2~3일은 공부에 투자하는게 좋을 것 같다.&lt;br&gt;&amp;nbsp;&lt;br&gt;시험장소가 보문역이라 가기 좀 멀었는데 붙어서 다행이다.&lt;br&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>금융</category>
      <category>보험대리점 자격증</category>
      <category>생명보험</category>
      <category>제3보험</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/758</guid>
      <comments>https://youngest-programming.tistory.com/758#entry758comment</comments>
      <pubDate>Sun, 2 Jul 2023 02:11:51 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 앱 게시 취소했던거 다시 출시로 복구하는법 구글 플레이 콘솔</title>
      <link>https://youngest-programming.tistory.com/757</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9aHb4/btsljhGG6gH/pcfa2ve4Vfn1WlxYXwGJS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9aHb4/btsljhGG6gH/pcfa2ve4Vfn1WlxYXwGJS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9aHb4/btsljhGG6gH/pcfa2ve4Vfn1WlxYXwGJS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9aHb4%2FbtsljhGG6gH%2Fpcfa2ve4Vfn1WlxYXwGJS1%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;1920&quot; height=&quot;1040&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&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;구글 플레이 콘솔에 들어가서 왼쪽 탭에 설정-&amp;gt;고급설정 에서 바꿔주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드</category>
      <category>안드로이드 게시 취소한 앱 복구</category>
      <category>안드로이드 앱 게시 취소</category>
      <category>안드로이드 앱 게시 취소를 취소</category>
      <category>안드로이드 앱 출시 취소</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/757</guid>
      <comments>https://youngest-programming.tistory.com/757#entry757comment</comments>
      <pubDate>Sun, 25 Jun 2023 16:46:19 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 파생상품투자권유자문인력 금융자격증 취득</title>
      <link>https://youngest-programming.tistory.com/753</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dY1f7Y/btsigD1Nj3U/Tav1Kt8Pq8kf9nnqtApvu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dY1f7Y/btsigD1Nj3U/Tav1Kt8Pq8kf9nnqtApvu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dY1f7Y/btsigD1Nj3U/Tav1Kt8Pq8kf9nnqtApvu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdY1f7Y%2FbtsigD1Nj3U%2FTav1Kt8Pq8kf9nnqtApvu0%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;616&quot; height=&quot;679&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;679&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파생상품투자권유자문인력 자격증을 이번에 취득했다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;시험공부하면서 이전에 공부했던 펀드투자권유자문인력보다도 어렵기도해서 스트레스도 많이 받고 셤도 망했다 생각하여 당연히 떨어질줄 알았는데 왠걸&amp;nbsp; 한번에 합격해서 다행이다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사내에서 준 교재와 해커스 책을 사서 공부했는데 기간을 2주&amp;nbsp; 잡고해서 해커스는 조금 보다가 시간이 없을거같아서 사내교재로만 공부했다. ㅎㅎ&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;비전공자기준 기간은 2주를 잡고하면 빡세게 공부해야 안전하게 합격할 수 있을 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 1,2 장은 이해를 3, 4장은 달달 외우는게 중요한듯하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;005&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;굳굳~&lt;/p&gt;</description>
      <category>금융</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/753</guid>
      <comments>https://youngest-programming.tistory.com/753#entry753comment</comments>
      <pubDate>Thu, 1 Jun 2023 23:30:29 +0900</pubDate>
    </item>
    <item>
      <title>[면접정리] 안드로이드 면접 후기 및 받은 질문 정리</title>
      <link>https://youngest-programming.tistory.com/736</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;유명 IT기업 n사 안드로이드 직무 신입 면접을 봤었는데 질문을 정리해봤다.&lt;br&gt;안드로이드를 요즘 못하다보니 확실히 퇴화되긴 했구나 느꼈다. 2년전이 오히려 훨씬 더 잘 대답했을거같다.&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;br&gt;0. 가지고잇는 기술셋, 이직사유&lt;br&gt;1.&amp;nbsp;액티비티&amp;nbsp;생명주기&amp;nbsp;설명 &lt;br&gt;onStart&amp;nbsp;부가설명 &lt;br&gt;2.&amp;nbsp;뷰가&amp;nbsp;그려지는&amp;nbsp;과정&amp;nbsp;설명 &lt;br&gt;3.&amp;nbsp;Mvc&amp;nbsp;mvp&amp;nbsp;mvvm&amp;nbsp;설명&amp;nbsp;및&amp;nbsp;장단점 &lt;br&gt;4.&amp;nbsp;Dagger&amp;nbsp;hilt&amp;nbsp;차이점 &lt;br&gt;둘이&amp;nbsp;컴파일&amp;nbsp;런타임때&amp;nbsp;에러가&amp;nbsp;검출된다했는데&amp;nbsp;둘이&amp;nbsp;컴파일때&amp;nbsp;구조가&amp;nbsp;어떻게&amp;nbsp;되고&amp;nbsp;어떻게&amp;nbsp;동작하는지&amp;nbsp;알고있는지 &lt;br&gt;5.&amp;nbsp;4대&amp;nbsp;컴포넌트&amp;nbsp;설명 &lt;br&gt;컨텐트프로바이더 사용해봣는지 어떻게 내 앱을 등록하는지&lt;br&gt;컨텐트프로바이더로 내앱을 다른앱에 공유해주는걸 해봤는지와 하는방법&lt;br&gt;암시적&amp;nbsp;명시적&amp;nbsp;호출&amp;nbsp;차이점 &lt;br&gt;6.&amp;nbsp;인텐트&amp;nbsp;설명 &lt;br&gt;7. 엔티티가 뭔지 &lt;br&gt;8.&amp;nbsp;클린아키텍처&amp;nbsp;경험&amp;nbsp;및&amp;nbsp;설명 &lt;br&gt;9.&amp;nbsp;클린아키텍처&amp;nbsp;각&amp;nbsp;레이어&amp;nbsp;설명&amp;nbsp;의존성방향 &lt;br&gt;데이터레이어가&amp;nbsp;어떻게&amp;nbsp;되어있는지&amp;nbsp; &lt;br&gt;10. Savedinstance restroeinstance 뭔지 아는지&lt;br&gt;11.&amp;nbsp;파이어베이스&amp;nbsp;어떤&amp;nbsp;기능&amp;nbsp;사용해봤는지 &lt;br&gt;12.&amp;nbsp;Okhttp랑&amp;nbsp;레트로핏&amp;nbsp;사용해봤는지&lt;br&gt;생각나는건 이정도다.&lt;br&gt;13. 마지막질문&lt;br&gt;14. 시간이 남았는데 가장 자신있는 기술(지식)이 뭔지&lt;/p&gt;</description>
      <category>필기 및 면접정리</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/736</guid>
      <comments>https://youngest-programming.tistory.com/736#entry736comment</comments>
      <pubDate>Sun, 27 Nov 2022 17:36:22 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 오픈뱅킹 API 개념 정리</title>
      <link>https://youngest-programming.tistory.com/734</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[오픈뱅킹이란]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ek6syN/btrQ0j3oLfa/FQ8a8KX3ZAJGH5DfG9W3gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ek6syN/btrQ0j3oLfa/FQ8a8KX3ZAJGH5DfG9W3gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ek6syN/btrQ0j3oLfa/FQ8a8KX3ZAJGH5DfG9W3gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fek6syN%2FbtrQ0j3oLfa%2FFQ8a8KX3ZAJGH5DfG9W3gk%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;858&quot; height=&quot;317&quot; data-origin-width=&quot;858&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;오픈뱅킹&lt;/b&gt; 등 대외망 업무를 하면서 일반적인 망거래와 다른 부분이 있어 처음에 이해가 좀 어려웠던 오픈뱅킹망에 대해 한 번 정리하는 포스팅을 하려했는데 이제서야 한다 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹이란 &lt;b&gt;모든핀테크 사업자와 금융기관이 개별 금융기관과 별도 제휴 없이도 핀테크서비스를 원활하게 제공할 수 있도록 핵심금융서비스(수취조회, 거래내역조회, 이체성 등)을 표준화된 API 를 제공&lt;/b&gt;하는 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;금융결제원이 중심 매개체가 되는 망이므로 당연히 오픈뱅킹 거래는 &lt;b&gt;금융결제원(이하 금결원)&lt;/b&gt;의 오픈뱅킹망을 거치게된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[오픈뱅킹 구축배경]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cc631Q/btrQ27m7s5H/hh8WvkjFKn09BtfNq1Kew0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cc631Q/btrQ27m7s5H/hh8WvkjFKn09BtfNq1Kew0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cc631Q/btrQ27m7s5H/hh8WvkjFKn09BtfNq1Kew0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcc631Q%2FbtrQ27m7s5H%2Fhh8WvkjFKn09BtfNq1Kew0%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;1231&quot; height=&quot;738&quot; data-origin-width=&quot;1231&quot; data-origin-height=&quot;738&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음 오픈뱅킹은 핀테크업체들이 금융기관(은행)의 서비스를 제공받아 쉽고 편리한 금융서비스 혁신을 위해 나온&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서비스였지만 현재는 은행권들도 모두 사용하고 점점 더 사용범위가 넓어지고 있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 다른 망에 비해 가장 혁신적이고 새로운 활용방안이 적용될 가능성이 높다고 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[오픈뱅킹 구성주체]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDHUNb/btrQ66Ox9eD/VskErRE1EQljIC7kN4IdOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDHUNb/btrQ66Ox9eD/VskErRE1EQljIC7kN4IdOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDHUNb/btrQ66Ox9eD/VskErRE1EQljIC7kN4IdOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDHUNb%2FbtrQ66Ox9eD%2FVskErRE1EQljIC7kN4IdOK%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;1256&quot; height=&quot;379&quot; data-origin-width=&quot;1256&quot; data-origin-height=&quot;379&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹공동망에서 API에 대해 살펴보기전 &lt;b&gt;구성주체&lt;/b&gt;에 대해 알아야한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설명은 그림에 작성되있으니 추가로 간단하게 설명을 덧붙이겠다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 참가기관&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹의 서비스를 제공하는 금융기관으로 예를들어 A은행에서 당행(자기은행) 고객의 거래내역조회, 이체성 거래 등을 제공하는데 참여한 기관을 말한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 오픈뱅킹센터(금결원)&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹 시스템을 구축 및 운영하고 거래의 중립(정합성)을 지키는 중심매게체로 금융결제원이라고 보면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;만약 무응답, 시스템 에러 등이 발생해서 두 기관끼리의 거래가 어긋난다면 금융결제원에서 어떻게 처리하였는지로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정합성을 맞추게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 이용기관&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹 &lt;b&gt;서비스를 일으키는 주체&lt;/b&gt;라고 보면된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예를들어 국민은행 스타뱅킹 앱에서 오픈뱅킹 거래로 타행의 잔액조회API를 불러온다면&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이용기관은 SOL앱으로 국민은행&lt;/b&gt;, &lt;b&gt;타행들은 API 서비스를 제공하는 참가기관&lt;/b&gt;이라고 이해하면 쉽다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 일반고객&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹 서비스를 사용하는 고객이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[오픈뱅킹 API 종류(이체성 거래 위주)]&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgHSWe/btrQ1fTyyc2/ISmjnHnM7JAJAXIhzbwreK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgHSWe/btrQ1fTyyc2/ISmjnHnM7JAJAXIhzbwreK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgHSWe/btrQ1fTyyc2/ISmjnHnM7JAJAXIhzbwreK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgHSWe%2FbtrQ1fTyyc2%2FISmjnHnM7JAJAXIhzbwreK%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;1226&quot; height=&quot;783&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹에서는 위와 같이 다양한 API를 제공한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oPu4h/btrQ5lyrL6r/0kLiQkTFITnKs0od6W3oh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oPu4h/btrQ5lyrL6r/0kLiQkTFITnKs0od6W3oh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oPu4h/btrQ5lyrL6r/0kLiQkTFITnKs0od6W3oh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoPu4h%2FbtrQ5lyrL6r%2F0kLiQkTFITnKs0od6W3oh1%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;1227&quot; height=&quot;413&quot; data-origin-width=&quot;1227&quot; data-origin-height=&quot;413&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;1235&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5429p/btrQ0lfRiXI/WSMUlBCQy97WB9P1qGoaL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5429p/btrQ0lfRiXI/WSMUlBCQy97WB9P1qGoaL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5429p/btrQ0lfRiXI/WSMUlBCQy97WB9P1qGoaL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5429p%2FbtrQ0lfRiXI%2FWSMUlBCQy97WB9P1qGoaL1%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;1235&quot; height=&quot;400&quot; data-origin-width=&quot;1235&quot; data-origin-height=&quot;400&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;1223&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsiu4W%2FbtrQZW8rzfM%2FBRDH5xiz7hl8UYcjv5PQ7K%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;1223&quot; height=&quot;593&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;593&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;1228&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhtqbb%2FbtrQZXlZWBX%2F0L3GM8yEnll9fwJUmG4wDk%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;1228&quot; height=&quot;599&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오픈뱅킹에는 다양한 API 서비스 중 4개의 다이어그램을 가져와봤는데 &lt;b&gt;출금이체, 입금이체 API를 제외하고는 나머지는 모두 거래내역조회, 수취조회 API처럼 3개의 기관이 단순하게 일자로 요청/응답 받는 구조&lt;/b&gt;로 되어있다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이해하기도 쉬우므로 이 포스팅에서는 &lt;b&gt;조금 더 복잡한(?)&lt;/b&gt; &lt;b&gt;출금이체와 입금이체 API&lt;/b&gt; 에 대해 살펴보려한다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/siu4W/btrQZW8rzfM/BRDH5xiz7hl8UYcjv5PQ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsiu4W%2FbtrQZW8rzfM%2FBRDH5xiz7hl8UYcjv5PQ7K%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;1223&quot; height=&quot;593&quot; data-origin-width=&quot;1223&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;입금이체 API&lt;/b&gt;다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;입금이체 API는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;이용기관의 계좌에서 출금하여 수취인계좌로 실시간 입금하는 기능을 제공한다&lt;/b&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;중요한 키포인트는 출금되는 계좌가 이용기관이자 출금기관이 되고 수취 및 입금되는 &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;계좌를 가진 기관은 입금기관이라는 점&lt;/b&gt;이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;즉&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;오픈뱅킹 API 서비스를 일으키는 주체(이용기관)이 입금을 하는거면 입금이체API라고 이해&lt;/b&gt;하면 쉽다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 다이어그램에서는 작성되어있지 않지만 &lt;b&gt;모든 이체성 거래는 사전에 입금되는 은행에 대한 수취조회를 선행&lt;/b&gt;으로 하게된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 자체 은행이 없는 핀테크업체 같은 경우는 &lt;b&gt;주거래은행(ex. 시중은행)을 정하여 모계좌를 지급받고&lt;/b&gt; 이 계좌를 그림에서 써져있는거와 같이 &lt;b&gt;이용기관 지급계좌&lt;/b&gt;라로 보면 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhtqbb/btrQZXlZWBX/0L3GM8yEnll9fwJUmG4wDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbhtqbb%2FbtrQZXlZWBX%2F0L3GM8yEnll9fwJUmG4wDk%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;1228&quot; height=&quot;599&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;입금이체 API와 반대로 &lt;b&gt;출금이체 API&lt;/b&gt;는 &lt;b&gt;거래를 일으키는 주체(이용기관)가 타기관(출금기관)에 출금을 요청하여 입금기관(이용기관) 계좌에 입금&lt;/b&gt;을 하게 된다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;b&gt;출금기관은 당연히 이용기관과 같은 사용자 계좌여야하고 사용자 인증이 된 상태&lt;/b&gt;어야한다. ㅎㅎ 타인의 계좌에서 마음대로 출금을 할 수 있다면 큰일이 나니깐...;;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이해하기 쉽게 예를들어 설명하면,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;고객이 네이버페이앱의 오픈뱅킹서비스를 사용해서 고객 본인의 다른 A은행계좌에 출금이체 API를 사용한다면 고객의 A은행 계좌에서 돈이 출금되어 네이버페이(이용기관)의 수납계좌로 돈이 입금되는 것이다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 좀 더 심화로 들어가서 '홍길동'이라는 사용자가 A핀테크업체 앱에서 오픈뱅킹서비스를 사용해서 B은행 자신의 계좌에서 출금하여 친구인 '막내'의 C은행 계좌에 이체를 하려고 하면 어떤 과정으로 될까?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1615&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGRRP/btrQ5kzza3t/pQFIhkjUDNju9kqVRS9nU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGRRP/btrQ5kzza3t/pQFIhkjUDNju9kqVRS9nU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGRRP/btrQ5kzza3t/pQFIhkjUDNju9kqVRS9nU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGRRP%2FbtrQ5kzza3t%2FpQFIhkjUDNju9kqVRS9nU1%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;1615&quot; height=&quot;826&quot; data-origin-width=&quot;1615&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것에 대한 과정을 스케치북을 사용해서 간단하게 그려봤다. ㅎㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사전단계로는 먼저 사용자가 자신의 타행계좌가 오픈뱅킹 서비스의 조회 및 출금동의&lt;/b&gt;가 되어있어야 한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 &lt;b&gt;이체단계에서는 입금될 계좌에 대한 수취조회가 먼저 이루어지고 출금이체와 입금이체 API 가 함께 사용&lt;/b&gt;된다는 점을 보는것이 중요하다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 과정에 대해 이해했으면 거의 다 이해했다고 보면 될 것 같다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;추가로 무응답과 같은 예외사항 발생시 어떻게 처리하는지는 생략하도록 한다. (대외비인걸로 알아서..?)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;010&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; 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;b&gt;[금결원 공식 사이트 참고]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.openbanking.or.kr/apt/content/openplatform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.openbanking.or.kr/apt/content/openplatform&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1668321476245&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;www.openbanking.or.kr&quot; data-og-source-url=&quot;https://www.openbanking.or.kr/apt/content/openplatform&quot; data-og-url=&quot;https://www.openbanking.or.kr/apt/content/openplatform&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.openbanking.or.kr/apt/content/openplatform&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.openbanking.or.kr/apt/content/openplatform&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;오픈뱅킹&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.openbanking.or.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&quot;&gt;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1668321617387&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;www.openbanking.or.kr&quot; data-og-source-url=&quot;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&quot; data-og-url=&quot;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.openbanking.or.kr/apt/content/openapi?location=openApi1&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;오픈뱅킹&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.openbanking.or.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>금융</category>
      <category>oepnbanking api 설명</category>
      <category>오픈뱅킹 API 서비스 개념</category>
      <category>오픈뱅킹 개념</category>
      <category>오픈뱅킹 금융상식</category>
      <category>오픈뱅킹 서비스 종류</category>
      <category>오픈뱅킹 설명</category>
      <category>오픈뱅킹 참가기관 이용기관</category>
      <category>오픈뱅킹 출금이체 입금이체</category>
      <category>오픈뱅킹망</category>
      <category>출금이체 입금이체 개념</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/734</guid>
      <comments>https://youngest-programming.tistory.com/734#entry734comment</comments>
      <pubDate>Sun, 13 Nov 2022 16:52:41 +0900</pubDate>
    </item>
    <item>
      <title>안드로이드 Flow 학습 및 예제 -flow, collect, buffer, collectLast, StateFlow, SharedFlow, map, filter-</title>
      <link>https://youngest-programming.tistory.com/731</link>
      <description>&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;1092&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CMTyR/btrQe1AL9V3/U7AqdigX9V9WM9psJ5Q7pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CMTyR/btrQe1AL9V3/U7AqdigX9V9WM9psJ5Q7pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CMTyR/btrQe1AL9V3/U7AqdigX9V9WM9psJ5Q7pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCMTyR%2FbtrQe1AL9V3%2FU7AqdigX9V9WM9psJ5Q7pk%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;1092&quot; height=&quot;922&quot; data-origin-width=&quot;1092&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/android-architecture-componentsmvvm-with-dagger-retrofit/learn/lecture/31674208#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.udemy.com/course/android-architecture-componentsmvvm-with-dagger-retrofit/learn/lecture/31674208#overview&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 들었던 Udemy 안드로이드 강의를 최근에 들어가보니&lt;b&gt; Compose 와 Flow + 코루틴 강의&lt;/b&gt;가 추가되었다 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꾸준히 버전업데이트도 하고 새로운 강의를 만들어주셔서 안드로이드 Jetpack 및 아키텍처 강의로 베스트셀러인 이유가 있는거 같다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추천추천~&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강의는 매우 짧게 예제위주로 구성되어있어서 간단하게 기록용 포스팅이다. (거의 개인적인 사견이 많이 들어감... 간단한 맛보기 공부라 부족한점 이해 바랍니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소 비동기 코드(통신)에 주로 사용하는 &lt;b&gt;리엑티브 프로그래밍&lt;/b&gt; 언어로 &lt;b&gt;RxJava&lt;/b&gt;를 사용해왔는데 요즘은 구글에서 만든 코&lt;b&gt;루틴과 함께 Flow API&lt;/b&gt;가 대체되어가고 있어서 이번 기회에 강의로 Flow 를 맛만(?) 보아봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개념은 같은 리엑티브 프로그래밍인만큼 RxJava와 비슷하고 코드가 간결하고 좀 더 가볍(쉽다)다는 장점이 있는 것 같다.&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://developer.android.com/kotlin/flow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.android.com/kotlin/flow&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667375379291&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;Android의 Kotlin 흐름 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;Android의 Kotlin 흐름 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 코루틴에서 흐름은 단일 값만 반환하는 정지 함수와 달리 여러 값을 순차적으로 내보낼 &quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/kotlin/flow&quot; data-og-url=&quot;https://developer.android.com/kotlin/flow?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eYJL4/hyQqXErPuR/cd52ScI0P5AhCCSc3kd6Xk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/bgX3R7/hyQqQFkWpp/d6JzMYUPP1kQJuFymYfJAK/img.png?width=1560&amp;amp;height=506&amp;amp;face=0_0_1560_506&quot;&gt;&lt;a href=&quot;https://developer.android.com/kotlin/flow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/kotlin/flow&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eYJL4/hyQqXErPuR/cd52ScI0P5AhCCSc3kd6Xk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676,https://scrap.kakaocdn.net/dn/bgX3R7/hyQqQFkWpp/d6JzMYUPP1kQJuFymYfJAK/img.png?width=1560&amp;amp;height=506&amp;amp;face=0_0_1560_506');&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;Android의 Kotlin 흐름 &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Android의 Kotlin 흐름 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 코루틴에서 흐름은 단일 값만 반환하는 정지 함수와 달리 여러 값을 순차적으로 내보낼&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스팅에 앞서 코루틴과 RxJava가 비슷하면서 용어가 조금 달라서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소비자(Cousumer) == 구독자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collect == 구독&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등 좀 혼용해서 용어를 사용하는 점 참고바랍니다. ㅎㅎ&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코루틴도 RxJava처럼 &lt;b&gt;데이터를 생성하는 생성자(Producer)와 생성자로부터 데이터를 전달받아 처리하는 소비자(Consumer)&lt;/b&gt;로 나뉜다.&lt;/p&gt;
&lt;pre id=&quot;code_1667370005218&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
CoroutineScope(Dispatchers.Main).launch{
	myFlow.collect{
    	Log.i(&quot;MyTAG&quot;, &quot;Current Value -&amp;gt;  $it&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 flow 빌더함수를 통해 생성자가 &lt;b&gt;1초 간격으로 1~10까지 Int형 데이터흐름을 생성&lt;/b&gt;하게 되고 소비자는 메인 스레드에서 앞서 정의한 생성자에서 방출(emit)하는 데이터흐름을&lt;b&gt; collect를 통해 소비&lt;/b&gt;할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 &lt;b&gt;flow 블록을 사용한 Flow&lt;/b&gt;는 누군가 collect를 하기 전까지는 데이터를 생성하지 않는 &lt;b&gt;Cold Stream&lt;/b&gt;이다. 이부분은 이후 StateFlow를 볼때 한번더 언급할 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667372586691&quot; class=&quot;pgsql&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	Log.i(&quot;MyTAG&quot;, &quot;Emit Value -&amp;gt;  $it&quot;)
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
viewModelScope.launch{
	myFlow.collect{
    	Log.i(&quot;MyTAG&quot;, &quot;Current Value -&amp;gt;  $it&quot;)
    }
}

// 결과
Emit Value -&amp;gt; 1
Current Value -&amp;gt; 1
Emit Value -&amp;gt; 2
Current Value -&amp;gt; 2
Emit Value -&amp;gt; 3
Current Value -&amp;gt; 3
Emit Value -&amp;gt; 4
Current Value -&amp;gt; 4
.
.
.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flow 블록을 통한 Flow는 collect로 데이터를 소비하기 시작하면 생성자에서 데이터를 생성 및 방출하게 되고 결과는 위와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667372592986&quot; class=&quot;pgsql&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	Log.i(&quot;MyTAG&quot;, &quot;Emit Value -&amp;gt;  $it&quot;)
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
viewModelScope.launch{
	myFlow.collect{
    	// delay 추가
    	delay(2000L)
    	Log.i(&quot;MyTAG&quot;, &quot;Current Value -&amp;gt;  $it&quot;)
    }
}

// 결과
Emit Value -&amp;gt; 1
Current Value -&amp;gt; 1
Emit Value -&amp;gt; 2
Current Value -&amp;gt; 2
Emit Value -&amp;gt; 3
Current Value -&amp;gt; 3
Emit Value -&amp;gt; 4
Current Value -&amp;gt; 4
.
.
.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소비자쪽에 &lt;b&gt;delay(2000L) 코드를 추가&lt;/b&gt;하여 소비속도가 생성속도보다 느려졌지만 &lt;b&gt;결과는 같다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면 &lt;b&gt;Flow는 이전에 방출한 데이터를 소비자가 소비하기전에 데이터를 방출하지 않기 때문&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 생성자가 소비자가 이전에 방출한 데이터를 처리할때까지 기다렸다 하나씩 전달하는 메커니즘은 생성자가 소비자에게 데이터를 다 전달해주지 못하고 끝나거나 과부하가 날수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 위해 RxJava와 비슷하게 방출대기중인 데이터들을 어떻게 다룰지 정하는 &lt;b&gt;배압전략(backpressure)&lt;/b&gt;을 Flow에서도 제공한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중&lt;b&gt; buffer 와 collectLast&lt;/b&gt; 기능에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배압에 관련된 포스팅은 다음 글에서 재미있게 잘 설명하고 있는거 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://doublem.org/stream-backpressure-basic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://doublem.org/stream-backpressure-basic/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667371539584&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;Stream Backpressure의 이해 | Doublem.org&quot; data-og-description=&quot;Stream Backpressure의 이해&quot; data-og-host=&quot;doublem.org&quot; data-og-source-url=&quot;https://doublem.org/stream-backpressure-basic/&quot; data-og-url=&quot;https://doublem.org/stream-backpressure-basic/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/215gE/hyQqWrV2to/XFU6IMIlKgxD6KbDpYy2Rk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot;&gt;&lt;a href=&quot;https://doublem.org/stream-backpressure-basic/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://doublem.org/stream-backpressure-basic/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/215gE/hyQqWrV2to/XFU6IMIlKgxD6KbDpYy2Rk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720');&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;Stream Backpressure의 이해 | Doublem.org&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Stream Backpressure의 이해&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;doublem.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;buffer()&lt;/b&gt; 부터 보면 다음과 같다.&lt;/p&gt;
&lt;pre id=&quot;code_1667372823293&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	Log.i(&quot;MyTAG&quot;, &quot;Produced -&amp;gt;  $it&quot;)
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
viewModelScope.launch{
	myFlow.buffer().collect{
    	// delay 추가
    	delay(2000L)
    	Log.i(&quot;MyTAG&quot;, &quot;Consumed -&amp;gt;  $it&quot;)
    }
}

// 결과
Produced -&amp;gt; 1
Produced -&amp;gt; 2
Consumed -&amp;gt; 1
Produced -&amp;gt; 3
Produced -&amp;gt; 4
Consumed -&amp;gt; 2
Produced -&amp;gt; 5
Produced -&amp;gt; 6
Consumed -&amp;gt; 3
Produced -&amp;gt; 7
Produced -&amp;gt; 8
Consumed -&amp;gt; 4
Produced -&amp;gt; 9
Produced -&amp;gt; 10
Consumed -&amp;gt; 5
Consumed -&amp;gt; 6
Consumed -&amp;gt; 7
Consumed -&amp;gt; 8
Consumed -&amp;gt; 9
Consumed -&amp;gt; 10&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자가 소비자의 데이터 처리에 신경쓰지 않고 블로킹없이 데이터를 생성하는 것을 볼 수 있다. 또한 소비자는 나중에라도 전달받은 데이터를 순차적으로 모두 소비하는 것도 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 가장 최근에 생성한 데이터만 소비하고자하면 어떻게 하면 좋을까? 그럴때는 collect 대신&amp;nbsp;&lt;b&gt;collectLast&lt;/b&gt;를 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1667373308428&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	Log.i(&quot;MyTAG&quot;, &quot;Produced -&amp;gt;  $it&quot;)
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
viewModelScope.launch{
	myFlow.collectLast{
    	// delay 추가
    	delay(2000L)
    	Log.i(&quot;MyTAG&quot;, &quot;Consumed -&amp;gt;  $it&quot;)
    }
}

// 결과
Produced -&amp;gt; 1
Produced -&amp;gt; 2
Produced -&amp;gt; 3
Produced -&amp;gt; 4
Produced -&amp;gt; 5
Produced -&amp;gt; 6
Produced -&amp;gt; 7
Produced -&amp;gt; 8
Produced -&amp;gt; 9
Produced -&amp;gt; 10
Consumed -&amp;gt; 10&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 10 데이터만 소비하는 결과를 볼 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;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;계속 같은말을 반복하지만 ㅎㅎ RxJava처럼 Flow 에서도 역시나 &lt;b&gt;필터 함수기능&lt;/b&gt;들을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중 가장 대표적인 &lt;b&gt;map과 filter&lt;/b&gt;를 사용해봤다.&lt;/p&gt;
&lt;pre id=&quot;code_1667373509750&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 생성자 (Producer)
val myFlow = flow&amp;lt;Int&amp;gt; {
	for (i in 1.100){
    	Log.i(&quot;MyTAG&quot;, &quot;Produced -&amp;gt;  $it&quot;)
    	emit(i)
        delay(1000L)
    }
}

// 소비자 (Consumer)
viewModelScope.launch{
	myFlow.filter{  // 말 그대로 조건에 맞는 필터링한 데이터만 통과됨
    	count -&amp;gt; count % 3 = 3
    }
    .map { // 데이터를 가공함
    	it -&amp;gt; (&quot;MAP &quot; + it)
    }
    .collect{
    	Log.i(&quot;MyTAG&quot;, &quot;Consumed -&amp;gt;  $it&quot;)
    }
}

// 결과
Produced -&amp;gt; 1
Produced -&amp;gt; 2
Produced -&amp;gt; 3
Consumed -&amp;gt; MAP 3
Produced -&amp;gt; 4
Produced -&amp;gt; 5
Produced -&amp;gt; 6
Consumed -&amp;gt; MAP 6
Produced -&amp;gt; 7
Produced -&amp;gt; 8
Produced -&amp;gt; 9
Consumed -&amp;gt; MAP 9
Produced -&amp;gt; 10&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;filter&lt;/b&gt; 로 데이터가 조건에 맞는거만 필터링되고 &lt;b&gt;map&lt;/b&gt;으로 데이터를 가공할 수 있다는 것을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;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;RxJava와 마찬가지로 Flow에도&lt;b&gt; Cold Hot 개념&lt;/b&gt;이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지한 &lt;b&gt;flow 빌더함수(블록)을 활용한 Flow&lt;/b&gt;는 데이터를 소비자가 collect (RxJava로 치면 구독) 하기전까지 데이터를 생성하지 않는&lt;b&gt; Cold Stream&lt;/b&gt;이다. 또한 구독자(소비자)가 오로지 1명 뿐이라는 특징이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;StateFlow 와 SharedFlow&lt;/b&gt; 는 소비자의 collect(구독)과 상관없이 늘 동작하는&amp;nbsp;&lt;b&gt;Hot Stream&lt;/b&gt;이고 한 명 이상의 구독자(소비자)를 가질 수 있다.&amp;nbsp; 이 둘에 대한 특징은 밑의 공식문서를 참고하자!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667435502660&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;StateFlow 및 SharedFlow &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;StateFlow 및 SharedFlow 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. StateFlow와 SharedFlow는 흐름에서 최적으로 상태 업데이트를 내보내고 여러 소비자에게 값을 &quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow&quot; data-og-url=&quot;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cdTrpA/hyQqXd6BvO/ychdPLsT2Pc0a5zj91jwZk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676&quot;&gt;&lt;a href=&quot;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/kotlin/flow/stateflow-and-sharedflow&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cdTrpA/hyQqXd6BvO/ychdPLsT2Pc0a5zj91jwZk/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676');&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;StateFlow 및 SharedFlow &amp;nbsp;|&amp;nbsp; Android 개발자 &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;StateFlow 및 SharedFlow 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. StateFlow와 SharedFlow는 흐름에서 최적으로 상태 업데이트를 내보내고 여러 소비자에게 값을&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;StateFlow&lt;/b&gt; 부터 살펴보면,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 사용하던&lt;b&gt; LiveData&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;와 비슷하고 비슷하게 사용하면 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 비슷하지만 몇가지 차이점도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;LiveData는 초깃값(초기상태)을 가지고 있지 않으므로&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;null check가 필요&lt;/b&gt;하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;StateFlow는 초깃값을 필요(필수)하므로&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;null check가 필요하지 않다.&lt;/b&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;b&gt;LiveData는 View가 Stopped 상태로 갈때 자동으로 구독자(소비자)를 해제해준다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;StateFlow는 기본으로 LiveData처럼 동작하지 않으므로 lifecycleScope 에서 이것을 해줘야한다&amp;nbsp;&lt;/b&gt;&lt;b&gt;.&lt;/b&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;b&gt;LiveData는 안드로이드 프레임워크에 종속되서 안드로이드개발에서만 사용할 수 있다&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;StateFlow는 코틀린 언어 종속으로 코틀린 멀티플랫폼 프로젝트에서 다양하게 사용이 가능하다 &lt;/b&gt;&lt;b&gt;.&lt;/b&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667394447769&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivityViewModel(startingTotal : Int) : ViewModel() {
//    private var total = MutableLiveData&amp;lt;Int&amp;gt;()
//    val totalData : LiveData&amp;lt;Int&amp;gt;
//        get() = total

      private val _flowTotal = MutableStateFlow&amp;lt;Int&amp;gt;(0)
      val flowTotal : StateFlow&amp;lt;Int&amp;gt; = _flowTotal
      //get() = _flowTotal



    init {
       // total.value = startingTotal
        _flowTotal.value = startingTotal
    }

    fun setTotal(input:Int){
       // total.value =(total.value)?.plus(input)
        _flowTotal.value = (_flowTotal.value).plus(input)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ViewModel 에서 변수를 &lt;b&gt;StateFlow&lt;/b&gt; 로 정의하고 Add 버튼을 클릭하면 StateFlow 값을 플러스 하는 함수로 되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 초깃값 0을 가지고 있는 것을 확인 할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1667394262616&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var viewModel: MainActivityViewModel
    private lateinit var viewModelFactory: MainActivityViewModelFactory
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        viewModelFactory = MainActivityViewModelFactory(125)
        viewModel = ViewModelProvider(this,viewModelFactory).get(MainActivityViewModel::class.java)

//        viewModel.totalData.observe(this, Observer {
//            binding.resultTextView.text = it.toString()
//        })

        lifecycleScope.launchWhenCreated {
             viewModel.flowTotal.collect{
                 binding.resultTextView.text = it.toString()
             }
        }

        binding.insertButton.setOnClickListener {
            viewModel.setTotal(binding.inputEditText.text.toString().toInt())
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액티비티에서는&lt;b&gt; launchWhenCreate {}&lt;/b&gt; 를 통해 뷰 라이프사이클이 Create일때 StateFlow 를 collect 해주었고 값이 바뀔때마다 계속 소비하고 최신값으로 text를 세팅해주게 된다.&lt;/p&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;SharedFlow&lt;/b&gt;는 StateFlow와 다르게 &lt;b&gt;초깃값(초기상태)를 필요로 하지 않고, 이러한 상태에서 이벤트가 발생했을때 데이터를 emit 할때 사용&lt;/b&gt;하면 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 밑 예제도 버튼을 클릭하면 토스트메시지를 띄워주는 형식으로 사용하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로, 좀 더 깊은 구조를 알고 싶으면 다음 포스팅을 참고하면 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1667436326173&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;StateFlow 와 SharedFlow&quot; data-og-description=&quot;코루틴 공식 가이드 읽기 Part 9 &amp;mdash; Dive1&quot; data-og-host=&quot;myungpyo.medium.com&quot; data-og-source-url=&quot;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&quot; data-og-url=&quot;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sd86f/hyQr6mZrdA/CqTKSjF51xvgTO0ZKCjYBk/img.jpg?width=1200&amp;amp;height=949&amp;amp;face=0_0_1200_949&quot;&gt;&lt;a href=&quot;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://myungpyo.medium.com/stateflow-%EC%99%80-sharedflow-32fdb49f9a32&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sd86f/hyQr6mZrdA/CqTKSjF51xvgTO0ZKCjYBk/img.jpg?width=1200&amp;amp;height=949&amp;amp;face=0_0_1200_949');&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;StateFlow 와 SharedFlow&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;코루틴 공식 가이드 읽기 Part 9 &amp;mdash; Dive1&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;myungpyo.medium.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰모델 코드다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SharedFlow 는 초깃값을 안가지고 있고 setTtotal() 버튼을 누를떄때 발생하는 이벤트 함수에 값을 emit 하는 코드를 추가했다.&lt;/p&gt;
&lt;pre id=&quot;code_1667436432273&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivityViewModel(startingTotal : Int) : ViewModel() {

      private val _flowTotal = MutableStateFlow&amp;lt;Int&amp;gt;(0)
      val flowTotal : StateFlow&amp;lt;Int&amp;gt; = _flowTotal

	  //SharedFlow는 기본값을 안가진 것을 볼 수 있음
      private val _message = MutableSharedFlow&amp;lt;String&amp;gt;()
      val message : SharedFlow&amp;lt;Int&amp;gt; = _message


    init {
       // total.value = startingTotal
        _flowTotal.value = startingTotal
    }

    fun setTotal(input:Int){
       // total.value =(total.value)?.plus(input)
        _flowTotal.value = (_flowTotal.value).plus(input)
        viewmodelScope.launch{
        	_message.emit(&quot;setTotal Success!!!&quot;)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;액티비티 코드이다. 뷰모델의 SharedFlow 흐름을 구독 감지하여 토스트 메시지를 띄워준다.&lt;/p&gt;
&lt;pre id=&quot;code_1667437575426&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private lateinit var viewModel: MainActivityViewModel
    private lateinit var viewModelFactory: MainActivityViewModelFactory
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        viewModelFactory = MainActivityViewModelFactory(125)
        viewModel = ViewModelProvider(this,viewModelFactory).get(MainActivityViewModel::class.java)

//        viewModel.totalData.observe(this, Observer {
//            binding.resultTextView.text = it.toString()
//        })

        lifecycleScope.launchWhenCreated {
             viewModel.flowTotal.collect{
                 binding.resultTextView.text = it.toString()
             }
        }

        lifecycleScope.launchWhenCreated {
             viewModel.message.collect{
                 Toast.makeText(this, it, Toast.LENGTH_LONG).show()
             }
             
        }

        binding.insertButton.setOnClickListener {
            viewModel.setTotal(binding.inputEditText.text.toString().toInt())
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 밖에 공식문서를 보니 강의에서 다루지 않는 Cold Stream을 Hot Stream으로 바꿔주는 &lt;b&gt;shareIn&lt;/b&gt; 과 같은 것도 있으니 나중에 사용하게되면 추가로 보면 좋을 것 같다.&lt;/p&gt;
&lt;h2 id=&quot;sharein&quot; data-text=&quot;shareIn을 사용하여 콜드 흐름을 핫 흐름으로 만들기&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다!!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android flow</category>
      <category>android flow api</category>
      <category>android flow buffer</category>
      <category>android flow collectLast</category>
      <category>android flow filllter</category>
      <category>막내의막무가내 안드로이드</category>
      <category>안드로이드 flow producer comsumer</category>
      <category>안드로이드 flow 기본</category>
      <category>안드로이드 플로우 기본</category>
      <category>안드로이드 플로우 생성자 소비자</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/731</guid>
      <comments>https://youngest-programming.tistory.com/731#entry731comment</comments>
      <pubDate>Wed, 2 Nov 2022 16:31:09 +0900</pubDate>
    </item>
    <item>
      <title>[Udemy] The Complete 2021 Flutter Development Bootcamp with Dart 강의 수료</title>
      <link>https://youngest-programming.tistory.com/718</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;&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;1302&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4gd1U/btrHsCRrEHG/4MlZuYZgaSxjGCo6K1FbA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4gd1U/btrHsCRrEHG/4MlZuYZgaSxjGCo6K1FbA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4gd1U/btrHsCRrEHG/4MlZuYZgaSxjGCo6K1FbA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4gd1U%2FbtrHsCRrEHG%2F4MlZuYZgaSxjGCo6K1FbA0%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;1302&quot; height=&quot;791&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;791&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;a href=&quot;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1658043683345&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;video_lecture&quot; data-og-title=&quot;Udemy 강의 수료 인증서&quot; data-og-description=&quot;내 &amp;quot;The Complete 2021 Flutter Development Bootcamp with Dart&amp;quot; 강의 수료 인증서&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&quot; data-og-url=&quot;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfTDZk/hyO7uwF8XC/nzY9kk6L3kFAxYCuQoMQIk/img.jpg?width=1600&amp;amp;height=1190&amp;amp;face=0_0_1600_1190,https://scrap.kakaocdn.net/dn/TrpZG/hyO7HbGTzq/3K1Ffira9pJka4isXywTUk/img.jpg?width=1600&amp;amp;height=1190&amp;amp;face=0_0_1600_1190&quot;&gt;&lt;a href=&quot;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.udemy.com/certificate/UC-8475640a-8f7d-4705-98f0-dbfe27a9f67b/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfTDZk/hyO7uwF8XC/nzY9kk6L3kFAxYCuQoMQIk/img.jpg?width=1600&amp;amp;height=1190&amp;amp;face=0_0_1600_1190,https://scrap.kakaocdn.net/dn/TrpZG/hyO7HbGTzq/3K1Ffira9pJka4isXywTUk/img.jpg?width=1600&amp;amp;height=1190&amp;amp;face=0_0_1600_1190');&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;Udemy 강의 수료 인증서&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;내 &quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; 강의 수료 인증서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유데미에서 수강신청했던 안젤라 선생님의 플러터 강의를 수료했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러터와 다트의 기본기부터 파이어베이스와 Provider 아키텍처 패턴도 배울 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글의 공식 플러터,Dart 강의이기도 해서 퀄리티가 좋고 입문자들에게 추천하는 강의이다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 아쉬운점은 강의와 프로젝트가 플러터 1버전대인데 현재는 3버전대라 에러가 터지거나 뒷부분에서는 오류로 실습 진행이 끝까지 안된 경우도 있었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브 샘플 프로젝트를 최신버전으로 빨리 업데이트 해줬으면 좋겠다 :)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다!!!&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>dart 강의 추천</category>
      <category>flutter dart 강의 추천</category>
      <category>Flutter 강의 추천</category>
      <category>udemy dart 강의 추천</category>
      <category>udemy flutter 강의 추천</category>
      <category>udmey The Complete 2021 Flutter Development Bootcamp with Dart 강의 추천</category>
      <category>유데미 The Complete 2021 Flutter Development Bootcamp with Dart 강의 추천</category>
      <category>유데미 안젤라 플러터 강의 추천</category>
      <category>유데미 플러터 강의 추천</category>
      <category>플러터 강의 추천</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/718</guid>
      <comments>https://youngest-programming.tistory.com/718#entry718comment</comments>
      <pubDate>Sun, 17 Jul 2022 16:45:23 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 펀드투자권유자문인력 금융자격증 취득</title>
      <link>https://youngest-programming.tistory.com/717</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;&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;581&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rdr5a/btrHfRPJKDe/uPXXktHvMwnGlHkOxosEFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rdr5a/btrHfRPJKDe/uPXXktHvMwnGlHkOxosEFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rdr5a/btrHfRPJKDe/uPXXktHvMwnGlHkOxosEFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRdr5a%2FbtrHfRPJKDe%2FuPXXktHvMwnGlHkOxosEFk%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;581&quot; height=&quot;580&quot; data-origin-width=&quot;581&quot; data-origin-height=&quot;580&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;356&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cO3hqv/btrHkpcCC41/vhKBof8SNjPDMZVa17ZQu0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cO3hqv/btrHkpcCC41/vhKBof8SNjPDMZVa17ZQu0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cO3hqv/btrHkpcCC41/vhKBof8SNjPDMZVa17ZQu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcO3hqv%2FbtrHkpcCC41%2FvhKBof8SNjPDMZVa17ZQu0%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;356&quot; height=&quot;281&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;펀드투자권유자문인력 자격증을 이번에 취득하였다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;012&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/012.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/012.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;기출모의고사랑 문제도 다르고 더 어려웠어서 떨어질거같았는데 다행히 80점으로 붙었다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다행이다 :)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간략히 시험을 정리하는 포스팅을 남겨보려고한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;금융에 문외한인데 2주 정도 공부하고 붙은거같다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(평일 2시간, 주말 4시간 이상 사용했다. 순공타임 ㄴㄴ..)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컷이 70점이라 1주 빡세게 하거나 2주정도 안전하게 공부하면 합격할거라 생각한다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rIKle/btrHkSMpOTO/Vu6Z4sXwIJvKq8P4mBErSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rIKle/btrHkSMpOTO/Vu6Z4sXwIJvKq8P4mBErSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rIKle/btrHkSMpOTO/Vu6Z4sXwIJvKq8P4mBErSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrIKle%2FbtrHkSMpOTO%2FVu6Z4sXwIJvKq8P4mBErSk%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;916&quot; height=&quot;408&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이패스 펀드투자권유자문인력 책으로 학습했는데 인강은 회사에서 제공해주는걸로 1단원 초반부분만 조금 듣다가 독학으로했다. (시간도 부족해서..)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;책은 핵심만 간략하게 잘정리되있고 문제정리도 잘되어있어 좋은책인거 같다고 느꼈다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막 전날에 딱 모의고사 3회차까지 다 풀고 다음날 시험을보러갔다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다!!!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>금융</category>
      <category>펀드투자권유자문인력 금융자격증 후기</category>
      <category>펀드투자권유자문인력 취득</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/717</guid>
      <comments>https://youngest-programming.tistory.com/717#entry717comment</comments>
      <pubDate>Thu, 14 Jul 2022 20:16:05 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 플러터 빌드 버전 에러 Build failed due to use of deprecated Android v1 embedding.</title>
      <link>https://youngest-programming.tistory.com/716</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러터에서 실행을 누르니깐 다음과 같은 에러가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러메시지 그대로 현재 플러터가 안드로이드의 너무 오래된 버전인 v1 사용으로 인한 버전 충돌 문제였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1621&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DXzZy/btrGRjZQ3j2/neuauj7F1wgdDz1jd3rUF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DXzZy/btrGRjZQ3j2/neuauj7F1wgdDz1jd3rUF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DXzZy/btrGRjZQ3j2/neuauj7F1wgdDz1jd3rUF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDXzZy%2FbtrGRjZQ3j2%2Fneuauj7F1wgdDz1jd3rUF1%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;1621&quot; height=&quot;610&quot; data-origin-width=&quot;1621&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ &lt;br /&gt;Warning &lt;br /&gt;────────────────────────────────────────────────────────────────────────────── &lt;br /&gt;Your&amp;nbsp;Flutter&amp;nbsp;application&amp;nbsp;is&amp;nbsp;created&amp;nbsp;using&amp;nbsp;an&amp;nbsp;older&amp;nbsp;version&amp;nbsp;of&amp;nbsp;the&amp;nbsp;Android &lt;br /&gt;embedding.&amp;nbsp;It&amp;nbsp;is&amp;nbsp;being&amp;nbsp;deprecated&amp;nbsp;in&amp;nbsp;favor&amp;nbsp;of&amp;nbsp;Android&amp;nbsp;embedding&amp;nbsp;v2.&amp;nbsp;Follow&amp;nbsp;the &lt;br /&gt;steps&amp;nbsp;at &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://flutter.dev/go/android-project-migration&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://flutter.dev/go/android-project-migration&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;to&amp;nbsp;migrate&amp;nbsp;your&amp;nbsp;project.&amp;nbsp;You&amp;nbsp;may&amp;nbsp;also&amp;nbsp;pass&amp;nbsp;the&amp;nbsp;--ignore-deprecation&amp;nbsp;flag&amp;nbsp;to &lt;br /&gt;ignore&amp;nbsp;this&amp;nbsp;check&amp;nbsp;and&amp;nbsp;continue&amp;nbsp;with&amp;nbsp;the&amp;nbsp;deprecated&amp;nbsp;v1&amp;nbsp;embedding.&amp;nbsp;However, &lt;br /&gt;the&amp;nbsp;v1&amp;nbsp;Android&amp;nbsp;embedding&amp;nbsp;will&amp;nbsp;be&amp;nbsp;removed&amp;nbsp;in&amp;nbsp;future&amp;nbsp;versions&amp;nbsp;of&amp;nbsp;Flutter. &lt;br /&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ &lt;br /&gt;The&amp;nbsp;detected&amp;nbsp;reason&amp;nbsp;was: &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;D:\Git\udemy-flutter-practice\flash-chat-flutter\android\app\src\main\AndroidManifest.xml&amp;nbsp;uses&amp;nbsp;`android:name=&quot;io.flutter.app.FlutterApplication&quot;` &lt;br /&gt;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ &lt;br /&gt;&lt;br /&gt;Build&amp;nbsp;failed&amp;nbsp;due&amp;nbsp;to&amp;nbsp;use&amp;nbsp;of&amp;nbsp;deprecated&amp;nbsp;Android&amp;nbsp;v1&amp;nbsp;embedding.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[해결방법]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1657426237703&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 build failed due to use of deprecated Android v1 embedding&quot; data-og-description=&quot;I have an error in the flutter project that I cloned from GitHub. I tried this method but it didn't work &amp;lt;application android:name=&amp;quot;io.flutter.app.FlutterApplication&amp;quot; To: &amp;lt;&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&quot; data-og-url=&quot;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/N7H4v/hyO3sZqbnN/Kaz8EGJCKgLwajSKNmBb00/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/bmHAye/hyO3hXTfEw/Ls64fGbhNIf4mVcGS8Y3PK/img.png?width=1970&amp;amp;height=1080&amp;amp;face=0_0_1970_1080,https://scrap.kakaocdn.net/dn/bxvWfp/hyO3pn5KLZ/WkjqhtwXVkPiXP8j2nl0P1/img.png?width=1932&amp;amp;height=1080&amp;amp;face=0_0_1932_1080&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/71492645/flutter-build-failed-due-to-use-of-deprecated-android-v1-embedding&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/N7H4v/hyO3sZqbnN/Kaz8EGJCKgLwajSKNmBb00/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/bmHAye/hyO3hXTfEw/Ls64fGbhNIf4mVcGS8Y3PK/img.png?width=1970&amp;amp;height=1080&amp;amp;face=0_0_1970_1080,https://scrap.kakaocdn.net/dn/bxvWfp/hyO3pn5KLZ/WkjqhtwXVkPiXP8j2nl0P1/img.png?width=1932&amp;amp;height=1080&amp;amp;face=0_0_1932_1080');&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 build failed due to use of deprecated Android v1 embedding&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I have an error in the flutter project that I cloned from GitHub. I tried this method but it didn't work &amp;lt;application android:name=&quot;io.flutter.app.FlutterApplication&quot; To: &amp;lt;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 변경전&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;&amp;lt;application
    android:name=&quot;io.flutter.app.FlutterApplication&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;- 변경후&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;android:name 수정 및 meta-data 추가&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;application
    android:name=&quot;${applicationName}&quot;
    android:label=&quot;flash_chat&quot;
    android:icon=&quot;@mipmap/ic_launcher&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;haskell&quot;&gt;&lt;code&gt;&amp;lt;meta-data
    android:name=&quot;flutterEmbedding&quot;
    android:value=&quot;2&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[변경 코드]&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;dust&quot;&gt;&lt;code&gt;&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    package=&quot;co.appbrewery.flash_chat&quot;&amp;gt;

    &amp;lt;!-- io.flutter.app.FlutterApplication is an android.app.Application that
         calls FlutterMain.startInitialization(this); in its onCreate method.
         In most cases you can leave this as-is, but you if you want to provide
         additional functionality it is fine to subclass or reimplement
         FlutterApplication and put your custom class here. --&amp;gt;
    &amp;lt;application
        android:name=&quot;${applicationName}&quot;
        android:label=&quot;flash_chat&quot;
        android:icon=&quot;@mipmap/ic_launcher&quot;&amp;gt;
        &amp;lt;activity
            android:name=&quot;.MainActivity&quot;
            android:launchMode=&quot;singleTop&quot;
            android:theme=&quot;@style/LaunchTheme&quot;
            android:configChanges=&quot;orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode&quot;
            android:hardwareAccelerated=&quot;true&quot;
            android:windowSoftInputMode=&quot;adjustResize&quot;&amp;gt;
            &amp;lt;!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). --&amp;gt;
            &amp;lt;meta-data
                android:name=&quot;flutterEmbedding&quot;
                android:value=&quot;2&quot; /&amp;gt;

            &amp;lt;meta-data
                android:name=&quot;io.flutter.app.android.SplashScreenUntilFirstFrame&quot;
                android:value=&quot;true&quot; /&amp;gt;
            &amp;lt;intent-filter&amp;gt;
                &amp;lt;action android:name=&quot;android.intent.action.MAIN&quot;/&amp;gt;
                &amp;lt;category android:name=&quot;android.intent.category.LAUNCHER&quot;/&amp;gt;

            &amp;lt;/intent-filter&amp;gt;
        &amp;lt;/activity&amp;gt;
    &amp;lt;/application&amp;gt;
&amp;lt;/manifest&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter Build failed due to use of deprecated Android v1 embedding</category>
      <category>flutter Build failed due to use of deprecated Android v1 embedding error</category>
      <category>플러터 Build failed due to use of deprecated Android v1 embedding</category>
      <category>플러터 에러 Build failed due to use of deprecated Android v1 embedding</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/716</guid>
      <comments>https://youngest-programming.tistory.com/716#entry716comment</comments>
      <pubDate>Sun, 10 Jul 2022 14:08:27 +0900</pubDate>
    </item>
    <item>
      <title>[금융] 펀드투자권유자문인력 시험 1장 메모</title>
      <link>https://youngest-programming.tistory.com/712</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;직무윤리 및 투자자 분쟁예방&lt;br /&gt;&lt;br /&gt;위험과 거래비용&lt;br /&gt;-&amp;gt; 눈에 보이지 않는 위험비용까지 합해야함&lt;br /&gt;&lt;br /&gt;CCO(총괄책임자)는 대표이사 직속의 지위를 갖음&lt;br /&gt;&lt;br /&gt;이해상충방지의무&lt;br /&gt;-&amp;gt; 의무임&lt;br /&gt;준법감시인이나 뭔가의 승인이 있어도 거래가능 (X) - 거래가능이란말 있으면 아님&lt;br /&gt;&lt;br /&gt;칼뱅 이 한말 키워드&lt;br /&gt;-&amp;gt; 금욕적 생활윤리, 초기 자본주의, 소명&lt;br /&gt;&lt;br /&gt;기업의 사회적책임 관련 지수&lt;br /&gt;-&amp;gt; BITC, CR Index&lt;br /&gt;&lt;br /&gt;윤리경영 측정 지수&lt;br /&gt;-&amp;gt; CPI, KoBEX, FKI-BEX &lt;br /&gt;&lt;br /&gt;재투자권유 가능한 경우&lt;br /&gt;-&amp;gt; 1개월 후 OR 다른종류의 투자상품권유&lt;br /&gt;&lt;br /&gt;상품판매 이후 금융소비자 보호&lt;br /&gt;-&amp;gt; 해피콜 - 가입 후 7영업일 이내&lt;br /&gt;불완전판매 배상 - 가입 후 15일 이내 (영업일 X)&lt;br /&gt;판매 수수료 반환 - 가입 후 5영업일 이내&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;투자관련해서 합리적 근거가 있더라도 투자성과를 예측해서 권유하면안됨&lt;br /&gt;&lt;br /&gt;신임의무 두가지 근거&lt;br /&gt;-&amp;gt; 고객우선 원칙, 신의성실의 원칙&lt;br /&gt;&lt;br /&gt;KYC(Know - Your - Customer - Rule) 실행순서 &lt;br /&gt;-&amp;gt; 앞에 두개순서만 기억하면됨&lt;br /&gt;1. 투자권유원하는지 확인, 2. 일반투자자 여부 확인&lt;br /&gt;&lt;br /&gt;기업윤리와 직무윤리&lt;br /&gt;-&amp;gt; 기업윤리 &amp;gt; 직무윤리&lt;br /&gt;기업윤리 - 거시적, 포괄적, 모든구성원, 윤리강령형태&lt;br /&gt;직무윤리 - 미시적,개개인, 추상적, 임직원행동강령형태&lt;br /&gt;&lt;br /&gt;투자자 이해수준에 따라 투자권유 서렴ㅇ의 정도를 달리할 수 있음 (없다X)&lt;br /&gt;&lt;br /&gt;본인에 대한 윤리&lt;br /&gt;- 법규준수, 자기혁신, 품위유지, 공정성 및 독립성 유지, 사적이익 추구금지(문상제공은 몇경우 가능한데 다른 백화점상품권같은건 불가)&lt;br /&gt;&lt;br /&gt;특정정보가 불명화갛ㄴ 경우도 비밀 정보로 관리해야함 &lt;br /&gt;&lt;br /&gt;회사에 대한 선관주의의무 고용관계 끝나도 일정기간은 지속됨&lt;br /&gt;&lt;br /&gt;내부통제관 위반시 과태료 관련&lt;br /&gt;-&amp;gt; 준법감시인의 임면사실을 금융위원회에 보고하지 않은거는(보고관련) 1천만원 미만, &lt;br /&gt;겸직의무위반은 3천만원, 나머지는 1억원 이하&lt;br /&gt;&lt;br /&gt;금융투자업자에 대한 제제 가능&lt;br /&gt;-&amp;gt; 금융위원회 (금감원 X)&lt;br /&gt;&lt;br /&gt;일임매매, 임의매매 &lt;br /&gt;-&amp;gt; 손해배상책임에 있어 차이있음, 일임매매는 예외적으로 자본시장법에서 제한적허용됨&lt;br /&gt;&lt;br /&gt;내부통제위원회&lt;br /&gt;- 위원장은 대표이사, 매 반기별 1회이상 개최&lt;br /&gt;&lt;br /&gt;금융위원회 조치에 대한 불복&lt;br /&gt;-&amp;gt; 30일 이내 이의신청 가능, 금융위원회는 60일 이내에 이의신청에 대한 결정&lt;br /&gt;&lt;br /&gt;개인정보보호법은은 일반법이다.&lt;br /&gt;&lt;br /&gt;법정손해배상제도&lt;br /&gt;-&amp;gt; 개인정보 유출 피해자가 피해액 입증 못해도 300만원 이내 보상 (피해액의 3배)&lt;/p&gt;</description>
      <category>금융</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/712</guid>
      <comments>https://youngest-programming.tistory.com/712#entry712comment</comments>
      <pubDate>Sat, 18 Jun 2022 22:29:09 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 15 학습 (학습중인 포스팅입니다) (Flash Chat - Fluuter x Firebase Cloud Firestore)</title>
      <link>https://youngest-programming.tistory.com/706</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;&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;619&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U1ybZ/btrCKXs3x1n/SnLpv3hDsFAqoWUplGbnG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U1ybZ/btrCKXs3x1n/SnLpv3hDsFAqoWUplGbnG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U1ybZ/btrCKXs3x1n/SnLpv3hDsFAqoWUplGbnG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU1ybZ%2FbtrCKXs3x1n%2FSnLpv3hDsFAqoWUplGbnG1%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;619&quot; height=&quot;260&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;260&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/701&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653209915297&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 14 학습 (학습중인 포스팅입니다) (Boss Level Challenge 3 - Bitcoin Tricker)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/692 [Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W [이전학습] https://youngest-p..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/701&quot; data-og-url=&quot;https://youngest-programming.tistory.com/701&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Tw01O/hyOt9f3Uxn/xk79CPxtap8ohLkYVzMKJ0/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/y6e5P/hyOucDQfo6/NtjViivwnQmIpppZdEdKOk/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/dZXDU2/hyOugzuhSm/bO7AjLL2000MubHwZyhFFk/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/701&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Tw01O/hyOt9f3Uxn/xk79CPxtap8ohLkYVzMKJ0/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/y6e5P/hyOucDQfo6/NtjViivwnQmIpppZdEdKOk/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/dZXDU2/hyOugzuhSm/bO7AjLL2000MubHwZyhFFk/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 14 학습 (학습중인 포스팅입니다) (Boss Level Challenge 3 - Bitcoin Tricker)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/692 [Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W [이전학습] https://youngest-p..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653209631652&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653209631653&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[프로젝트]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T2WGY/btrCPGKarKo/bXQ6Gta0316kMQEkO2gpnK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T2WGY/btrCPGKarKo/bXQ6Gta0316kMQEkO2gpnK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T2WGY/btrCPGKarKo/bXQ6Gta0316kMQEkO2gpnK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/T2WGY/btrCPGKarKo/bXQ6Gta0316kMQEkO2gpnK/img.gif&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;358&quot; height=&quot;720&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[메모]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러터 커스텀 애니메이션 관련 클래스 및 문서들&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.flutter.io/flutter/animation/Curves-class.html&quot;&gt;Curves Class Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.flutter.io/flutter/animation/CurvedAnimation-class.html&quot;&gt;CurvedAnimation Class Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.flutter.io/flutter/animation/Tween-class.html&quot;&gt;Tween Animation Class&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;3개다 구현해보고 마지막으로 Tween 해봄&lt;/p&gt;
&lt;pre id=&quot;code_1657434185767&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flash_chat/screens/login_screen.dart';
import 'package:flash_chat/screens/registration_screen.dart';
import 'package:flutter/material.dart';

class WelcomeScreen extends StatefulWidget {
  static const String id = 'welcome_screen';

  @override
  _WelcomeScreenState createState() =&amp;gt; _WelcomeScreenState();
}

// SingleTickerProviderStateMixin 는 AnimationController 를 사용하는데 필요
class _WelcomeScreenState extends State&amp;lt;WelcomeScreen&amp;gt;
    with SingleTickerProviderStateMixin {
  AnimationController controller;
  Animation animation;

  @override
  void initState() {
    super.initState();

    controller =
        AnimationController(duration: Duration(seconds: 1), vsync: this);
    animation = CurvedAnimation(parent: controller, curve: Curves.easeIn);

    controller.forward();
    animation = ColorTween(begin: Colors.blueGrey, end: Colors.white)
        .animate(controller);
    controller.addListener(() {
      setState(() {});
      print(animation.value);
    });
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: animation.value,
      body: Padding(
        padding: EdgeInsets.symmetric(horizontal: 24.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: &amp;lt;Widget&amp;gt;[
            Row(
              children: &amp;lt;Widget&amp;gt;[
                Hero(
                  tag: 'logo',
                  child: Container(
                      child: Image.asset('images/logo.png'), height: 60.0),
                ),
                Text(
                  'Flash Chat',
                  style: TextStyle(
                    fontSize: 45.0,
                    fontWeight: FontWeight.w900,
                  ),
                ),
              ],
            ),
            SizedBox(
              height: 48.0,
            ),
            Padding(
              padding: EdgeInsets.symmetric(vertical: 16.0),
              child: Material(
                elevation: 5.0,
                color: Colors.lightBlueAccent,
                borderRadius: BorderRadius.circular(30.0),
                child: MaterialButton(
                  onPressed: () {
                    //Go to login screen.
                    Navigator.pushNamed(context, LoginScreen.id);
                  },
                  minWidth: 200.0,
                  height: 42.0,
                  child: Text(
                    'Log In',
                  ),
                ),
              ),
            ),
            Padding(
              padding: EdgeInsets.symmetric(vertical: 16.0),
              child: Material(
                color: Colors.blueAccent,
                borderRadius: BorderRadius.circular(30.0),
                elevation: 5.0,
                child: MaterialButton(
                  onPressed: () {
                    //Go to registration screen.
                    Navigator.pushNamed(context, RegistrationScreen.id);
                  },
                  minWidth: 200.0,
                  height: 42.0,
                  child: Text(
                    'Register',
                  ),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 학습중인 챕터 포스팅입니다 :)&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/706</guid>
      <comments>https://youngest-programming.tistory.com/706#entry706comment</comments>
      <pubDate>Sun, 22 May 2022 17:57:28 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 서버 API 네트워크 통신 예제</title>
      <link>https://youngest-programming.tistory.com/705</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;&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;619&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nXx54/btrCKkBYbnz/0rq3liBtkhwGxfBRWUAQEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nXx54/btrCKkBYbnz/0rq3liBtkhwGxfBRWUAQEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nXx54/btrCKkBYbnz/0rq3liBtkhwGxfBRWUAQEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnXx54%2FbtrCKkBYbnz%2F0rq3liBtkhwGxfBRWUAQEK%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;619&quot; height=&quot;260&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;260&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;http 디펜던시 yaml 추가 (flutter 1.x 버전대임..)&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  #TODO: Add your dependencies here.
  http: ^0.12.1&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/http/versions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/packages/http/versions&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653203550749&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;http package - All Versions&quot; data-og-description=&quot;Pub is the package manager for the Dart programming language, containing reusable libraries &amp;amp; packages for Flutter, AngularDart, and general Dart programs.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/http/versions&quot; data-og-url=&quot;https://pub.dev/packages/http/versions&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bbuRmh/hyOunSN4T7/pXjsF4a0ffNdZq2a6WzXJK/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bOqrw8/hyOucRhiKm/YlnUmNL8YzqhgarvFJJ241/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/http/versions&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/http/versions&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bbuRmh/hyOunSN4T7/pXjsF4a0ffNdZq2a6WzXJK/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bOqrw8/hyOucRhiKm/YlnUmNL8YzqhgarvFJJ241/img.png?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;http package - All Versions&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Pub is the package manager for the Dart programming language, containing reusable libraries &amp;amp; packages for Flutter, AngularDart, and general Dart programs.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;http, convert 패키지 import&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;import 'dart:convert';
import 'package:http/http.dart' as http;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http는 통신, convert는 json코드를 decode하는데 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;네트워크 통신 베이스 클래스&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot;&gt;&lt;code&gt;const coinAPIURL = 'https://rest.coinapi.io/v1/exchangerate';
const apiKey = '시크릿';

class CoinData {
  String coinRateUrl = '$coinAPIURL/BTC/USD?apikey=$apiKey';

  //TODO: Create your getCoinData() method here.
  Future getCoinData() async {
    http.Response response = await http.get(coinRateUrl);
    if (response.statusCode == 200) {
      var decodedData = jsonDecode(response.body);
      var lastPrice = decodedData['rate'];
      return lastPrice;
    } else {
      print(response.statusCode);
      throw 'getCoinData() error';
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;화면에서 베이스 클래스 사용&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;String coinRate = '?';
//TODO: Create a method here called getData() to get the coin data from coin_data.dart
void getData() async {
  try {
    double data = await CoinData().getCoinData();
    setState(() {
      coinRate = data.toStringAsFixed(0);
    });
  } catch (e) {
    print(e);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter convert</category>
      <category>flutter http</category>
      <category>flutter network call</category>
      <category>flutter 서버 연동</category>
      <category>막내의막무가내 플러터</category>
      <category>플러터 네트워크 통신</category>
      <category>플러터 네트워크 통신 하는 방법</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/705</guid>
      <comments>https://youngest-programming.tistory.com/705#entry705comment</comments>
      <pubDate>Sun, 22 May 2022 16:18:04 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 플러터 IOS 쿠퍼티노 Android 머터리얼 디자인 분기처리 (dart:io 패키지 Platform 사용)</title>
      <link>https://youngest-programming.tistory.com/704</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r5DeQ/btrCKhKNETq/RHdhCaPyl9W3cg610LIdnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r5DeQ/btrCKhKNETq/RHdhCaPyl9W3cg610LIdnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r5DeQ/btrCKhKNETq/RHdhCaPyl9W3cg610LIdnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr5DeQ%2FbtrCKhKNETq%2FRHdhCaPyl9W3cg610LIdnK%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;618&quot; height=&quot;257&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter 는 리엑트네이티브처럼 IOS, Android 를 동시에 개발이 가능하다.&lt;/p&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 에서는 기본적으로 &lt;b&gt;Material 디자인&lt;/b&gt;을 제공하고 있고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/material&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.flutter.dev/development/ui/widgets/material&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653199646747&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;Material Components widgets&quot; data-og-description=&quot; &quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/material&quot; data-og-url=&quot;https://docs.flutter.dev/development/ui/widgets/material&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/1r8MC/hyOt9AbjAw/RkvdFJWOYl9JuFAfEbN0sK/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/pT7oo/hyOubktnTI/6mcWj9nuWq4AK8keBYvn6k/img.png?width=2320&amp;amp;height=1248&amp;amp;face=0_0_2320_1248,https://scrap.kakaocdn.net/dn/LjBF7/hyOuiDUjg7/dXpyHka57lJcqCDhrxtSG1/img.png?width=1520&amp;amp;height=960&amp;amp;face=0_0_1520_960&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/material&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/material&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/1r8MC/hyOt9AbjAw/RkvdFJWOYl9JuFAfEbN0sK/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/pT7oo/hyOubktnTI/6mcWj9nuWq4AK8keBYvn6k/img.png?width=2320&amp;amp;height=1248&amp;amp;face=0_0_2320_1248,https://scrap.kakaocdn.net/dn/LjBF7/hyOuiDUjg7/dXpyHka57lJcqCDhrxtSG1/img.png?width=1520&amp;amp;height=960&amp;amp;face=0_0_1520_960');&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;Material Components widgets&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;docs.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IOS에서는&lt;b&gt; Cupertino&lt;/b&gt; 라는 디자인을 제공하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.flutter.dev/development/ui/widgets/cupertino&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653199627287&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;Cupertino (iOS-style) widgets&quot; data-og-description=&quot; &quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; data-og-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKQifF/hyOudo2MeM/a3kB1hIRh2d7Q26C6wg5i1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/zENbD/hyOukItoC2/IKaujYHPjiW0JXy16NjK0K/img.png?width=546&amp;amp;height=553&amp;amp;face=0_0_546_553,https://scrap.kakaocdn.net/dn/hlqrf/hyOuaMBp0P/UEUhKAwzxa3Arb2pkpGdMk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKQifF/hyOudo2MeM/a3kB1hIRh2d7Q26C6wg5i1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/zENbD/hyOukItoC2/IKaujYHPjiW0JXy16NjK0K/img.png?width=546&amp;amp;height=553&amp;amp;face=0_0_546_553,https://scrap.kakaocdn.net/dn/hlqrf/hyOuaMBp0P/UEUhKAwzxa3Arb2pkpGdMk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&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;Cupertino (iOS-style) widgets&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 두개의 링크처럼 플러터는&lt;b&gt; IOS, Android 두 프레임워크의 디자인을 모두 지원&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;나는 Android 폰과 삼성 노트북만을 사용하고 있기 떄문에 IOS의 디자인에 대해서는 잘 알지는 못하지만 안드로이드 머터리얼 디자인에 익숙해져있는 내가 IOS 디자인으로 된 UI를 보면 이질감이 조금 있을 순 있을거 같다.&lt;/p&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 에서는 두 개의 플랫폼에 따라 다른 디자인을 구현해줄 수 있다.&lt;/p&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에서 기본으로 제공하는 io 패키지를 먼저 import 해준다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;import 'dart:io' show Platform;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 show 는 이 io 패키지의 Platform 파일만을 사용하겠다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에도 as , hide도 있긴하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1297&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mvexH/btrCKkhyP3H/255OZD8779BAOUyWeTUZG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mvexH/btrCKkhyP3H/255OZD8779BAOUyWeTUZG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mvexH/btrCKkhyP3H/255OZD8779BAOUyWeTUZG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmvexH%2FbtrCKkhyP3H%2F255OZD8779BAOUyWeTUZG0%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;1297&quot; height=&quot;641&quot; data-origin-width=&quot;1297&quot; data-origin-height=&quot;641&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;이 Platform 클래스를 활용해서 사용자가 무슨 플랫폼을 사용하고 있는지 체크하여 디자인을 분기 처리할 수 있다.&lt;/p&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 머터리얼 디자인 구현 -&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;DropdownButton&amp;lt;String&amp;gt; androidDropdown() {
  List&amp;lt;DropdownMenuItem&amp;lt;String&amp;gt;&amp;gt; dropdownItems = [];
  for (String currency in currenciesList) {
    var newItem = DropdownMenuItem(
      child: Text(currency),
      value: currency,
    );
    dropdownItems.add(newItem);
  }

  return DropdownButton&amp;lt;String&amp;gt;(
    value: selectedCurrency,
    items: dropdownItems,
    onChanged: (value) {
      setState(() {
        selectedCurrency = value;
      });
    },
  );
}&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;- IOS 쿠퍼티노 디자인 구현 -&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;CupertinoPicker iOSPicker() {
  List&amp;lt;Text&amp;gt; pickerItems = [];
  for (String currency in currenciesList) {
    pickerItems.add(Text(currency));
  }

  return CupertinoPicker(
    backgroundColor: Colors.lightBlue,
    itemExtent: 32.0,
    onSelectedItemChanged: (selectedIndex) {
      print(selectedIndex);
    },
    children: pickerItems,
  );
}&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;pre class=&quot;less&quot;&gt;&lt;code&gt;Container(
  height: 150.0,
  alignment: Alignment.center,
  padding: EdgeInsets.only(bottom: 30.0),
  color: Colors.lightBlue,
  child: Platform.isIOS ? iOSPicker() : androidDropdown(),
),&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;661&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPMs1O/btrCKjCZ5z4/4UNv9mw7pFsGsGpuPymupK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPMs1O/btrCKjCZ5z4/4UNv9mw7pFsGsGpuPymupK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPMs1O/btrCKjCZ5z4/4UNv9mw7pFsGsGpuPymupK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPMs1O%2FbtrCKjCZ5z4%2F4UNv9mw7pFsGsGpuPymupK%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;661&quot; height=&quot;331&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;331&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;안드로이드 환경이라 머터리얼 디자인이 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daTTC5/btrCPHPGNZt/LRiKYgkWXkt7USZbcUFDPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daTTC5/btrCPHPGNZt/LRiKYgkWXkt7USZbcUFDPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daTTC5/btrCPHPGNZt/LRiKYgkWXkt7USZbcUFDPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaTTC5%2FbtrCPHPGNZt%2FLRiKYgkWXkt7USZbcUFDPK%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;370&quot; height=&quot;630&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter dart:io show Platform</category>
      <category>flutter material cupertino design</category>
      <category>flutter platform class</category>
      <category>flutter user environment check</category>
      <category>막내의막무가내 플러터</category>
      <category>플러터 Platform</category>
      <category>플러터 디자인 분기처리</category>
      <category>플러터 사용자 환경 체크</category>
      <category>플러터 안드로이드 ios 분기 처리</category>
      <category>플러터 프레임워크 확인하는 방법</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/704</guid>
      <comments>https://youngest-programming.tistory.com/704#entry704comment</comments>
      <pubDate>Sun, 22 May 2022 15:20:10 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 14 학습 (Boss Level Challenge 3 - Bitcoin Tricker)</title>
      <link>https://youngest-programming.tistory.com/701</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;&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;618&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZD1pc/btrCKjC09Ao/DUHf2Mi4Fgk5CMKlKMqhBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZD1pc/btrCKjC09Ao/DUHf2Mi4Fgk5CMKlKMqhBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZD1pc/btrCKjC09Ao/DUHf2Mi4Fgk5CMKlKMqhBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZD1pc%2FbtrCKjC09Ao%2FDUHf2Mi4Fgk5CMKlKMqhBk%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;618&quot; height=&quot;257&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;257&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;&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://youngest-programming.tistory.com/692&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/692&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651929534806&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/685 [Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates) [이전학습] https://youngest-programming.tistor..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/692&quot; data-og-url=&quot;https://youngest-programming.tistory.com/692&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/o0Fmp/hyOjcDBv6j/NdCzBpCSlXQyPrJYkbkO6K/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/692&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/692&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/o0Fmp/hyOjcDBv6j/NdCzBpCSlXQyPrJYkbkO6K/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/685 [Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates) [이전학습] https://youngest-programming.tistor..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651929518862&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651929518863&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅들과 다르게 이번 포스팅부터는 시간절약과 필요한 부분만 보기위해 강의챕터마다 모두 기록하는게 아닌 필요한 부분만 부분적으로 메모하는 방식으로 포스팅을 진행하려고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[프로젝트]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Di0sm/btrBr7jjXmy/yUmTUaBXPgi8ekIt9cF9x0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Di0sm/btrBr7jjXmy/yUmTUaBXPgi8ekIt9cF9x0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Di0sm/btrBr7jjXmy/yUmTUaBXPgi8ekIt9cF9x0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/Di0sm/btrBr7jjXmy/yUmTUaBXPgi8ekIt9cF9x0/img.gif&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;394&quot; height=&quot;754&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[메모]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 머터리얼 디자인의 위젯 중 하나를 사용해봤다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;DropDownButton&lt;/b&gt; 사용법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/DropdownButton-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.flutter.dev/flutter/material/DropdownButton-class.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653197043380&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;DropdownButton class - material library - Dart API&quot; data-og-description=&quot;A material design button for selecting from a list of items. A dropdown button lets the user select from a number of items. The button shows the currently selected item as well as an arrow that opens a menu for selecting another item. One ancestor must be &quot; data-og-host=&quot;api.flutter.dev&quot; data-og-source-url=&quot;https://api.flutter.dev/flutter/material/DropdownButton-class.html&quot; data-og-url=&quot;https://api.flutter.dev/flutter/material/DropdownButton-class.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/DropdownButton-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.flutter.dev/flutter/material/DropdownButton-class.html&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;DropdownButton class - material library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A material design button for selecting from a list of items. A dropdown button lets the user select from a number of items. The button shows the currently selected item as well as an arrow that opens a menu for selecting another item. One ancestor must be&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;Container(
  height: 150.0,
  alignment: Alignment.center,
  padding: EdgeInsets.only(bottom: 30.0),
  color: Colors.lightBlue,
  child: DropdownButton&amp;lt;String&amp;gt;(
    value: selectedCurrency,
    items: [
      DropdownMenuItem(
        child: Text('USD'),
        value: 'USD',
      ),
      DropdownMenuItem(
        child: Text('EUR'),
        value: 'EUR',
      ),
      DropdownMenuItem(
        child: Text('GBP'),
        value: 'GBP',
      ),
    ],
    onChanged: (value) {
      setState(() {
        selectedCurrency = value;
      });
    },
  ),
),&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;382&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKG9Af/btrCOKZ8hAB/b10nnKhrmnKiLKwyd4L4Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKG9Af/btrCOKZ8hAB/b10nnKhrmnKiLKwyd4L4Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKG9Af/btrCOKZ8hAB/b10nnKhrmnKiLKwyd4L4Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKG9Af%2FbtrCOKZ8hAB%2Fb10nnKhrmnKiLKwyd4L4Lk%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;382&quot; height=&quot;762&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;762&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;388&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NJWqN/btrCKXzEmNP/BXkKST5aEWmfxAe7wle7R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NJWqN/btrCKXzEmNP/BXkKST5aEWmfxAe7wle7R1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NJWqN/btrCKXzEmNP/BXkKST5aEWmfxAe7wle7R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNJWqN%2FbtrCKXzEmNP%2FBXkKST5aEWmfxAe7wle7R1%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;388&quot; height=&quot;697&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;697&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter Dart 반복문 &lt;b&gt;for 사용법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코틀린이나 자바와 크게 다를점이 없었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법1&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;List&amp;lt;DropdownMenuItem&amp;gt; getDropdownItems() {
  List&amp;lt;DropdownMenuItem&amp;lt;String&amp;gt;&amp;gt; dropdownItems = [];
  for (int i = 0; i &amp;lt; currenciesList.length; i++) {
    String currency = currenciesList[i];
    var newItem = DropdownMenuItem(
      child: Text(currency),
      value: currency,
    );
    dropdownItems.add(newItem);
  }
  return dropdownItems;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방법2&lt;/p&gt;
&lt;pre class=&quot;haxe&quot;&gt;&lt;code&gt;List&amp;lt;DropdownMenuItem&amp;gt; getDropdownItems() {
  List&amp;lt;DropdownMenuItem&amp;lt;String&amp;gt;&amp;gt; dropdownItems = [];
  for (String currency in currenciesList) {
    var newItem = DropdownMenuItem(
      child: Text(currency),
      value: currency,
    );
    dropdownItems.add(newItem);
  }
  return dropdownItems;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;Cupertino (iOS-style) widgets&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에 머터리얼 디자인이 있다면 IOS에는 &lt;b&gt;쿠퍼티노 디자인&lt;/b&gt;이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.flutter.dev/development/ui/widgets/cupertino&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1653198552717&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;Cupertino (iOS-style) widgets&quot; data-og-description=&quot; &quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; data-og-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKQifF/hyOudo2MeM/a3kB1hIRh2d7Q26C6wg5i1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/zENbD/hyOukItoC2/IKaujYHPjiW0JXy16NjK0K/img.png?width=546&amp;amp;height=553&amp;amp;face=0_0_546_553,https://scrap.kakaocdn.net/dn/hlqrf/hyOuaMBp0P/UEUhKAwzxa3Arb2pkpGdMk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/development/ui/widgets/cupertino&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKQifF/hyOudo2MeM/a3kB1hIRh2d7Q26C6wg5i1/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/zENbD/hyOukItoC2/IKaujYHPjiW0JXy16NjK0K/img.png?width=546&amp;amp;height=553&amp;amp;face=0_0_546_553,https://scrap.kakaocdn.net/dn/hlqrf/hyOuaMBp0P/UEUhKAwzxa3Arb2pkpGdMk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&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;Cupertino (iOS-style) widgets&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;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;쿠퍼티노 위젯 중 CupertinPicker 를 사용해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;yaml&quot;&gt;&lt;code&gt;Container(
  height: 150.0,
  alignment: Alignment.center,
  padding: EdgeInsets.only(bottom: 30.0),
  color: Colors.lightBlue,
  child: CupertinoPicker(
    backgroundColor: Colors.lightBlue,
    itemExtent: 32.0,
    onSelectedItemChanged: (selectedIndex) {
      print(selectedIndex);
    },
    children: getPickerItems(),
  ),&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;381&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd7CAg/btrCIUv45Jk/DjCktR2ICrAUKeoFIfetFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd7CAg/btrCIUv45Jk/DjCktR2ICrAUKeoFIfetFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd7CAg/btrCIUv45Jk/DjCktR2ICrAUKeoFIfetFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd7CAg%2FbtrCIUv45Jk%2FDjCktR2ICrAUKeoFIfetFK%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;381&quot; height=&quot;703&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IOS , Android 프레임워크 구별하여 디자인 구현하는 방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;io패키지에 있는 Platform 클래스를 사용한다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;import 'dart:io' show Platform;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;Container(
  height: 150.0,
  alignment: Alignment.center,
  padding: EdgeInsets.only(bottom: 30.0),
  color: Colors.lightBlue,
  child: Platform.isIOS ? iOSPicker() : androidDropdown(),
),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;005&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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>플러터(Flutter) &amp;amp; Dart</category>
      <category>Udemy 플러터 강의 섹션 14 학습 (Boss Level Challenge 3 - Bitcoin Tricker)</category>
      <category>막내의막무가내 플러터</category>
      <category>플러터 머터리얼 디자인</category>
      <category>플러터 반복문 for</category>
      <category>플러터 쿠퍼치노 디자인</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/701</guid>
      <comments>https://youngest-programming.tistory.com/701#entry701comment</comments>
      <pubDate>Sat, 7 May 2022 22:21:14 +0900</pubDate>
    </item>
    <item>
      <title>[필기] 2022 NH투자증권 IT직무 코딩테스트 후기</title>
      <link>https://youngest-programming.tistory.com/698</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;&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;557&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5jKcI/btrAR8JtaGK/yOUtK5182UUYIZ1K9DIImK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5jKcI/btrAR8JtaGK/yOUtK5182UUYIZ1K9DIImK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5jKcI/btrAR8JtaGK/yOUtK5182UUYIZ1K9DIImK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5jKcI%2FbtrAR8JtaGK%2FyOUtK5182UUYIZ1K9DIImK%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;557&quot; height=&quot;344&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;344&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;NH투자증권 IT직무 코딩테스트 시험을 보고 왔습니다. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 2시간 동안 알고리즘 3문제와 SQL 1문제를 풀어야했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;푸는 방법은 사람마다 다르겠지만 제가 생각한 풀이와 아주 간략하게 문제 테마만 적으면 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1번&lt;/b&gt;은 백트래킹(완전탐색) - 평평하게 벽돌세우기 경우의 수 문제&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2번&lt;/b&gt;은 단순구현 - 누진세 계산 문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3번&lt;/b&gt;은 큐, 단순구현 - 은행 손님받기 문제&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4번&lt;/b&gt;은 - 테이블2개 SQL - 나누기, 반올림, 조인이 필요한 필요한 문제&lt;/p&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다 !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>필기 및 면접정리</category>
      <category>NH투자증권 IT 코딩테스트</category>
      <category>NH투자증권 IT 필기 후기</category>
      <category>NH투자증권 IT직무 코딩테스트 후기</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/698</guid>
      <comments>https://youngest-programming.tistory.com/698#entry698comment</comments>
      <pubDate>Sat, 30 Apr 2022 21:03:47 +0900</pubDate>
    </item>
    <item>
      <title>[필기] 2022 NH투자증권 IT직무 필기 NCS 직무능력검사 후기</title>
      <link>https://youngest-programming.tistory.com/697</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;&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;344&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2h4If/btrATSFWemv/2lckkVH88JKLf1LjeabBX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2h4If/btrATSFWemv/2lckkVH88JKLf1LjeabBX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2h4If/btrATSFWemv/2lckkVH88JKLf1LjeabBX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2h4If%2FbtrATSFWemv%2F2lckkVH88JKLf1LjeabBX1%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;344&quot; height=&quot;220&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;220&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;NH투자증권 IT직무 1차 필기 시험인 NCS 직무능력검사를 보고왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험시간은 총 80분동안 80문제를 푸는거였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한페이지에 20문제씩 나오며 다음 페이지로 넘어가면 이전페이지로 돌아올 수 없다는 점이 특이했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NH투자증권의 NCS 출제유형은 직무별로 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;지점영업, 본사지원&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;- 문제해결, 언어논리, 창의력, 공간지각, 금융수리, 경제이해&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;IT&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;- 문제해결, 언어논리, 창의, 공간지각, 수리, 정보처리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;저는 IT직무 시험을 봤습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;평소에 NCS나 인적성 준비를 따로 하지 않아서 대부분의 문제를 못풀었습니다. ㅎㅎ 공부를 안하니 시간이 부족한게아니라 애초에 풀기가 어렵더라고요..&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 평소 NCS 풀어본 분들한텐 익숙한 문제들일거라고 생각했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그리고 지인에게 농협은 찍어서 틀리면 감점이라고 들어서 모르는 문제는 그냥 패스했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;생각나는대로 아주 간략하게 후기를 적자면,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;문제해결&lt;/b&gt; 영역은 명제 추리 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;언어논리&lt;/b&gt;는 띄어쓰기 개수, 이상한 문맥, 비슷한 문단끼리 나누기 등의 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;정보처리분야&lt;/b&gt;에서는 네트워크(IP, 보안)와 디지털논리회로(AND, OR게이트) 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;수리&lt;/b&gt;는 소금물, 첨보는 공식, 그래프 수치계산(?) 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;공간지각&lt;/b&gt;은 공부를 따로 하지않았지만 뭔가 익숙한 벽돌세우기, 주사위, 도형단면자르기 유형&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;등이 나왔습니다 :)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다!!!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>필기 및 면접정리</category>
      <category>NH투자증권 1차 필기</category>
      <category>NH투자증권 IT NCS 직무능력검사 후기</category>
      <category>NH투자증권 IT 필기</category>
      <category>NH투자증권 NCS 후기</category>
      <category>NH투자증권 직무능력검사 후기</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/697</guid>
      <comments>https://youngest-programming.tistory.com/697#entry697comment</comments>
      <pubDate>Sat, 30 Apr 2022 20:55:09 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 16922 로마 숫자 만들기 -백트래킹- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/696</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/16922&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/16922&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651246079305&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;16922번: 로마 숫자 만들기&quot; data-og-description=&quot;2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/16922&quot; data-og-url=&quot;https://www.acmicpc.net/problem/16922&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4bhYI/hyOdxHBYWu/MKlNbiL1mpS53e8p0DEuD1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/16922&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/16922&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4bhYI/hyOdxHBYWu/MKlNbiL1mpS53e8p0DEuD1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&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;16922번: 로마 숫자 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;905&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY9vX5/btrAQJiCMZJ/uWfLdkrsw6VY0ILKCsD8qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY9vX5/btrAQJiCMZJ/uWfLdkrsw6VY0ILKCsD8qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY9vX5/btrAQJiCMZJ/uWfLdkrsw6VY0ILKCsD8qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY9vX5%2FbtrAQJiCMZJ%2FuWfLdkrsw6VY0ILKCsD8qK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1194&quot; height=&quot;905&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;905&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;1184&quot; data-origin-height=&quot;807&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sGqN3/btrAPFH4BQT/hauYCgkTDE8Um18ZKH6C10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sGqN3/btrAPFH4BQT/hauYCgkTDE8Um18ZKH6C10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sGqN3/btrAPFH4BQT/hauYCgkTDE8Um18ZKH6C10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsGqN3%2FbtrAPFH4BQT%2FhauYCgkTDE8Um18ZKH6C10%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;1184&quot; height=&quot;807&quot; data-origin-width=&quot;1184&quot; data-origin-height=&quot;807&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;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;백준&lt;span&gt;&amp;nbsp;백트래킹&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&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: #555555;&quot;&gt;4개의 로마숫자가 있는데 N개를 사용하여 만들 수 있는 합의 모든 경우의 수를 구하는 문제였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;처음에 N이 20개로 작아보여서 Set과 리얼완전모두탐색으로 풀었는데 시간초과가 났네요 ㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;중복배열선언과 같은 합이 안나오게 탐색하게끔 인덱스를 설정하여 탐색하여 통과할 수 있었습니다. ㅎㅅㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;[Set 사용시 시간초과]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651246357399&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashSet;
import java.util.Scanner;

public class Main {
    private static int N; // 로마 숫자 N개
    private static int[] nums = new int[]{1, 5, 10, 50};
    private static HashSet&amp;lt;Integer&amp;gt; set = new HashSet&amp;lt;&amp;gt;();


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        dfs(0, 0);
        System.out.println(set.size());
    }

    private static void dfs(int depth, int sum) {
        if (depth == N) {
            set.add(sum);
            return;
        }
        for (int i = 0; i &amp;lt; 4; i++) {
            dfs(depth + 1, sum + nums[i]);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;[Java]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651246368627&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    private static int N; // 로마 숫자 N개
    private static int[] nums = new int[]{1, 5, 10, 50};
    private static boolean[] isVisited = new boolean[1001];
    private static int result = 0;


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        dfs(0, 0, 0);
        System.out.println(result);
    }

    private static void dfs(int depth, int index, int sum) {
        if (depth == N) {
            if (!isVisited[sum]) {
                isVisited[sum] = true;
                result++;
            }
            return;
        }
        for (int i = index; i &amp;lt; 4; i++) {
            // 중복탐색안되게끔 index 설정
            dfs(depth + 1, i, sum + nums[i]);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;[Kotlin]&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1651246406867&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*

private var N // 로마 숫자 N개
        = 0
private val nums = intArrayOf(1, 5, 10, 50)
private val isVisited = BooleanArray(1001)
private var result = 0
fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    N = sc.nextInt()
    dfs(0, 0, 0)
    println(result)
}

private fun dfs(depth: Int, index: Int, sum: Int) {
    if (depth == N) {
        if (!isVisited[sum]) {
            isVisited[sum] = true
            result++
        }
        return
    }
    for (i in index..3) { // 중복탐색안되게끔 index 설정
        dfs(depth + 1, i, sum + nums[i])
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;005&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651246445025&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 16992 풀이 &amp;middot; mtjin/algorithm_practice@305eab7&quot; data-og-description=&quot;This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BVJGX/hyOcsOEzzt/s8BOokJNxdBy4pHj2Rc8J1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/305eab7698ef3ecc22adcd4bbe8b4c291ab703f4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BVJGX/hyOcsOEzzt/s8BOokJNxdBy4pHj2Rc8J1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 16992 풀이 &amp;middot; mtjin/algorithm_practice@305eab7&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/DFS, BFS, 시뮬, 백트래킹</category>
      <category>로마 숫자 만들기 kotlin 코틀린</category>
      <category>로마 숫자 만들기 자바</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 16922 로마 숫자 만들기</category>
      <category>백준 16922 로마 숫자 만들기 java</category>
      <category>백준 16922 로마 숫자 만들기 kotlin</category>
      <category>백준 16922 로마 숫자 만들기 자바</category>
      <category>백준 16922 로마 숫자 만들기 코틀린</category>
      <category>백준 로마 숫자 만들기 자바 java</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/696</guid>
      <comments>https://youngest-programming.tistory.com/696#entry696comment</comments>
      <pubDate>Sat, 30 Apr 2022 00:34:42 +0900</pubDate>
    </item>
    <item>
      <title>[웹] HTTP Status Code Cheat sheet (HTTP 상태코드 쉽게 외우기)</title>
      <link>https://youngest-programming.tistory.com/695</link>
      <description>&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;567&quot; data-origin-height=&quot;591&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buWsyX/btrAp57Esj8/H2Z2EzEFQvRLwZypbMjho0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buWsyX/btrAp57Esj8/H2Z2EzEFQvRLwZypbMjho0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buWsyX/btrAp57Esj8/H2Z2EzEFQvRLwZypbMjho0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuWsyX%2FbtrAp57Esj8%2FH2Z2EzEFQvRLwZypbMjho0%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;567&quot; height=&quot;591&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;591&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;클라이언트 개발을 하면서도 서버로 부터 응답받은 HTTP 상태코드에 따라 분기처리를 해서 HTTP 상태코드에 대해 기본적인것을 알아두면 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;되게 쉽고 재밌고 심플하게 정리해논 글을 발견하여 기록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.yohannberger.com/http-status-code/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.yohannberger.com/http-status-code/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650895604759&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;HTTP Status Code Cheat Sheet - Yohann Berger&quot; data-og-description=&quot;Sometimes things don&amp;rsquo;t go well and you end up with a white page with and a HTTP error code. It can be on any website&amp;hellip;&quot; data-og-host=&quot;www.yohannberger.com&quot; data-og-source-url=&quot;https://www.yohannberger.com/http-status-code/&quot; data-og-url=&quot;https://www.yohannberger.com/http-status-code/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ccMqOv/hyN9MfcAbL/sL8IjR3aSvxmukN9ACji5k/img.jpg?width=572&amp;amp;height=594&amp;amp;face=0_0_572_594&quot;&gt;&lt;a href=&quot;https://www.yohannberger.com/http-status-code/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.yohannberger.com/http-status-code/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ccMqOv/hyN9MfcAbL/sL8IjR3aSvxmukN9ACji5k/img.jpg?width=572&amp;amp;height=594&amp;amp;face=0_0_572_594');&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;HTTP Status Code Cheat Sheet - Yohann Berger&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Sometimes things don&amp;rsquo;t go well and you end up with a white page with and a HTTP error code. It can be on any website&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.yohannberger.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>웹</category>
      <category>http status code</category>
      <category>http status code cheat sheet</category>
      <category>http 상태코드 요약 정리</category>
      <category>http 상태코드 치트시트</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/695</guid>
      <comments>https://youngest-programming.tistory.com/695#entry695comment</comments>
      <pubDate>Mon, 25 Apr 2022 23:07:16 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 13 학습 (Clima - Powering Your Flutter App with Live Web Data)</title>
      <link>https://youngest-programming.tistory.com/692</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;&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;630&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZGEaq/btrzcSH8ysQ/rXMuZK65fKHpgENkjSQ681/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZGEaq/btrzcSH8ysQ/rXMuZK65fKHpgENkjSQ681/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZGEaq/btrzcSH8ysQ/rXMuZK65fKHpgENkjSQ681/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZGEaq%2FbtrzcSH8ysQ%2FrXMuZK65fKHpgENkjSQ681%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;259&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;259&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/685&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/685&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649765287846&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/682 [Flutter] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini) [이전학습] https://youngest-programming.tistory.com/624..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/685&quot; data-og-url=&quot;https://youngest-programming.tistory.com/685&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lZbQZ/hyN0q4ETGp/Mrv6yaQF08bcyeskwzryjK/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/wS9Pr/hyN0iZSJYY/tmLvCdPV6sOXJL7eaZ1gT1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/bywlY7/hyN1D89ClR/rVSDdLHGcPS3I7CilGjKY1/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/685&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/685&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lZbQZ/hyN0q4ETGp/Mrv6yaQF08bcyeskwzryjK/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/wS9Pr/hyN0iZSJYY/tmLvCdPV6sOXJL7eaZ1gT1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/bywlY7/hyN1D89ClR/rVSDdLHGcPS3I7CilGjKY1/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/682 [Flutter] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini) [이전학습] https://youngest-programming.tistory.com/624..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649765279233&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649765279234&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;139. Clima - A Modern Weather App&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;304&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6Ukgt/btrzr8EA4Ec/Mcelrd2qQHAXHR4UGRUorK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6Ukgt/btrzr8EA4Ec/Mcelrd2qQHAXHR4UGRUorK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6Ukgt/btrzr8EA4Ec/Mcelrd2qQHAXHR4UGRUorK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/c6Ukgt/btrzr8EA4Ec/Mcelrd2qQHAXHR4UGRUorK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;304&quot; height=&quot;600&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 날씨 OPEN API 서버와 연동하여 날씨앱을 만들 예정입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버와 통신하는 방법에 대해 배울 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;140. Getting Location Data From Across Platforms&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;a href=&quot;https://pub.dev/packages/geolocator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/packages/geolocator&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650110411188&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;geolocator | Flutter Package&quot; data-og-description=&quot;Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.) functions.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/geolocator&quot; data-og-url=&quot;https://pub.dev/packages/geolocator&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwSqdg/hyN37JepoX/fL1n6pSEeH6IShSiX7AkY1/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/qZMqr/hyN3T5i6Ah/WUksrAnwgKKTcM5X0wkqZk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/geolocator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/geolocator&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwSqdg/hyN37JepoX/fL1n6pSEeH6IShSiX7AkY1/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/qZMqr/hyN3T5i6Ah/WUksrAnwgKKTcM5X0wkqZk/img.png?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;geolocator | Flutter Package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Geolocation plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API for generic location (GPS etc.) functions.&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;플러터에서 지리좌표를 얻을 수 있는 라이브러리인 &lt;b&gt;gelocator&lt;/b&gt;를 사용했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에서는 위치정보를 얻는데 권한이 필요하므로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;manifest에 따로 다음과 같이 사용권한을 추가해줘야한다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    package=&quot;co.appbrewery.clima&quot;&amp;gt;

    &amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot; /&amp;gt;
    &amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_COARSE_LOCATION&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IOS도 마찬가지로 다음과 같이 같은 작업을 해준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;1004&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LqOHM/btrzzYtoRWO/svIidAieEfLg4sA2QZPde1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LqOHM/btrzzYtoRWO/svIidAieEfLg4sA2QZPde1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LqOHM/btrzzYtoRWO/svIidAieEfLg4sA2QZPde1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLqOHM%2FbtrzzYtoRWO%2FsvIidAieEfLg4sA2QZPde1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1447&quot; height=&quot;1004&quot; data-origin-width=&quot;1447&quot; data-origin-height=&quot;1004&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;vbnet&quot;&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSLocationWhenInUseUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;This app needs access to location when open.&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSLocationAlwaysUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;This app needs access to location when in the background.&amp;lt;/string&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;async는 네트워크 작업과 같이 오래걸릴 수 있는 작업을 비동기로 실행시켜주는 거라고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뒤에서 더 자세히 배울 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 사용하여 geolocator의 위치를 얻어오는 작업을 구현하였다.&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  void getLocation() async {
    Position position = await Geolocator()
        .getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
    print(position);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: RaisedButton(
          onPressed: () {
            //Get the current location
            getLocation();
          },
          child: Text('Get Location'),
        ),
      ),
    );
  }
}
&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;393&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/duGNfX/btrzBrPDU8t/HnwwKZcMCI94mssA7ukJj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/duGNfX/btrzBrPDU8t/HnwwKZcMCI94mssA7ukJj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/duGNfX/btrzBrPDU8t/HnwwKZcMCI94mssA7ukJj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FduGNfX%2FbtrzBrPDU8t%2FHnwwKZcMCI94mssA7ukJj1%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;393&quot; height=&quot;737&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;737&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;141. [Dart] Futures, Async &amp;amp; Await&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;다트의 Future, async, await에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Future는 자바스크립트의 프로미스와 비슷하며 미래에 비동기작업으로 부터 받을 결과값 타입이라 생각하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;async는 비동시 실행 await는 이 비동기 작업을 기다려줬다 처리해주는 역할이라 생각하면 편하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;142. Stateful Widget Lifecycle Methods&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 중 Stateful Widget의 생명주기에 대해 데모 프로젝트를 통해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크게위젯이 생성되었을떄 가장 먼저 불리는 &lt;b&gt;initState()&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯을 반환하고 위젯이 다시 만들어질때 불리는&lt;b&gt;&amp;nbsp;build()&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면이 destoryed 되면 불리는 &lt;b&gt;deactiviate()&lt;/b&gt; 가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세한건 다음 링크를 참고하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://flutterbyexample.com/lesson/stateful-widget-lifecycle&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://flutterbyexample.com/lesson/stateful-widget-lifecycle&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650288255680&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;StatefulWidget lifecycle&quot; data-og-description=&quot;When a Flutter builds a [&amp;#96;StatefulWidget&amp;#96;](https://docs.flutter.io/flutter/widgets/StatefulWidget-class.html), it creates a [&amp;#96;State&amp;#96;](https://docs.flutter.io/flutter/widgets/State-class.html) object. This object is where all the **[mutable](https://en.wiki&quot; data-og-host=&quot;flutterbyexample.com&quot; data-og-source-url=&quot;https://flutterbyexample.com/lesson/stateful-widget-lifecycle&quot; data-og-url=&quot;https://flutterbyexample.com/lesson/stateful-widget-lifecycle/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://flutterbyexample.com/lesson/stateful-widget-lifecycle&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://flutterbyexample.com/lesson/stateful-widget-lifecycle&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;StatefulWidget lifecycle&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;When a Flutter builds a [`StatefulWidget`](https://docs.flutter.io/flutter/widgets/StatefulWidget-class.html), it creates a [`State`](https://docs.flutter.io/flutter/widgets/State-class.html) object. This object is where all the **[mutable](https://en.wiki&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;flutterbyexample.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  // async, await 학습
  void getLocation() async {
    Position position = await Geolocator()
        .getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
    print(position);
  }

  @override
  void initState() {
    super.initState();
    getLocation();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }

  @override
  void deactivate() {
    super.deactivate();
  }
}
&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;기존에 build()에 있던 getLocation()을 매번 다시 build()될때 하는것보다 항상 공통적으로 불러오는거라 initState() 생명주기로 코드를 옮겼다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;143. [Dart] Exception Handling &amp;amp; Null Aware Operators&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;플러터 Dart에서 에러를 핸들링하는 즉 예외처리 방법에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코틀린하고 똑같이 try catch문을 사용하면 되었다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  void getLocation() async {
    try {
      Position position = await Geolocator()
          .getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
      print(position);
    } catch (e) {
      print(e);
    }
  }

  @override
  void initState() {
    super.initState();
    getLocation();
  }

  @override
  Widget build(BuildContext context) {
    String myMargin = '15';
    double myMarginAsADouble;

    try {
      myMarginAsADouble = double.parse(myMargin);
    } catch (e) {
      print(e);
    }

    return Scaffold(
      body: Container(
        margin: EdgeInsets.all(myMarginAsADouble ?? 30),
        color: Colors.red,
      ),
    );
  }

  @override
  void deactivate() {
    super.deactivate();
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;144. Async/Await Challenge&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;기존의 getLocation() 함수를 다른 클래스에 모듈화해서 가져오는 식으로 구현하는 챌린지를 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈화한 함수에서 Future와 async를 사용하도 비동기 작업과 리턴을 할 수 있게만들고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수를 부르는 클래스에서는 비동기작업이 끝나면 값을 받아올 수 있게 await 해주었다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;import 'package:geolocator/geolocator.dart';

class Location {
  double latitude;
  double longitude;

  Future&amp;lt;void&amp;gt; getCurrentLocation() async {
    try {
      Position position = await Geolocator()
          .getCurrentPosition(desiredAccuracy: LocationAccuracy.low);
      latitude = position.latitude;
      longitude = position.longitude;
    } catch (e) {
      print(e);
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/services/location.dart';

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  @override
  void initState() {
    super.initState();
    getLocation();
  }

  void getLocation() async {
    Location location = Location();
    await location.getCurrentLocation();
    print(location.latitude);
    print(location.longitude);
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;145. Application Programming Interfaces (APIs) Explained&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;146. Networking in Flutter Apps with the HTTP Package&lt;/span&gt;]&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/http&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/packages/http&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1650894774076&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;http | Dart Package&quot; data-og-description=&quot;A composable, multi-platform, Future-based API for HTTP requests.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/http&quot; data-og-url=&quot;https://pub.dev/packages/http&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bm2yW2/hyN9WoziK6/MjHS2sCxPXqRsvujo5PYvk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/rvBRB/hyN9J3RfiF/DOZpM5iYTK4nwPpa6kS4F0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/http&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/http&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bm2yW2/hyN9WoziK6/MjHS2sCxPXqRsvujo5PYvk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/rvBRB/hyN9J3RfiF/DOZpM5iYTK4nwPpa6kS4F0/img.png?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;http | Dart Package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A composable, multi-platform, Future-based API for HTTP requests.&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;Flutter 에서 HTTP 통신을 하기 위해서 위의 패키지를 사용한다.&lt;/p&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;700&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzQ0bU/btrAoEPFzjq/VWDTSwbOeZOO51JMLPNhkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzQ0bU/btrAoEPFzjq/VWDTSwbOeZOO51JMLPNhkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzQ0bU/btrAoEPFzjq/VWDTSwbOeZOO51JMLPNhkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzQ0bU%2FbtrAoEPFzjq%2FVWDTSwbOeZOO51JMLPNhkK%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;700&quot; height=&quot;703&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP라이브러리를 사용하여 Weather 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;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/services/location.dart';
import 'package:http/http.dart' as http;

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  @override
  void initState() {
    super.initState();
    getLocation();
  }

  void getLocation() async {
    Location location = Location();
    await location.getCurrentLocation();
    print(location.latitude);
    print(location.longitude);
  }

  void getData() async {
    http.Response response = await http.get(
        'https://api.openweathermap.org/data/2.5/weather?lat=35&amp;amp;lon=136&amp;amp;appid=f46d282380022c79ed0008839c7af08d');
    if (response.statusCode == 200) {
      String data = response.body;
      print(data);
    } else {
      print(response.statusCode);
    }
  }

  @override
  Widget build(BuildContext context) {
    getData();
    return Scaffold();
  }

  @override
  void deactivate() {
    super.deactivate();
  }
}
&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;네트워크 통신은 비동기로 이루어지므로 async과 await가 사용되었고 get()으로 데이터를 API로부터 호출해서 불러온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 상태코드에 따라 200(성공)과 실패로 나눠 분기처리하였다.&lt;/p&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;pre class=&quot;tcl&quot;&gt;&lt;code&gt;import 'package:http/http.dart' as http;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 다음과 같이 특정 패키지에 이름을 as로 붙여서 사용할 수 있음도 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;147. JSON Parsing and Dynamic Types&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;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;import 'dart:convert';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 json 값을 컨버팅해서 추출할 수 있는 패키지를 추가해줬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;void getData() async {
  http.Response response = await http.get(
      'https://api.openweathermap.org/data/2.5/weather?lat=35&amp;amp;lon=136&amp;amp;appid=f46d282380022c79ed0008839c7af08d');
  if (response.statusCode == 200) {
    String data = response.body;
    // dynamic type 인 var로 정확한 타입을 몰라도 저장할 수 있다.
    var decodedData = jsonDecode(data);
    double temperature = decodedData['main']['temp'];
    int condition = decodedData['weather'][0]['id'];
    String cityName = decodedData['name'];
    print(temperature);
    print(condition);
    print(cityName);
  } else {
    print(response.statusCode);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json 구조를 코드로 받는 거는 이 예제만 보면 이해가 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;148. Getting Actual Weather Data from the OpenWeatherMap API&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 네트워크통신하던 로직을 좀 더 모듈화하고 NetworkHelper 클래스로 분리하였다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;import 'package:http/http.dart' as http;
import 'dart:convert';

class NetworkHelper {
  final String url;

  NetworkHelper(this.url);

  Future getData() async {
    http.Response response = await http.get(url);
    if (response.statusCode == 200) {
      String data = response.body;
      return jsonDecode(data);
    } else {
      print(response.statusCode);
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/services/location.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:clima/services/networking.dart';

const apiKey = 'f46d282380022c79ed0008839c7af08d';

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  double latitude;
  double longitude;

  @override
  void initState() {
    super.initState();
    getLocationData();
  }

  void getLocationData() async {
    Location location = Location();
    await location.getCurrentLocation();
    latitude = location.latitude;
    longitude = location.longitude;
    NetworkHelper networkHelper = NetworkHelper(
        'https://api.openweathermap.org/data/2.5/weather?lat=$latitude&amp;amp;lon=$longitude&amp;amp;appid=$apiKey');

    var weatherData = await networkHelper.getData();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }

  @override
  void deactivate() {
    super.deactivate();
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;149. Showing a Spinner While the User Waits&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;플러터에서는 다양한 로딩바(spinner)를 지원한다.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/flutter_spinkit&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/packages/flutter_spinkit&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651371965482&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_spinkit | Flutter Package&quot; data-og-description=&quot;A collection of loading indicators animated with flutter. Heavily inspired by @tobiasahlin's SpinKit.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/flutter_spinkit&quot; data-og-url=&quot;https://pub.dev/packages/flutter_spinkit&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tDUZu/hyOe3svPX8/EwIe3HZEaesbT17sVmIxZ0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/gLZxq/hyOdBYE9NK/ie5dlASrVAszs65FLk9Xl0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/flutter_spinkit&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/flutter_spinkit&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tDUZu/hyOe3svPX8/EwIe3HZEaesbT17sVmIxZ0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/gLZxq/hyOdBYE9NK/ie5dlASrVAszs65FLk9Xl0/img.png?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;flutter_spinkit | Flutter Package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of loading indicators animated with flutter. Heavily inspired by @tobiasahlin's SpinKit.&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;이 라이브러리를 import 한 후 로딩스크린을 문서에 작성되있는대로 구현하였다.&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:clima/services/location.dart';
import 'package:clima/services/networking.dart';
import 'location_screen.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';

const apiKey = 'f46d282380022c79ed0008839c7af08d';

class LoadingScreen extends StatefulWidget {
  @override
  _LoadingScreenState createState() =&amp;gt; _LoadingScreenState();
}

class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  double latitude;
  double longitude;

  @override
  void initState() {
    super.initState();
    getLocationData();
  }

  void getLocationData() async {
    Location location = Location();
    await location.getCurrentLocation();
    latitude = location.latitude;
    longitude = location.longitude;
    NetworkHelper networkHelper = NetworkHelper(
        'https://api.openweathermap.org/data/2.5/weather?lat=$latitude&amp;amp;lon=$longitude&amp;amp;appid=$apiKey');

    var weatherData = await networkHelper.getData();
    Navigator.push(context, MaterialPageRoute(builder: (context) {
      return LocationScreen();
    }));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SpinKitDoubleBounce(
          color: Colors.white,
          size: 100.0,
        ),
      ),
    );
  }

  @override
  void deactivate() {
    super.deactivate();
  }
}
&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;377&quot; data-origin-height=&quot;663&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oKfCl/btrAWAkO7pF/ziMFpu5jIthIqr8slPbRYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oKfCl/btrAWAkO7pF/ziMFpu5jIthIqr8slPbRYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oKfCl/btrAWAkO7pF/ziMFpu5jIthIqr8slPbRYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoKfCl%2FbtrAWAkO7pF%2FziMFpu5jIthIqr8slPbRYk%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;377&quot; height=&quot;663&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;663&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;376&quot; data-origin-height=&quot;655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2s9tY/btrAUx9Xvws/yGu4HHlKeqstgoUGYwiP7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2s9tY/btrAUx9Xvws/yGu4HHlKeqstgoUGYwiP7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2s9tY/btrAUx9Xvws/yGu4HHlKeqstgoUGYwiP7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2s9tY%2FbtrAUx9Xvws%2FyGu4HHlKeqstgoUGYwiP7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;655&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;655&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;150. Passing Data to a State Object&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;State Object에 데이터를 넘겨주는 방법에 대해 배웠다.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;class _LoadingScreenState extends State&amp;lt;LoadingScreen&amp;gt; {
  double latitude;
  double longitude;

  @override
  void initState() {
    super.initState();
    getLocationData();
  }

  void getLocationData() async {
    Location location = Location();
    await location.getCurrentLocation();
    NetworkHelper networkHelper = NetworkHelper(
        'https://api.openweathermap.org/data/2.5/weather?lat=${location.latitude}&amp;amp;lon=${location.longitude}&amp;amp;appid=$apiKey&amp;amp;units=metric');

    var weatherData = await networkHelper.getData();
    Navigator.push(context, MaterialPageRoute(builder: (context) {
      return LocationScreen(
        locationWeather: weatherData,
      );
    }));
  }&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;StateFulWidget의 initState()에서 넘겨받은 값을 초기화시켜준다.&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/utilities/constants.dart';

class LocationScreen extends StatefulWidget {
  final locationWeather;

  @override
  _LocationScreenState createState() =&amp;gt; _LocationScreenState();

  LocationScreen({this.locationWeather});
}

class _LocationScreenState extends State&amp;lt;LocationScreen&amp;gt; {
  int temperature;
  int condition;
  String cityName;

  @override
  void initState() {
    super.initState();
    updateUI(widget.locationWeather);
  }

  void updateUI(dynamic weatherData) {
    double temp = weatherData['main']['temp'];
    temperature = temp.toInt();
    condition = weatherData['weather'][0]['id'];
    cityName = weatherData['name'];
  }
&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;381&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kUIhV/btrBrKAPMd6/bBbHKaOS7UboWMAckCJ3p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kUIhV/btrBrKAPMd6/bBbHKaOS7UboWMAckCJ3p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kUIhV/btrBrKAPMd6/bBbHKaOS7UboWMAckCJ3p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkUIhV%2FbtrBrKAPMd6%2FbBbHKaOS7UboWMAckCJ3p1%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;381&quot; height=&quot;656&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;151. Updating the Weather with the WeatherModel&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;WeatherModel 클래스 함수를 활용하여 나머지 날씨아이콘과 메시지를 리펙토링해주었다.&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;class WeatherModel {
  String getWeatherIcon(int condition) {
    if (condition &amp;lt; 300) {
      return ' ';
    } else if (condition &amp;lt; 400) {
      return ' ';
    } else if (condition &amp;lt; 600) {
      return '☔️';
    } else if (condition &amp;lt; 700) {
      return '☃️';
    } else if (condition &amp;lt; 800) {
      return ' ';
    } else if (condition == 800) {
      return '☀️';
    } else if (condition &amp;lt;= 804) {
      return '☁️';
    } else {
      return ' &amp;zwj;';
    }
  }

  String getMessage(int temp) {
    if (temp &amp;gt; 25) {
      return 'It\'s   time';
    } else if (temp &amp;gt; 20) {
      return 'Time for shorts and  ';
    } else if (temp &amp;lt; 10) {
      return 'You\'ll need   and  ';
    } else {
      return 'Bring a   just in case';
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/utilities/constants.dart';
import 'package:clima/services/weather.dart';

class LocationScreen extends StatefulWidget {
  final locationWeather;

  @override
  _LocationScreenState createState() =&amp;gt; _LocationScreenState();

  LocationScreen({this.locationWeather});
}

class _LocationScreenState extends State&amp;lt;LocationScreen&amp;gt; {
  WeatherModel weather = WeatherModel();
  int temperature;
  String weatherIcon;
  String weatherMessage;
  String cityName;

  @override
  void initState() {
    super.initState();
    updateUI(widget.locationWeather);
  }

  void updateUI(dynamic weatherData) {
    setState(() {
      double temp = weatherData['main']['temp'];
      temperature = temp.toInt();
      var condition = weatherData['weather'][0]['id'];
      weatherIcon = weather.getWeatherIcon(condition);
      weatherMessage = weather.getMessage(temperature);
      cityName = weatherData['name'];
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('images/location_background.jpg'),
            fit: BoxFit.cover,
            colorFilter: ColorFilter.mode(
                Colors.white.withOpacity(0.8), BlendMode.dstATop),
          ),
        ),
        constraints: BoxConstraints.expand(),
        child: SafeArea(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: &amp;lt;Widget&amp;gt;[
                  FlatButton(
                    onPressed: () {},
                    child: Icon(
                      Icons.near_me,
                      size: 50.0,
                    ),
                  ),
                  FlatButton(
                    onPressed: () {},
                    child: Icon(
                      Icons.location_city,
                      size: 50.0,
                    ),
                  ),
                ],
              ),
              Padding(
                padding: EdgeInsets.only(left: 15.0),
                child: Row(
                  children: &amp;lt;Widget&amp;gt;[
                    Text(
                      '$temperature&amp;deg;',
                      style: kTempTextStyle,
                    ),
                    Text(
                      weatherIcon,
                      style: kConditionTextStyle,
                    ),
                  ],
                ),
              ),
              Padding(
                padding: EdgeInsets.only(right: 15.0),
                child: Text(
                  '$weatherMessage in $cityName!',
                  textAlign: TextAlign.right,
                  style: kMessageTextStyle,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
&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;385&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nWNYw/btrBr5Z52fY/kjyvRruNrYH6ekDsQyH24k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nWNYw/btrBr5Z52fY/kjyvRruNrYH6ekDsQyH24k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nWNYw/btrBr5Z52fY/kjyvRruNrYH6ekDsQyH24k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnWNYw%2FbtrBr5Z52fY%2FkjyvRruNrYH6ekDsQyH24k%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;385&quot; height=&quot;656&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;152. Refactoring the Location Methods&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;날씨를 불러오는 함수를 WeahterModel 안으로 넣어주면서 리펙토링을 진행했다.&lt;/p&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;import 'package:clima/services/location.dart';
import 'package:clima/services/networking.dart';

const apiKey = 'f46d282380022c79ed0008839c7af08d';
const openWeatherMapURL = 'https://api.openweathermap.org/data/2.5/weather';

class WeatherModel {
  Future&amp;lt;dynamic&amp;gt; getLocationWeather() async {
    Location location = Location();
    await location.getCurrentLocation();
    NetworkHelper networkHelper = NetworkHelper(
        '$openWeatherMapURL?lat=${location.latitude}&amp;amp;lon=${location.longitude}&amp;amp;appid=$apiKey&amp;amp;units=metric');

    var weatherData = await networkHelper.getData();
    return weatherData;
  }

  String getWeatherIcon(int condition) {
    if (condition &amp;lt; 300) {
      return ' ';
    } else if (condition &amp;lt; 400) {
      return ' ';
    } else if (condition &amp;lt; 600) {
      return '☔️';
    } else if (condition &amp;lt; 700) {
      return '☃️';
    } else if (condition &amp;lt; 800) {
      return ' ';
    } else if (condition == 800) {
      return '☀️';
    } else if (condition &amp;lt;= 804) {
      return '☁️';
    } else {
      return ' &amp;zwj;';
    }
  }

  String getMessage(int temp) {
    if (temp &amp;gt; 25) {
      return 'It\'s   time';
    } else if (temp &amp;gt; 20) {
      return 'Time for shorts and  ';
    } else if (temp &amp;lt; 10) {
      return 'You\'ll need   and  ';
    } else {
      return 'Bring a   just in case';
    }
  }
}
&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;그리고 onPressed() 에서 비동기 함수를 불러오는것이므로 앞에 async와 await를 설정해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 null 체크도 추가해주었다.&lt;/p&gt;
&lt;pre class=&quot;properties&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/utilities/constants.dart';
import 'package:clima/services/weather.dart';

class LocationScreen extends StatefulWidget {
  final locationWeather;

  @override
  _LocationScreenState createState() =&amp;gt; _LocationScreenState();

  LocationScreen({this.locationWeather});
}

class _LocationScreenState extends State&amp;lt;LocationScreen&amp;gt; {
  WeatherModel weather = WeatherModel();
  int temperature;
  String weatherIcon;
  String weatherMessage;
  String cityName;

  @override
  void initState() {
    super.initState();
    updateUI(widget.locationWeather);
  }

  void updateUI(dynamic weatherData) {
    setState(() {
      if (weatherData == null) {
        temperature = 0;
        weatherIcon = 'Error';
        weatherMessage = 'Unable to get weahter Data';
        cityName = '';
        return;
      }
      double temp = weatherData['main']['temp'];
      temperature = temp.toInt();
      var condition = weatherData['weather'][0]['id'];
      weatherIcon = weather.getWeatherIcon(condition);
      weatherMessage = weather.getMessage(temperature);
      cityName = weatherData['name'];
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('images/location_background.jpg'),
            fit: BoxFit.cover,
            colorFilter: ColorFilter.mode(
                Colors.white.withOpacity(0.8), BlendMode.dstATop),
          ),
        ),
        constraints: BoxConstraints.expand(),
        child: SafeArea(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: &amp;lt;Widget&amp;gt;[
                  FlatButton(
                    onPressed: () async {
                      var weatherData = await weather.getLocationWeather();
                      updateUI(weatherData);
                    },
                    child: Icon(
                      Icons.near_me,
                      size: 50.0,
                    ),
                  ),
                  FlatButton(
                    onPressed: () {},
                    child: Icon(
                      Icons.location_city,
                      size: 50.0,
                    ),
                  ),
                ],
              ),
              Padding(
                padding: EdgeInsets.only(left: 15.0),
                child: Row(
                  children: &amp;lt;Widget&amp;gt;[
                    Text(
                      '$temperature&amp;deg;',
                      style: kTempTextStyle,
                    ),
                    Text(
                      weatherIcon,
                      style: kConditionTextStyle,
                    ),
                  ],
                ),
              ),
              Padding(
                padding: EdgeInsets.only(right: 15.0),
                child: Text(
                  '$weatherMessage in $cityName!',
                  textAlign: TextAlign.right,
                  style: kMessageTextStyle,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;153. Creating and Styling a TextField Widget for Text Entry&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;TextField 위젯을 사용해봤다. 안드로이드로 치면 EditText와 비슷한거같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/TextField-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.flutter.dev/flutter/material/TextField-class.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651927877586&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;TextField class - material library - Dart API&quot; data-og-description=&quot;A material design text field. A text field lets the user enter text, either with hardware keyboard or with an onscreen keyboard. The text field calls the onChanged callback whenever the user changes the text in the field. If the user indicates that they ar&quot; data-og-host=&quot;api.flutter.dev&quot; data-og-source-url=&quot;https://api.flutter.dev/flutter/material/TextField-class.html&quot; data-og-url=&quot;https://api.flutter.dev/flutter/material/TextField-class.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/TextField-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.flutter.dev/flutter/material/TextField-class.html&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;TextField class - material library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A material design text field. A text field lets the user enter text, either with hardware keyboard or with an onscreen keyboard. The text field calls the onChanged callback whenever the user changes the text in the field. If the user indicates that they ar&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;const kTextFieldInputDecoration = InputDecoration(
  filled: true,
  fillColor: Colors.white,
  icon: Icon(
    Icons.location_city,
    color: Colors.white,
  ),
  hintText: 'Enter City Name',
  hintStyle: TextStyle(color: Colors.grey),
  border: OutlineInputBorder(
    borderRadius: BorderRadius.all(
      Radius.circular(10.0),
    ),
    borderSide: BorderSide.none,
  ),
);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/utilities/constants.dart';

class CityScreen extends StatefulWidget {
  @override
  _CityScreenState createState() =&amp;gt; _CityScreenState();
}

class _CityScreenState extends State&amp;lt;CityScreen&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('images/city_background.jpg'),
            fit: BoxFit.cover,
          ),
        ),
        constraints: BoxConstraints.expand(),
        child: SafeArea(
          child: Column(
            children: &amp;lt;Widget&amp;gt;[
              Align(
                alignment: Alignment.topLeft,
                child: FlatButton(
                  onPressed: () {},
                  child: Icon(
                    Icons.arrow_back_ios,
                    size: 50.0,
                  ),
                ),
              ),
              Container(
                padding: EdgeInsets.all(20.0),
                child: TextField(
                  style: TextStyle(
                    color: Colors.black,
                  ),
                  decoration: kTextFieldInputDecoration,
                  onChanged: (value) {},
                ),
              ),
              FlatButton(
                onPressed: () {},
                child: Text(
                  'Get Weather',
                  style: kButtonTextStyle,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
&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;373&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd1nW8/btrBu5dt6Om/hoO3Fvyos7pUrkKkqT9fDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd1nW8/btrBu5dt6Om/hoO3Fvyos7pUrkKkqT9fDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd1nW8/btrBu5dt6Om/hoO3Fvyos7pUrkKkqT9fDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd1nW8%2FbtrBu5dt6Om%2FhoO3Fvyos7pUrkKkqT9fDK%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;373&quot; height=&quot;662&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;154. Passing Data Backwards Through the Navigation Stack&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;Navigator를 사용하여 데이터를 전달하면서 화면을 이동하는 것은 배웠었는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 현재 화면에서 pop()으로 이전화면으로 돌아가면서 동시에 데이터결과값을 전달해주는 방법에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Weather 클래스에 먼저 도시이름으로 날씨를 얻어오는 함수를 구현하였따.&lt;/p&gt;
&lt;pre class=&quot;dart&quot;&gt;&lt;code&gt;class WeatherModel {
  Future&amp;lt;dynamic&amp;gt; getCityWeather(String cityName) async {
    NetworkHelper networkHelper = NetworkHelper(
        '$openWeatherMapURL?q=$cityName&amp;amp;appid=$apiKey&amp;amp;units=metric');
    var weatherData = await networkHelper.getData();
    return weatherData;
  }
&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;도시를 검색하는 화면에서 pop()을 통해 스택에서 화면이 제거됨과 동시에 결과값을 다음 화면스택에 전달할 수 있게했다.&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:clima/utilities/constants.dart';

class CityScreen extends StatefulWidget {
  @override
  _CityScreenState createState() =&amp;gt; _CityScreenState();
}

class _CityScreenState extends State&amp;lt;CityScreen&amp;gt; {
  String cityName;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('images/city_background.jpg'),
            fit: BoxFit.cover,
          ),
        ),
        constraints: BoxConstraints.expand(),
        child: SafeArea(
          child: Column(
            children: &amp;lt;Widget&amp;gt;[
              Align(
                alignment: Alignment.topLeft,
                child: FlatButton(
                  onPressed: () {
                    // 뒤로가기는 값전달하지 않고 화면을 스택에서 제거한다.
                    Navigator.pop(context);
                  },
                  child: Icon(
                    Icons.arrow_back_ios,
                    size: 50.0,
                  ),
                ),
              ),
              Container(
                padding: EdgeInsets.all(20.0),
                child: TextField(
                  style: TextStyle(
                    color: Colors.black,
                  ),
                  decoration: kTextFieldInputDecoration,
                  onChanged: (value) {
                    cityName = value;
                  },
                ),
              ),
              FlatButton(
                onPressed: () {
                  // 결과값을 리턴할 수도 있음
                  Navigator.pop(context, cityName);
                },
                child: Text(
                  'Get Weather',
                  style: kButtonTextStyle,
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
&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;값이 안넘어 오는 단순 pop()일 수도 있으므로 null체크는 꼭 하도록하자.&lt;/p&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;FlatButton(
  onPressed: () async {
    // 네비게이터로 이동한 화면에서의 결과값을 받을 수 있다.
    // async await 사용이 필요
    var typedName = await Navigator.push(context,
        MaterialPageRoute(builder: (context) {
      return CityScreen();
    }));
    if (typedName != null) {
      var weatherData =
          await weather.getCityWeather(typedName);
      updateUI(weatherData);
    }
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트필드에 런던을 친후 Get Weather 버튼을 누르면 런던의 날씨를 얻어올 수 있다.&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;380&quot; data-origin-height=&quot;645&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgbNR7/btrBu5Lnhnl/R4LbRJkaoYglqyqiFJe4uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgbNR7/btrBu5Lnhnl/R4LbRJkaoYglqyqiFJe4uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgbNR7/btrBu5Lnhnl/R4LbRJkaoYglqyqiFJe4uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgbNR7%2FbtrBu5Lnhnl%2FR4LbRJkaoYglqyqiFJe4uk%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;380&quot; height=&quot;645&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;645&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;379&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yuAcu/btrBuyAffLI/J3CxBdGikcjH4s3Ct6x1d0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yuAcu/btrBuyAffLI/J3CxBdGikcjH4s3Ct6x1d0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yuAcu/btrBuyAffLI/J3CxBdGikcjH4s3Ct6x1d0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyuAcu%2FbtrBuyAffLI%2FJ3CxBdGikcjH4s3Ct6x1d0%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;379&quot; height=&quot;657&quot; data-origin-width=&quot;379&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;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;background-color: #ffffff; color: #555555;&quot;&gt;THE END..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&quot;&gt;이상 섹션 11 학습을 완료했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다 !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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://youngest-programming.tistory.com/701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/701&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1651929807310&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 14 학습 (학습중인 포스팅입니다) (Boss Level Challenge 3 - Bitcoin Tricker)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/692 [Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W [이전학습] https://youngest-p..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/701&quot; data-og-url=&quot;https://youngest-programming.tistory.com/701&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/1hhUu/hyOi5qV0Px/u9ps3bzW9zmckoFEt4UsSK/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/nZ3uB/hyOiZxycnx/FnxnUohIGDvh3Pucg5hhHk/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/OWC1k/hyOi8gTHcd/WO1kGTbL2deNusog786cvk/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/701&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/701&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/1hhUu/hyOi5qV0Px/u9ps3bzW9zmckoFEt4UsSK/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/nZ3uB/hyOiZxycnx/FnxnUohIGDvh3Pucg5hhHk/img.gif?width=394&amp;amp;height=754&amp;amp;face=0_0_394_754,https://scrap.kakaocdn.net/dn/OWC1k/hyOi8gTHcd/WO1kGTbL2deNusog786cvk/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 14 학습 (학습중인 포스팅입니다) (Boss Level Challenge 3 - Bitcoin Tricker)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/692 [Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W [이전학습] https://youngest-p..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter navigator</category>
      <category>flutter Navigator pop()</category>
      <category>flutter network call</category>
      <category>Flutter TextField</category>
      <category>flutter Udemy 플러터 강의 섹션 13 학습 (Clima - Powering Your Flutter App with Live Web Data)</category>
      <category>https://pub.dev/packages/flutter_spinkit</category>
      <category>플러터 네비게이터</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/692</guid>
      <comments>https://youngest-programming.tistory.com/692#entry692comment</comments>
      <pubDate>Tue, 12 Apr 2022 21:09:27 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Hot Reload 시 null error 주의사항</title>
      <link>https://youngest-programming.tistory.com/691</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm8Yn7/btrzcPSsgxB/fBuNAZ2C121TK4yDV2NW11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm8Yn7/btrzcPSsgxB/fBuNAZ2C121TK4yDV2NW11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm8Yn7/btrzcPSsgxB/fBuNAZ2C121TK4yDV2NW11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm8Yn7%2FbtrzcPSsgxB%2FfBuNAZ2C121TK4yDV2NW11%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;619&quot; height=&quot;261&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러내용]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A&amp;nbsp;non-null&amp;nbsp;String&amp;nbsp;must&amp;nbsp;be&amp;nbsp;provided&amp;nbsp;to&amp;nbsp;a&amp;nbsp;Text&amp;nbsp;widget. &lt;br /&gt;'package:flutter/src/widgets/text.dart': &lt;br /&gt;Failed&amp;nbsp;assertion:&amp;nbsp;line&amp;nbsp;370&amp;nbsp;pos&amp;nbsp;10:&amp;nbsp;'data&amp;nbsp;!=&amp;nbsp;null'&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;말그대로 null 에러가 났다. 근데 null 에러가 날 수가 없는 상황이고 앞에 null체크를 해줘도 같은 에러가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸로 삽질을 한거에 대해 포스팅을 한다. (별거아니지만 헿)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;import 'package:bmi_calculator/components/bottom_button.dart';
import 'package:flutter/material.dart';

import '../components/reusable_card.dart';
import '../constants.dart';

class ResultsPage extends StatelessWidget {
  final String bmiResult;
  final String resultText;
  final String interpretation;

  ResultsPage(
      {@required this.bmiResult,
      @required this.resultText,
      @required this.interpretation});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI CALCULATOR'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: &amp;lt;Widget&amp;gt;[
          Expanded(
              child: Container(
            padding: EdgeInsets.all(15.0),
            alignment: Alignment.bottomLeft,
            child: Text(
              'Your Result',
              style: kTitleTextStyle,
            ),
          )),
          Expanded(
            flex: 5,
            child: ReusableCard(
              colour: kActiveCardColour,
              cardChild: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: &amp;lt;Widget&amp;gt;[
                  Text(
                    resultText,
                    style: kResultTextStyle,
                  ),
                  Text(
                    bmiResult,
                    style: kBMITextStyle,
                  ),
                  Text(
                    interpretation,
                    style: kBodyTextStyle,
                    textAlign: TextAlign.center,
                  )
                ],
              ),
            ),
          ),
          BottomButton(
              onTap: () {
                Navigator.pop(context);
              },
              buttonTitle: 'RE-CALCULATE')
        ],
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;lisp&quot;&gt;&lt;code&gt;BottomButton(
  buttonTitle: 'CALCULATE',
  onTap: () {
    CalculatorBrain calc = CalculatorBrain(height: height, weight: weight);
    Navigator.push(
        context,
        MaterialPageRoute(
            builder: (context) =&amp;gt; ResultsPage(
                  bmiResult: calc.calculateBMI(),
                  resultText: calc.getResult(),
                  interpretation: calc.getInterpretation(),
                )));
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원인은 이 ResutsPage 위젯 이전에 InputPage에서 생성자를 위와 같이 넘겨주고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;class ResultsPage extends StatelessWidget {
  final String bmiResult;
  final String resultText;
  final String interpretation;

  ResultsPage(
      {@required this.bmiResult,
      @required this.resultText,
      @required this.interpretation});&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;dts&quot;&gt;&lt;code&gt;children: &amp;lt;Widget&amp;gt;[
  Text(
    resultText,
    style: kResultTextStyle,
  ),
  Text(
    bmiResult,
    style: kBMITextStyle,
  ),
  Text(
    interpretation,
    style: kBodyTextStyle,
    textAlign: TextAlign.center,
  )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ResultPage는 매개변수로 받은 값을 Text에 세팅해주는 로직을 추가로 구현하고 HotReload를 돌렸는데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ResultPage에서 HotReload 가 되어서 생성자로 값을 못받은 상태이므로 Text에 세팅할때 null 에러가 나는게 원인이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HotReload 는 플러터에서 매우 좋은 기능이지만 단순 화면갱신말고 로직이 바뀔때는 재컴파일 시작을 해주는 습관도 필요할 것 같다.&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>A non-null String must be provided to a Text widget. 'package:flutter/src/widgets/text.dart': Failed assertion: line 370 pos 10: 'data != null'</category>
      <category>flutter A non-null String must be provided to a Text widget. 'package:flutter/src/widgets/text.dart': Failed assertion: line 370 pos 10: 'data != null'</category>
      <category>flutter Failed assertion: line 370 pos 10: 'data != null'</category>
      <category>flutter hot reload null error</category>
      <category>Hot Reload 시 null error</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/691</guid>
      <comments>https://youngest-programming.tistory.com/691#entry691comment</comments>
      <pubDate>Tue, 12 Apr 2022 21:05:41 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 컴파일 에러 The overflowing RenderFlex has an orientation of Axis.vertical.The edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and black striped pattern. This is usually caused by the contents bei..</title>
      <link>https://youngest-programming.tistory.com/689</link>
      <description>&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;624&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lm8u8/btryQ0tA8Fm/z6hyM9K5KKuZqxOzOMeIik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lm8u8/btryQ0tA8Fm/z6hyM9K5KKuZqxOzOMeIik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lm8u8/btryQ0tA8Fm/z6hyM9K5KKuZqxOzOMeIik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flm8u8%2FbtryQ0tA8Fm%2Fz6hyM9K5KKuZqxOzOMeIik%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;624&quot; height=&quot;263&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;263&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1822&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDBCR1/btryUeRGNWx/c6glRjg4pEmFA4GVXBRrTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDBCR1/btryUeRGNWx/c6glRjg4pEmFA4GVXBRrTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDBCR1/btryUeRGNWx/c6glRjg4pEmFA4GVXBRrTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDBCR1%2FbtryUeRGNWx%2Fc6glRjg4pEmFA4GVXBRrTK%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;1822&quot; height=&quot;263&quot; data-origin-width=&quot;1822&quot; data-origin-height=&quot;263&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;The&amp;nbsp;overflowing&amp;nbsp;RenderFlex&amp;nbsp;has&amp;nbsp;an&amp;nbsp;orientation&amp;nbsp;of&amp;nbsp;Axis.vertical.The&amp;nbsp;edge&amp;nbsp;of&amp;nbsp;the&amp;nbsp;RenderFlex&amp;nbsp;that&amp;nbsp;is&amp;nbsp;overflowing&amp;nbsp;has&amp;nbsp;been&amp;nbsp;marked&amp;nbsp;in&amp;nbsp;the&amp;nbsp;rendering&amp;nbsp;with&amp;nbsp;a&amp;nbsp;yellow&amp;nbsp;and&amp;nbsp;black&amp;nbsp;striped&amp;nbsp;pattern.&amp;nbsp;This&amp;nbsp;is&amp;nbsp;usually&amp;nbsp;caused&amp;nbsp;by&amp;nbsp;the&amp;nbsp;contents&amp;nbsp;being&amp;nbsp;too&amp;nbsp;big&amp;nbsp;for&amp;nbsp;the&amp;nbsp;RenderFlex.&lt;/p&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;RenderFlex의&amp;nbsp;방향은&amp;nbsp;Axis.vertical입니다.&amp;nbsp;넘치고&amp;nbsp;있는&amp;nbsp;RenderFlex의&amp;nbsp;가장자리는&amp;nbsp;렌더링에서&amp;nbsp;노란색과&amp;nbsp;검은색&amp;nbsp;줄무늬&amp;nbsp;패턴으로&amp;nbsp;표시되었습니다.&amp;nbsp;이는&amp;nbsp;일반적으로&amp;nbsp;내용이&amp;nbsp;RenderFlex에&amp;nbsp;비해&amp;nbsp;너무&amp;nbsp;커서&amp;nbsp;발생합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;해결하는 방법은 보통 코드를 잘못짠경우나 기존의 Colum 이 너무 길어서 생기는 문제일 수 있으므로 Colum을 다음과 같이&amp;nbsp;&lt;b&gt;SingleChildScrollView로&amp;nbsp;&lt;/b&gt;Wrapping 해준다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649511250444&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SingleChildScrollView(
    child: Column(
      ...
    ),
),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649511119490&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;Overflowing RenderFlex has an orientation of Axis.vertical&quot; data-og-description=&quot;I am not able to scroll on my form, how do I solve the scrolling problem: Code and error below. Error from the terminal: ════════ Exception caught by rendering library ════════════════════════&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&quot; data-og-url=&quot;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/34X6s/hyNYCpN8Wm/In9UrkA2N5t7kgj0ubqKW0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/67476311/overflowing-renderflex-has-an-orientation-of-axis-vertical&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/34X6s/hyNYCpN8Wm/In9UrkA2N5t7kgj0ubqKW0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;Overflowing RenderFlex has an orientation of Axis.vertical&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I am not able to scroll on my form, how do I solve the scrolling problem: Code and error below. Error from the terminal: ════════ Exception caught by rendering library ════════════════════════&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter error he edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and black striped pattern. This is usually caused by the contents being too big for the RenderFlex.</category>
      <category>flutter The overflowing RenderFlex has an orientation of Axis.vertical.</category>
      <category>he edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and black striped pattern. This is usually caused by the contents being too big for the RenderFlex.</category>
      <category>The overflowing RenderFlex has an orientation of Axis.vertical.</category>
      <category>플러터 에러</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/689</guid>
      <comments>https://youngest-programming.tistory.com/689#entry689comment</comments>
      <pubDate>Sat, 9 Apr 2022 22:35:08 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 플러터 텍스트 베이스라인 맞추기 (하단 정렬, CrossAxisAlignment.baseline, textBaseline)</title>
      <link>https://youngest-programming.tistory.com/687</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;&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;620&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0gi2v/btryxIrFaHD/c63asS1h7Q3Ik1UIp4QVvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0gi2v/btryxIrFaHD/c63asS1h7Q3Ik1UIp4QVvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0gi2v/btryxIrFaHD/c63asS1h7Q3Ik1UIp4QVvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0gi2v%2FbtryxIrFaHD%2Fc63asS1h7Q3Ik1UIp4QVvK%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;620&quot; height=&quot;259&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;259&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;안드로이드에서는 제약뷰로 제약을 주면 되었는데 플러터에서는 선언형 UI 방식이기도해서 구현 방법이 좀 다르다.&lt;/p&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;crossAxisAlignment:&amp;nbsp;CrossAxisAlignment.baseline, &lt;/b&gt;&lt;br /&gt;&lt;b&gt;textBaseline: TextBaseline.alphabetic,&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 사용해서 크기가 다른 Text위젯인 &lt;b&gt;100과 cm&lt;/b&gt;를 가운데 정렬 + cm는 숫자 100과 더 크기가 큰 위젯인 100의 하단 베이스라인에 맞추는것을 구현했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;베이스라인은 이렇게 서로 다른 위젯, 폰트의 기준을 잡아주는 역할을 한다고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고&lt;b&gt; textBaseLine&lt;/b&gt;은 알파벳을 기준선으로하는 &lt;b&gt;alphabetic&lt;/b&gt;과 텍스트영역 최하단 기준인 &lt;b&gt;ideographic&lt;/b&gt;가 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1649143407877&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Expanded(
                child: ReusableCard(
              colour: kActiveCardColour,
              cardChild: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: &amp;lt;Widget&amp;gt;[
                  Text(
                    &quot;HEIGHT&quot;,
                    style: kLabelTextStyle,
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.baseline,
                    textBaseline: TextBaseline.alphabetic,
                    children: &amp;lt;Widget&amp;gt;[
                      Text('100', style: kNumberTextStyle),
                      Text(
                        'cm',
                        style: kLabelTextStyle,
                      )
                    ],
                  )
                ],
              ),
            )),&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;385&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nDnhu/btryq5hUFYM/7YR9fsjQUYgAGpnnxgcMPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nDnhu/btryq5hUFYM/7YR9fsjQUYgAGpnnxgcMPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nDnhu/btryq5hUFYM/7YR9fsjQUYgAGpnnxgcMPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnDnhu%2Fbtryq5hUFYM%2F7YR9fsjQUYgAGpnnxgcMPk%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;385&quot; height=&quot;661&quot; data-origin-width=&quot;385&quot; data-origin-height=&quot;661&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter CrossAxisAlignment.baseline</category>
      <category>flutter textBaseline</category>
      <category>플러터 CrossAxisAlignment.baseline</category>
      <category>플러터 textBaseline</category>
      <category>플러터 베이스라인 맞추기</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/687</guid>
      <comments>https://youngest-programming.tistory.com/687#entry687comment</comments>
      <pubDate>Tue, 5 Apr 2022 16:30:32 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Function 클래스와 예제</title>
      <link>https://youngest-programming.tistory.com/686</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6JvC/btrysDeAB10/ghTNAyfzMUfpkVIksJJE6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6JvC/btrysDeAB10/ghTNAyfzMUfpkVIksJJE6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6JvC/btrysDeAB10/ghTNAyfzMUfpkVIksJJE6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6JvC%2FbtrysDeAB10%2FghTNAyfzMUfpkVIksJJE6k%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;622&quot; height=&quot;258&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;258&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;/p&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://api.flutter.dev/flutter/dart-core/Function-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.flutter.dev/flutter/dart-core/Function-class.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649138810367&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;Function class - dart:core library - Dart API&quot; data-og-description=&quot;The base class for all function types. The run-time type of a function object is subtype of a function type, and as such, a subtype of Function. Constructors Function() Properties hashCode &amp;rarr; int A hash code value that is compatible with operator==. read-&quot; data-og-host=&quot;api.flutter.dev&quot; data-og-source-url=&quot;https://api.flutter.dev/flutter/dart-core/Function-class.html&quot; data-og-url=&quot;https://api.flutter.dev/flutter/dart-core/Function-class.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/dart-core/Function-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.flutter.dev/flutter/dart-core/Function-class.html&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;Function class - dart:core library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The base class for all function types. The run-time type of a function object is subtype of a function type, and as such, a subtype of Function. Constructors Function() Properties hashCode &amp;rarr; int A hash code value that is compatible with operator==. read-&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfyDaQ/btryxcT6dQ0/K51IjozqlqFrWfkBZxiKa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfyDaQ/btryxcT6dQ0/K51IjozqlqFrWfkBZxiKa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfyDaQ/btryxcT6dQ0/K51IjozqlqFrWfkBZxiKa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfyDaQ%2FbtryxcT6dQ0%2FK51IjozqlqFrWfkBZxiKa1%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;912&quot; height=&quot;768&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 모든 함수의 기본이 되는 타입이 되는 Function 클래스가 있으며 함수형 프로그래밍이기 때문에 함수도 변수에 담을 수가 있다.&lt;/p&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;pre id=&quot;code_1649139333625&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() {
  int result = cal(2, 5, multiply);
  print(result);
}

int cal(int n1, int n2, Function func) {
  return func(n1, n2);
}

int add(int n1, int n2) {
  return n1 + n2;
}

int multiply(int n1, int n2) {
  return n1 * n2;
}&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;1380&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhQDYJ/btryvu8NQHP/So9wnq0CJdkIdo1jRcunf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhQDYJ/btryvu8NQHP/So9wnq0CJdkIdo1jRcunf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhQDYJ/btryvu8NQHP/So9wnq0CJdkIdo1jRcunf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhQDYJ%2Fbtryvu8NQHP%2FSo9wnq0CJdkIdo1jRcunf1%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;1380&quot; height=&quot;518&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;518&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;pre id=&quot;code_1649139181121&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() {
  int result = cal(2, 5, add);
  print(result);
}

final Function cal = (int n1, int n2, Function func) {
  return func(n1, n2);
};

int add(int n1, int n2) {
  return n1 + n2;
}

int multiply(int n1, int n2) {
  return n1 * n2;
}&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;1225&quot; data-origin-height=&quot;494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XBvXb/btryuXbWnBP/XhWQVYQG1zmHhW6xpEDcR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XBvXb/btryuXbWnBP/XhWQVYQG1zmHhW6xpEDcR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XBvXb/btryuXbWnBP/XhWQVYQG1zmHhW6xpEDcR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXBvXb%2FbtryuXbWnBP%2FXhWQVYQG1zmHhW6xpEDcR1%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;1225&quot; height=&quot;494&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Function에 선언된 Function 이름인 add Function을 매개변수로 전달하여 이 매개변수로 해당 함수를 호출할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 함수도 Function 변수타입으로 저장할 수가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 클래스 객체 테스트다.&lt;/p&gt;
&lt;pre id=&quot;code_1649139839109&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() {
  Game game = Game(state: play);
  print(game.state);
  game.state = stop;
  print(game.state);
}

class Game {
  Game({this.state});

  Function? state;
}

void play() {
  print('play ~~~~');
}

void stop() {
  print('stop !!!!!');
}&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;1322&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCCEz4/btrysCtc36M/buOHKoBoC291723YHVUIzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCCEz4/btrysCtc36M/buOHKoBoC291723YHVUIzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCCEz4/btrysCtc36M/buOHKoBoC291723YHVUIzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCCEz4%2FbtrysCtc36M%2FbuOHKoBoC291723YHVUIzk%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;1322&quot; height=&quot;541&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;541&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649140020702&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour, this.cardChild, this.onPress});

  final Color colour;
  final Widget cardChild;
  final Function onPress;

  @override
  Widget build(BuildContext context) {
      return GestureDetector(
      onTap: onPress,
      child: Container(
        child: cardChild,
        margin: EdgeInsets.all(15.0),
        decoration: BoxDecoration(
            // 생성자로 받은 컬러 사용
            color: colour,
            borderRadius: BorderRadius.circular(10.0)),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1649140194277&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  onPress: () {
                    setState(() {
                      selectedGender = Gender.male;
                    });
                  },
                  colour: selectedGender == Gender.male
                      ? activeCardColour
                      : inactiveCardColour,
                  cardChild: IconContent(
                    icon: FontAwesomeIcons.mars,
                    label: 'MALE',
                  ),
                )),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ReusableCard 클래스를 만들어 Function을 활용하여 GestureDetector의 onPress 콜백함수를 외부에서 매개변수를 받아서 결과를 리턴해주는 기능을 구현한 예제이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 플러터의 Function 클래스를 예제를 통해 학습해봤다.&lt;/p&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter Function class</category>
      <category>Function flutter</category>
      <category>막내의막무가내 플러터 flutter</category>
      <category>플러터 Function</category>
      <category>플러터 Function 예제</category>
      <category>플러터 Function 클래스 사용법 예제</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/686</guid>
      <comments>https://youngest-programming.tistory.com/686#entry686comment</comments>
      <pubDate>Tue, 5 Apr 2022 15:31:56 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates)</title>
      <link>https://youngest-programming.tistory.com/685</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WMoLe/btrynhPQrEs/UIK2tusUuU0kNjfBpjITmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WMoLe/btrynhPQrEs/UIK2tusUuU0kNjfBpjITmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WMoLe/btrynhPQrEs/UIK2tusUuU0kNjfBpjITmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWMoLe%2FbtrynhPQrEs%2FUIK2tusUuU0kNjfBpjITmk%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;623&quot; height=&quot;259&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;259&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;&lt;a href=&quot;https://youngest-programming.tistory.com/682&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/682&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649052877342&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/624 [Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode) [이전학습] https://youngest-programming.t..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/682&quot; data-og-url=&quot;https://youngest-programming.tistory.com/682&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b1omAS/hyNUuMm7lV/ufxv3xKkTJzjdFZh1ha0Pk/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/y6Mqi/hyNVVhg62R/Mmtx5byLpl0Cu0kEYpmKw1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/cm91FX/hyNUAy4FpP/qeReepjFm7vQwmTa1ND0tK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/682&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/682&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b1omAS/hyNUuMm7lV/ufxv3xKkTJzjdFZh1ha0Pk/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/y6Mqi/hyNVVhg62R/Mmtx5byLpl0Cu0kEYpmKw1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/cm91FX/hyNUAy4FpP/qeReepjFm7vQwmTa1ND0tK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/624 [Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode) [이전학습] https://youngest-programming.t..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649052868219&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649052868220&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;121. BMI Calculator - A Beautiful Health App&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;BMI 계산기 앱을 만들거다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커스텀 위젯을 만들어보고 UI를 더 깊이 알아보는 강의가 될 것 이다.&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;bmi-calc-demo.gif&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvPE1u/btryoweC1Kq/rQ9xGUnrOi6i0YUnzy8Unk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvPE1u/btryoweC1Kq/rQ9xGUnrOi6i0YUnzy8Unk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvPE1u/btryoweC1Kq/rQ9xGUnrOi6i0YUnzy8Unk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dvPE1u/btryoweC1Kq/rQ9xGUnrOi6i0YUnzy8Unk/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;304&quot; height=&quot;604&quot; data-filename=&quot;bmi-calc-demo.gif&quot; data-origin-width=&quot;304&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;122. How to Use Flutter Themes&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;안드로이드에서 Theme를 사용하는 것 처럼 플러터에도 Theme가 있고 &lt;b&gt;ThemeData&lt;/b&gt; 클래스를 사용하면된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 테마를 잘 설정하면 기본속성들에 대한 모듈화가 되고 추가 코드도 필요 없어지므로 개발이 편리해진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
          primaryColor: Color(0xFF0A0E21),
          scaffoldBackgroundColor: Color(0xFF0A0E21),
          accentColor: Colors.purple,
          textTheme: TextTheme(
              bodyText2: TextStyle(
            color: Colors.white,
          ))),
      home: InputPage(),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 내가 커스텀으로 테마를 설정할 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649055552603&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        primaryColor: Color(0xFF0A0E21),
        scaffoldBackgroundColor: Color(0xFF0A0E21),
      ),
      home: InputPage(),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고&lt;b&gt; copyWith()&lt;/b&gt; 를 사용하여 기존의 다크테마를 기반으로 부분 커스텀도 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649055769248&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

import 'input_page.dart';

void main() =&amp;gt; runApp(BMICalculator());

class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        primaryColor: Color(0xFF0A0E21),
        scaffoldBackgroundColor: Color(0xFF0A0E21),
      ),
      home: InputPage(),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1649055784826&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI CALCULATOR'),
      ),
      body: Center(
        child: Text('Body Text'),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 input_page 코드를 main과 분리하였다.&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;398&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPWnPi/btryro7Q2MQ/noKCRfl0gnoXbL3D3KZb20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPWnPi/btryro7Q2MQ/noKCRfl0gnoXbL3D3KZb20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPWnPi/btryro7Q2MQ/noKCRfl0gnoXbL3D3KZb20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPWnPi%2Fbtryro7Q2MQ%2FnoKCRfl0gnoXbL3D3KZb20%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;398&quot; height=&quot;740&quot; data-origin-width=&quot;398&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;123. How to Refactor Flutter Widgets&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;367&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nv4uF/btryq6M01d1/mK5wrAcIsMgFU1bA437zv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nv4uF/btryq6M01d1/mK5wrAcIsMgFU1bA437zv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nv4uF/btryq6M01d1/mK5wrAcIsMgFU1bA437zv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNv4uF%2Fbtryq6M01d1%2FmK5wrAcIsMgFU1bA437zv1%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;367&quot; height=&quot;668&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1649057170068&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: Container(
                  margin: EdgeInsets.all(15.0),
                  decoration: BoxDecoration(
                      color: Color(0xFF1D1E33),
                      borderRadius: BorderRadius.circular(10.0)),
                )),
                Expanded(
                    child: Container(
                  margin: EdgeInsets.all(15.0),
                  decoration: BoxDecoration(
                      color: Color(0xFF1D1E33),
                      borderRadius: BorderRadius.circular(10.0)),
                ))
              ],
            )),
            Expanded(
                child: Container(
              margin: EdgeInsets.all(15.0),
              decoration: BoxDecoration(
                  color: Color(0xFF1D1E33),
                  borderRadius: BorderRadius.circular(10.0)),
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: Container(
                  margin: EdgeInsets.all(15.0),
                  decoration: BoxDecoration(
                      color: Color(0xFF1D1E33),
                      borderRadius: BorderRadius.circular(10.0)),
                )),
                Expanded(
                    child: Container(
                  margin: EdgeInsets.all(15.0),
                  decoration: BoxDecoration(
                      color: Color(0xFF1D1E33),
                      borderRadius: BorderRadius.circular(10.0)),
                ))
              ],
            )),
          ],
        ));
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 샘플 앱 디자인 틀대로 위젯을 구현해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드로 따지면 카드뷰 같은 둥근 위젯을 구현할떄 BoxDecoration을 사용한다.&lt;/p&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;그런데 중복되는 Container 코드가 너무 많다. 리펙토링이 필요하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w3LFM/btryqi72WRw/IzzIklYrYdQKokzOKNPn6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w3LFM/btryqi72WRw/IzzIklYrYdQKokzOKNPn6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w3LFM/btryqi72WRw/IzzIklYrYdQKokzOKNPn6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw3LFM%2Fbtryqi72WRw%2FIzzIklYrYdQKokzOKNPn6k%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;763&quot; height=&quot;722&quot; data-origin-width=&quot;763&quot; data-origin-height=&quot;722&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;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649057463180&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(child: ReusableCard()),
                Expanded(child: ReusableCard())
              ],
            )),
            Expanded(child: ReusableCard()),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(child: ReusableCard()),
                Expanded(child: ReusableCard())
              ],
            )),
          ],
        ));
  }
}

class ReusableCard extends StatelessWidget {
  const ReusableCard({
    Key key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(15.0),
      decoration: BoxDecoration(
          color: Color(0xFF1D1E33), borderRadius: BorderRadius.circular(10.0)),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ReusableCard라는 이름으로 리펙토링하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649057731057&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour});

  Color colour;

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(15.0),
      decoration: BoxDecoration(
          // 생성자로 받은 컬러 사용
          color: colour,
          borderRadius: BorderRadius.circular(10.0)),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1649057946160&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Expanded(
                    child: ReusableCard(
                  colour: Color(0xFF1D1E33),
                ))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 ReusableCard 클래스에서 색상변경을 위한 생성자를 커스텀해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@required 키워드에 대해서도 배웠다.&amp;nbsp; 이거를 설정안하면 사용하는 곳에서 color 매개변수를 안넣어도 린트오류표시가 안뜬다...&lt;/p&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;812&quot; data-origin-height=&quot;409&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bp6Re/btryq5UTXNk/IVeWpsubl0vqt2jXgPv4s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bp6Re/btryq5UTXNk/IVeWpsubl0vqt2jXgPv4s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bp6Re/btryq5UTXNk/IVeWpsubl0vqt2jXgPv4s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBp6Re%2Fbtryq5UTXNk%2FIVeWpsubl0vqt2jXgPv4s0%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;812&quot; height=&quot;409&quot; data-origin-width=&quot;812&quot; data-origin-height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 stateless한 클래스에 불변적인 속성만 들어가는게 보통 원칙이라서 클래스에 린트표시가 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1649058122585&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour});

  final Color colour;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 Color colour에 final로 해주도록 한다.&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;369&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K4poW/btryrVYJxuC/mp308P1mdwHngCZjVcRtM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K4poW/btryrVYJxuC/mp308P1mdwHngCZjVcRtM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K4poW/btryrVYJxuC/mp308P1mdwHngCZjVcRtM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK4poW%2FbtryrVYJxuC%2Fmp308P1mdwHngCZjVcRtM0%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;369&quot; height=&quot;650&quot; data-origin-width=&quot;369&quot; data-origin-height=&quot;650&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;124. [Dart] Final vs. Const&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;Final 과 Const 의 차이점에 대해 알아봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 둘의 공통점은 불변(immutable)의 성질을 가지고 있어 선언한 값을 변경할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차이점은 const 는 컴파일 타임에 상수를 설정하고 final 은 런타임시에 결정되는 값도 상수로 설정할 수 있다는 점이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1649059523106&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;main() { 
	// error const 는 실행시에 결정되는 값을 설정할 수 없다. 정해진 값만 가능하다.
	const DateTime now1 = new DateTime.now(); 
    // final 은 실행시에 결정되는 값도 설정할 수 있다.
	final DateTime nw = new DateTime.now();  
}
출처: https://skymin2.tistory.com/52 [생계형 개발자]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배운내용을 바탕으로 코드를 리펙토링 해주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649059739187&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

const bottomContainerHeight = 80.0;
const activeCardColour = Color(0xFF1D1E33);
const bottomContainerColour = Color(0xFFEB1555);

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                )),
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                ))
              ],
            )),
            Expanded(
                child: ReusableCard(
              colour: activeCardColour,
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                )),
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                ))
              ],
            )),
            Container(
              color: bottomContainerColour,
              margin: EdgeInsets.only(top: 10.0),
              width: double.infinity,
              height: bottomContainerHeight,
            )
          ],
        ));
  }
}

class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour});

  final Color colour;

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.all(15.0),
      decoration: BoxDecoration(
          // 생성자로 받은 컬러 사용
          color: colour,
          borderRadius: BorderRadius.circular(10.0)),
    );
  }
}&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;376&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNyBDc/btryrqELm1M/zy7BEe9XkQUE7p2FkG4Yy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNyBDc/btryrqELm1M/zy7BEe9XkQUE7p2FkG4Yy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNyBDc/btryrqELm1M/zy7BEe9XkQUE7p2FkG4Yy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNyBDc%2FbtryrqELm1M%2Fzy7BEe9XkQUE7p2FkG4Yy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;660&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;660&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;125. Creating Custom Flutter Widgets&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 상단 두개의 남/녀 위젯을 구현했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 124에서 했던것처럼 공통적인 부분이 많아 위젯을 모듈화 시켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 필요한 UI 요소를 위해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;yaml파일에 font_awesome_flutter 디펜던시를 추가해줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1649064911364&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  font_awesome_flutter: ^8.4.0&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 ReusableCard 위젯 클래스에 이 안에 위젯을 하나 더 담기위해 cardChild 위젯속성을 추가했다.&lt;/p&gt;
&lt;pre id=&quot;code_1649064990116&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour, this.cardChild});

  final Color colour;
  final Widget cardChild;

  @override
  Widget build(BuildContext context) {
    return Container(
      child: cardChild,
      margin: EdgeInsets.all(15.0),
      decoration: BoxDecoration(
          // 생성자로 받은 컬러 사용
          color: colour,
          borderRadius: BorderRadius.circular(10.0)),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cardChild 에 담을 아이콘과 텍스트가 위아래로 들어갈 공통 위젯 클래스 IconContent를 만들었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649065032177&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

const labelTextStyle = TextStyle(
  fontSize: 18.0,
  color: Color(0xFF8D8E98),
);

class IconContent extends StatelessWidget {
  IconContent({this.icon, this.label});

  final IconData icon;
  final String label;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: &amp;lt;Widget&amp;gt;[
        Icon(
          icon,
          size: 80.0,
        ),
        SizedBox(
          height: 15.0,
        ),
        Text(
          label,
          style: labelTextStyle,
        )
      ],
    );
  }
}&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;pre id=&quot;code_1649065063356&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import 'icon_content.dart';
import 'reusable_card.dart';

const bottomContainerHeight = 80.0;
const activeCardColour = Color(0xFF1D1E33);
const bottomContainerColour = Color(0xFFEB1555);

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                  cardChild: IconContent(
                    icon: FontAwesomeIcons.mars,
                    label: 'MALE',
                  ),
                )),
                Expanded(
                    child: ReusableCard(
                        colour: activeCardColour,
                        cardChild: IconContent(
                          icon: FontAwesomeIcons.venus,
                          label: 'FEMALE',
                        )))
              ],
            )),
            Expanded(
                child: ReusableCard(
              colour: activeCardColour,
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                )),
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                ))
              ],
            )),
            Container(
              color: bottomContainerColour,
              margin: EdgeInsets.only(top: 10.0),
              width: double.infinity,
              height: bottomContainerHeight,
            )
          ],
        ));
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;749&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UN8KA/btryph9RAuk/Zgr4sTwOpiWMK0A3kbowAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UN8KA/btryph9RAuk/Zgr4sTwOpiWMK0A3kbowAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UN8KA/btryph9RAuk/Zgr4sTwOpiWMK0A3kbowAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUN8KA%2Fbtryph9RAuk%2FZgr4sTwOpiWMK0A3kbowAK%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;396&quot; height=&quot;749&quot; data-origin-width=&quot;396&quot; data-origin-height=&quot;749&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;126. The GestureDetector Widget&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;GestureDetector 위젯을 사용해서 onTap 이벤트를 통해 남/녀 버튼을 눌렀을때 색상이 변하는 로직을 구현하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1649132563049&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import 'icon_content.dart';
import 'reusable_card.dart';

const bottomContainerHeight = 80.0;
const activeCardColour = Color(0xFF1D1E33);
const inactiveCardColour = Color(0xFF111328);
const bottomContainerColour = Color(0xFFEB1555);

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  Color maleCardColour = inactiveCardColour;
  Color femaleCardColour = inactiveCardColour;

  // 1 = male, 2= female
  void updateColour(int gender) {
    // male card pressed
    if (gender == 1) {
      if (maleCardColour == inactiveCardColour) {
        maleCardColour = activeCardColour;
        femaleCardColour = inactiveCardColour;
      } else {
        maleCardColour = inactiveCardColour;
      }
    }
    if (gender == 2) {
      if (femaleCardColour == inactiveCardColour) {
        femaleCardColour = activeCardColour;
        maleCardColour = inactiveCardColour;
      } else {
        femaleCardColour = inactiveCardColour;
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: GestureDetector(
                  onTap: () {
                    setState(() {
                      updateColour(1);
                    });
                  },
                  child: ReusableCard(
                    colour: maleCardColour,
                    cardChild: IconContent(
                      icon: FontAwesomeIcons.mars,
                      label: 'MALE',
                    ),
                  ),
                )),
                Expanded(
                    child: GestureDetector(
                  onTap: () {
                    setState(() {
                      updateColour(2);
                    });
                  },
                  child: ReusableCard(
                      colour: femaleCardColour,
                      cardChild: IconContent(
                        icon: FontAwesomeIcons.venus,
                        label: 'FEMALE',
                      )),
                ))
              ],
            )),
            Expanded(
                child: ReusableCard(
              colour: activeCardColour,
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                )),
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                ))
              ],
            )),
            Container(
              color: bottomContainerColour,
              margin: EdgeInsets.only(top: 10.0),
              width: double.infinity,
              height: bottomContainerHeight,
            )
          ],
        ));
  }
}&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;401&quot; data-origin-height=&quot;747&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mPUQK/btrythuqyNY/pDXof7vHln4UkeXrcPEXlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mPUQK/btrythuqyNY/pDXof7vHln4UkeXrcPEXlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mPUQK/btrythuqyNY/pDXof7vHln4UkeXrcPEXlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmPUQK%2FbtrythuqyNY%2FpDXof7vHln4UkeXrcPEXlk%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;401&quot; height=&quot;747&quot; data-origin-width=&quot;401&quot; data-origin-height=&quot;747&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;127. [Dart] Enums&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;Enum에 대해 배웠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enum은 숫자로 표현하던 것들을 사람이 이해하기 쉽게 선언해줄 수 있어 코드 가독성이 좋아진다는 장점이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 1, 2 로 male , female로 구분했던 것을 Enum을 통해 가독성을 높여줬다.&lt;/p&gt;
&lt;pre id=&quot;code_1649136762269&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import 'icon_content.dart';
import 'reusable_card.dart';

const bottomContainerHeight = 80.0;
const activeCardColour = Color(0xFF1D1E33);
const inactiveCardColour = Color(0xFF111328);
const bottomContainerColour = Color(0xFFEB1555);

enum Gender { male, female }

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  Color maleCardColour = inactiveCardColour;
  Color femaleCardColour = inactiveCardColour;

  // 1 = male, 2= female
  void updateColour(Gender selectedGender) {
    // male card pressed
    if (selectedGender == Gender.male) {
      if (maleCardColour == inactiveCardColour) {
        maleCardColour = activeCardColour;
        femaleCardColour = inactiveCardColour;
      } else {
        maleCardColour = inactiveCardColour;
      }
    }
    if (selectedGender == Gender.female) {
      if (femaleCardColour == inactiveCardColour) {
        femaleCardColour = activeCardColour;
        maleCardColour = inactiveCardColour;
      } else {
        femaleCardColour = inactiveCardColour;
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: GestureDetector(
                  onTap: () {
                    setState(() {
                      updateColour(Gender.male);
                    });
                  },
                  child: ReusableCard(
                    colour: maleCardColour,
                    cardChild: IconContent(
                      icon: FontAwesomeIcons.mars,
                      label: 'MALE',
                    ),
                  ),
                )),
                Expanded(
                    child: GestureDetector(
                  onTap: () {
                    setState(() {
                      updateColour(Gender.female);
                    });
                  },
                  child: ReusableCard(
                      colour: femaleCardColour,
                      cardChild: IconContent(
                        icon: FontAwesomeIcons.venus,
                        label: 'FEMALE',
                      )),
                ))
              ],
            )),
            Expanded(
                child: ReusableCard(
              colour: activeCardColour,
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                )),
                Expanded(
                    child: ReusableCard(
                  colour: activeCardColour,
                ))
              ],
            )),
            Container(
              color: bottomContainerColour,
              margin: EdgeInsets.only(top: 10.0),
              width: double.infinity,
              height: bottomContainerHeight,
            )
          ],
        ));
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;128. [Dart] Ternary Operator&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;3항 연산자에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 if else 문으로 분기처리하던것을 리펙토링하였다.&lt;/p&gt;
&lt;pre id=&quot;code_1649137430135&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: GestureDetector(
                  onTap: () {
                    setState(() {
                      selectedGender = Gender.male;
                    });
                  },
                  child: ReusableCard(
                    colour: selectedGender == Gender.male
                        ? activeCardColour
                        : inactiveCardColour,
                    cardChild: IconContent(
                      icon: FontAwesomeIcons.mars,
                      label: 'MALE',
                    ),
                  ),
                )),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;129. [Dart] Functions as First Order Objects&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;Function 객체에 대해 배웠다. 플러터는 함수형언어이기도 해서 함수도 변수처럼 할당할 수가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를 담을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 GestureDector 클래스를 ReusableCard 커스텀 위젯에 넣어주고 생성자를 통해 메인에서 불러오게끔 리펙토링을 하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러터에서 위젯에 콜백을 구현한거같은데 되게 쉽게 구현할 수 있었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649138303713&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class ReusableCard extends StatelessWidget {
  // @required로 색상값 매개변수 필요하다고 알려줌 (린트로 잡힘)
  ReusableCard({@required this.colour, this.cardChild, this.onPress});

  final Color colour;
  final Widget cardChild;
  final Function onPress;

  @override
  Widget build(BuildContext context) {
      return GestureDetector(
      onTap: onPress,
      child: Container(
        child: cardChild,
        margin: EdgeInsets.all(15.0),
        decoration: BoxDecoration(
            // 생성자로 받은 컬러 사용
            color: colour,
            borderRadius: BorderRadius.circular(10.0)),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1649138436383&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body: Column(
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  onPress: () {
                    setState(() {
                      selectedGender = Gender.male;
                    });
                  },
                  colour: selectedGender == Gender.male
                      ? activeCardColour
                      : inactiveCardColour,
                  cardChild: IconContent(
                    icon: FontAwesomeIcons.mars,
                    label: 'MALE',
                  ),
                )),
                Expanded(
                    child: ReusableCard(
                        onPress: () {
                          setState(() {
                            selectedGender = Gender.female;
                          });
                        },
                        colour: selectedGender == Gender.female
                            ? activeCardColour
                            : inactiveCardColour,
                        cardChild: IconContent(
                          icon: FontAwesomeIcons.venus,
                          label: 'FEMALE',
                        )))
              ],&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;130. The Flutter Slider Widget&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;Slider Widget 사용법에 대해 배웠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/Slider-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.flutter.dev/flutter/material/Slider-class.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649144589779&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;Slider class - material library - Dart API&quot; data-og-description=&quot;A Material Design slider. Used to select from a range of values. The Sliders value is part of the Stateful widget subclass to change the value setState was called. To create a local project with this code sample, run: flutter create --sample=material.Slide&quot; data-og-host=&quot;api.flutter.dev&quot; data-og-source-url=&quot;https://api.flutter.dev/flutter/material/Slider-class.html&quot; data-og-url=&quot;https://api.flutter.dev/flutter/material/Slider-class.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/XF60B/hyNVWH7XM5/a4iUG1RNQvGM0UwyRWWhL1/img.png?width=596&amp;amp;height=236&amp;amp;face=0_0_596_236&quot;&gt;&lt;a href=&quot;https://api.flutter.dev/flutter/material/Slider-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.flutter.dev/flutter/material/Slider-class.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/XF60B/hyNVWH7XM5/a4iUG1RNQvGM0UwyRWWhL1/img.png?width=596&amp;amp;height=236&amp;amp;face=0_0_596_236');&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;Slider class - material library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Material Design slider. Used to select from a range of values. The Sliders value is part of the Stateful widget subclass to change the value setState was called. To create a local project with this code sample, run: flutter create --sample=material.Slide&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1649144678279&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Expanded(
                child: ReusableCard(
              colour: kActiveCardColour,
              cardChild: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: &amp;lt;Widget&amp;gt;[
                  Text(
                    &quot;HEIGHT&quot;,
                    style: kLabelTextStyle,
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.baseline,
                    textBaseline: TextBaseline.alphabetic,
                    children: &amp;lt;Widget&amp;gt;[
                      Text(height.toString(), style: kNumberTextStyle),
                      Text(
                        'cm',
                        style: kLabelTextStyle,
                      )
                    ],
                  ),
                  Slider(
                    value: height.toDouble(),
                    min: 120.0,
                    max: 220.0,
                    activeColor: Color(0xFFEB1555),
                    inactiveColor: Color(0xFF8D8E98),
                    onChanged: (double newValue) {
                      setState(() {
                        height = newValue.round();
                      });
                    },
                  )
                ],
              ),
            )),&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;그리고 상수는 다음과 같이 상수파일을 따로 만들어 관리하면 편리하고 앞에 k를 붙이는 컨벤션이 좋다고 한다. (구글에서도 전역적으로 사용하는 상수를 앞에 k를 붙여서 함께 검색하기 좋다)&lt;/p&gt;
&lt;pre id=&quot;code_1649144657111&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

const kBottomContainerHeight = 80.0;
const kActiveCardColour = Color(0xFF1D1E33);
const kInactiveCardColour = Color(0xFF111328);
const kBottomContainerColour = Color(0xFFEB1555);

const kLabelTextStyle = TextStyle(
  fontSize: 18.0,
  color: Color(0xFF8D8E98),
);

const kNumberTextStyle = TextStyle(
  fontSize: 50.0,
  fontWeight: FontWeight.w900,
);&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;281&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjPy25/btryxc076hH/WreywRbgVSly7xZD5ANlx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjPy25/btryxc076hH/WreywRbgVSly7xZD5ANlx1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjPy25/btryxc076hH/WreywRbgVSly7xZD5ANlx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjPy25%2Fbtryxc076hH%2FWreywRbgVSly7xZD5ANlx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;281&quot; height=&quot;584&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;584&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;131. Customising Widgets with Themes&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;SliderTheme에 대해 배웠다.&lt;/p&gt;
&lt;pre id=&quot;code_1649250699733&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SliderTheme(
                    data: SliderTheme.of(context).copyWith(
                        inactiveTrackColor: Color(0xFF8D8E98),
                        activeTrackColor: Colors.white,
                        overlayColor: Color(0xFFEB1555),
                        thumbColor: Color(0x29EB1555),
                        thumbShape:
                            RoundSliderThumbShape(enabledThumbRadius: 15.0),
                        overlayShape:
                            RoundSliderOverlayShape(overlayRadius: 30.0)),
                    child: Slider(
                      value: height.toDouble(),
                      min: 120.0,
                      max: 220.0,
                      onChanged: (double newValue) {
                        setState(() {
                          height = newValue.round();
                        });
                      },
                    ),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이 슬라이더 테마를 공통모듈로서 사용하고 싶다면 밑과 같이 메인 MaterialApp()에 넣어주면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1649250745944&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class BMICalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(
        sliderTheme: SliderTheme.of(context).copyWith(
            activeTrackColor: Colors.white,
            overlayColor: Color(0xFFEB1555),
            thumbColor: Color(0x29EB1555),
            thumbShape:
            RoundSliderThumbShape(enabledThumbRadius: 15.0),
            overlayShape:
            RoundSliderOverlayShape(overlayRadius: 30.0)),,
        primaryColor: Color(0xFF0A0E21),
        scaffoldBackgroundColor: Color(0xFF0A0E21),
      ),
      home: InputPage(),
    );
  }
}&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;384&quot; data-origin-height=&quot;658&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFJafd/btryEtO7vwo/KtuUZ9zBrcqNRafRk2m6Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFJafd/btryEtO7vwo/KtuUZ9zBrcqNRafRk2m6Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFJafd/btryEtO7vwo/KtuUZ9zBrcqNRafRk2m6Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFJafd%2FbtryEtO7vwo%2FKtuUZ9zBrcqNRafRk2m6Kk%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;384&quot; height=&quot;658&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;658&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;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;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;132. Composition vs. Inheritance - Building Flutter Widgets From Scratch&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;RoundIconButton&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649518111388&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

import 'constants.dart';
import 'icon_content.dart';
import 'reusable_card.dart';

enum Gender { male, female }

class InputPage extends StatefulWidget {
  @override
  _InputPageState createState() =&amp;gt; _InputPageState();
}

class _InputPageState extends State&amp;lt;InputPage&amp;gt; {
  Gender selectedGender;
  int height = 180;
  int weight = 60;
  int age = 20;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('BMI CALCULATOR'),
        ),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: &amp;lt;Widget&amp;gt;[
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  onPress: () {
                    setState(() {
                      selectedGender = Gender.male;
                    });
                  },
                  colour: selectedGender == Gender.male
                      ? kActiveCardColour
                      : kInactiveCardColour,
                  cardChild: IconContent(
                    icon: FontAwesomeIcons.mars,
                    label: 'MALE',
                  ),
                )),
                Expanded(
                    child: ReusableCard(
                        onPress: () {
                          setState(() {
                            selectedGender = Gender.female;
                          });
                        },
                        colour: selectedGender == Gender.female
                            ? kActiveCardColour
                            : kInactiveCardColour,
                        cardChild: IconContent(
                          icon: FontAwesomeIcons.venus,
                          label: 'FEMALE',
                        )))
              ],
            )),
            Expanded(
                child: ReusableCard(
              colour: kActiveCardColour,
              cardChild: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: &amp;lt;Widget&amp;gt;[
                  Text(
                    &quot;HEIGHT&quot;,
                    style: kLabelTextStyle,
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.baseline,
                    textBaseline: TextBaseline.alphabetic,
                    children: &amp;lt;Widget&amp;gt;[
                      Text(height.toString(), style: kNumberTextStyle),
                      Text(
                        'cm',
                        style: kLabelTextStyle,
                      )
                    ],
                  ),
                  SliderTheme(
                    data: SliderTheme.of(context).copyWith(
                        inactiveTrackColor: Color(0xFF8D8E98),
                        activeTrackColor: Colors.white,
                        overlayColor: Color(0xFFEB1555),
                        thumbColor: Color(0xFFEB1555),
                        thumbShape:
                            RoundSliderThumbShape(enabledThumbRadius: 15.0),
                        overlayShape:
                            RoundSliderOverlayShape(overlayRadius: 30.0)),
                    child: Slider(
                      value: height.toDouble(),
                      min: 120.0,
                      max: 220.0,
                      onChanged: (double newValue) {
                        setState(() {
                          height = newValue.round();
                        });
                      },
                    ),
                  )
                ],
              ),
            )),
            Expanded(
                child: Row(
              children: &amp;lt;Widget&amp;gt;[
                Expanded(
                    child: ReusableCard(
                  colour: kActiveCardColour,
                  cardChild: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: &amp;lt;Widget&amp;gt;[
                      Text(
                        'WEIGHT',
                        style: kLabelTextStyle,
                      ),
                      Text(
                        weight.toString(),
                        style: kNumberTextStyle,
                      ),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          RoundIconButton(
                            icon: FontAwesomeIcons.minus,
                            onPressed: () {
                              setState(() {
                                weight--;
                              });
                            },
                          ),
                          SizedBox(
                            width: 10.0,
                          ),
                          RoundIconButton(
                            icon: FontAwesomeIcons.plus,
                            onPressed: () {
                              setState(() {
                                weight++;
                              });
                            },
                          ),
                        ],
                      )
                    ],
                  ),
                )),
                Expanded(
                    child: ReusableCard(
                  colour: kActiveCardColour,
                  cardChild: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: &amp;lt;Widget&amp;gt;[
                      Text(
                        'AGE',
                        style: kLabelTextStyle,
                      ),
                      Text(
                        age.toString(),
                        style: kNumberTextStyle,
                      ),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          RoundIconButton(
                            icon: FontAwesomeIcons.minus,
                            onPressed: () {
                              setState(() {
                                age--;
                              });
                            },
                          ),
                          SizedBox(
                            width: 10.0,
                          ),
                          RoundIconButton(
                            icon: FontAwesomeIcons.plus,
                            onPressed: () {
                              setState(() {
                                age++;
                              });
                            },
                          ),
                        ],
                      )
                    ],
                  ),
                ))
              ],
            )),
            Container(
              color: kBottomContainerColour,
              margin: EdgeInsets.only(top: 10.0),
              width: double.infinity,
              height: kBottomContainerHeight,
            )
          ],
        ));
  }
}

class RoundIconButton extends StatelessWidget {
  RoundIconButton({@required this.icon, @required this.onPressed});

  final IconData icon;
  final Function onPressed;

  @override
  Widget build(BuildContext context) {
    return RawMaterialButton(
      child: Icon(icon),
      onPressed: onPressed,
      elevation: 6.0,
      constraints: BoxConstraints.tightFor(
        width: 56.0,
        height: 56.0,
      ),
      shape: CircleBorder(),
      fillColor: Color(0xFF4C4F5E),
    );
  }
}&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;378&quot; data-origin-height=&quot;661&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vZd3y/btryU2KoJYp/LO7boXm2SVHD25Y2g56khK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vZd3y/btryU2KoJYp/LO7boXm2SVHD25Y2g56khK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vZd3y/btryU2KoJYp/LO7boXm2SVHD25Y2g56khK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvZd3y%2FbtryU2KoJYp%2FLO7boXm2SVHD25Y2g56khK%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;378&quot; height=&quot;661&quot; data-origin-width=&quot;378&quot; data-origin-height=&quot;661&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;133. Multi-Screen Apps Using Routes and Navigation&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;/p&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;pre id=&quot;code_1649576118228&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class ResultsPage extends StatelessWidget {
  const ResultsPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI CACULATOR'),
      ),
      body: Text('HELLO'),
    );
  }
}&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;Navigator.push(context, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MaterialPageRoute(builder:&amp;nbsp;(context)&amp;nbsp;=&amp;gt;&amp;nbsp;ResultsPage()));&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 사용하면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1649576155927&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;GestureDetector(
              onTap: () {
                Navigator.push(context,
                    MaterialPageRoute(builder: (context) =&amp;gt; ResultsPage()));
              },
              child: Container(
                child: Text(&quot;CALCULATE&quot;),
                color: kBottomContainerColour,
                margin: EdgeInsets.only(top: 10.0),
                width: double.infinity,
                height: kBottomContainerHeight,
              ),&lt;/code&gt;&lt;/pre&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://docs.flutter.dev/cookbook/navigation/navigation-basics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.flutter.dev/cookbook/navigation/navigation-basics&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649576222171&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;Navigate to a new screen and back&quot; data-og-description=&quot;How to navigate between routes.&quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/cookbook/navigation/navigation-basics&quot; data-og-url=&quot;https://docs.flutter.dev/cookbook/navigation/navigation-basics&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/cookbook/navigation/navigation-basics&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/cookbook/navigation/navigation-basics&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;Navigate to a new screen and back&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;How to navigate between routes.&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;&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;376&quot; data-origin-height=&quot;654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vzlSj/btry0c6NorL/KIjKczELUxcdkhkmofqnek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vzlSj/btry0c6NorL/KIjKczELUxcdkhkmofqnek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vzlSj/btry0c6NorL/KIjKczELUxcdkhkmofqnek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvzlSj%2Fbtry0c6NorL%2FKIjKczELUxcdkhkmofqnek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;376&quot; height=&quot;654&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;654&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;383&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwReiw/btrySONDri2/3nCe17yEQQVCX1Kd5eziX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwReiw/btrySONDri2/3nCe17yEQQVCX1Kd5eziX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwReiw/btrySONDri2/3nCe17yEQQVCX1Kd5eziX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwReiw%2FbtrySONDri2%2F3nCe17yEQQVCX1Kd5eziX0%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;383&quot; height=&quot;671&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;671&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;134. [Dart] Maps&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;다트 Map 자료구조에 대해 배웠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649576615898&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;Map class - dart:core library - Dart API&quot; data-og-description=&quot;A collection of key/value pairs, from which you retrieve a value using its associated key. There is a finite number of keys in the map, and each key has exactly one value associated with it. Maps, and their keys and values, can be iterated. The order of it&quot; data-og-host=&quot;api.dart.dev&quot; data-og-source-url=&quot;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&quot; data-og-url=&quot;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://api.dart.dev/stable/2.15.1/dart-core/Map-class.html&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;Map class - dart:core library - Dart API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A collection of key/value pairs, from which you retrieve a value using its associated key. There is a finite number of keys in the map, and each key has exactly one value associated with it. Maps, and their keys and values, can be iterated. The order of it&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;api.dart.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시&lt;/p&gt;
&lt;pre id=&quot;code_1649576660149&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() { 
   var details = {'Usrname':'tom','Password':'pass@123'}; 
   details['Uid'] = 'U1oo1'; 
   print(details); 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;135. Designing the Result Page&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;ReslutPage 디자인을 구현했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 앞서배웠지만 Exapnded 위젯에서 flex는 안드로이드로치면 weight 비율을 나타낸다고 보면 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1649762942770&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:bmi_calculator/components/bottom_button.dart';
import 'package:flutter/material.dart';

import '../components/reusable_card.dart';
import '../constants.dart';

class ResultsPage extends StatelessWidget {
  const ResultsPage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('BMI CALCULATOR'),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: &amp;lt;Widget&amp;gt;[
          Expanded(
              child: Container(
            padding: EdgeInsets.all(15.0),
            alignment: Alignment.bottomLeft,
            child: Text(
              'Your Result',
              style: kTitleTextStyle,
            ),
          )),
          Expanded(
            flex: 5,
            child: ReusableCard(
              colour: kActiveCardColour,
              cardChild: Column(
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                crossAxisAlignment: CrossAxisAlignment.center,
                children: &amp;lt;Widget&amp;gt;[
                  Text(
                    'Normal',
                    style: kResultTextStyle,
                  ),
                  Text(
                    '18.3',
                    style: kBMITextStyle,
                  ),
                  Text(
                    'Your BMI result is quite low, you should eat more!',
                    style: kBodyTextStyle,
                    textAlign: TextAlign.center,
                  )
                ],
              ),
            ),
          ),
          BottomButton(
              onTap: () {
                Navigator.pop(context);
              },
              buttonTitle: 'RE-CALCULATE')
        ],
      ),
    );
  }
}&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;Bottom 버튼도 따로 위젯으로 모듈화해주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649763074889&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

import '../constants.dart';

class BottomButton extends StatelessWidget {
  final Function onTap;
  final String buttonTitle;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: onTap,
      child: Container(
        child: Center(
          child: Text(
            buttonTitle,
            style: kLargeButtonTextStyle,
          ),
        ),
        color: kBottomContainerColour,
        margin: EdgeInsets.only(top: 10.0),
        padding: EdgeInsets.only(bottom: 20.0),
        width: double.infinity,
        height: kBottomContainerHeight,
      ),
    );
  }

  BottomButton({@required this.onTap, @required this.buttonTitle});
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다음과 같이 소스파일들을 분리 및 모듈화하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1d54h/btrzbdGeF93/QW7tuM7DtHv5nLTQckThC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1d54h/btrzbdGeF93/QW7tuM7DtHv5nLTQckThC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1d54h/btrzbdGeF93/QW7tuM7DtHv5nLTQckThC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1d54h%2FbtrzbdGeF93%2FQW7tuM7DtHv5nLTQckThC0%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;432&quot; height=&quot;612&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;612&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;373&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pPW9l/btrzcPER9Lh/I1q0YjkIQC16kFkVqlCaUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pPW9l/btrzcPER9Lh/I1q0YjkIQC16kFkVqlCaUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pPW9l/btrzcPER9Lh/I1q0YjkIQC16kFkVqlCaUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpPW9l%2FbtrzcPER9Lh%2FI1q0YjkIQC16kFkVqlCaUK%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;373&quot; height=&quot;651&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;651&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;374&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byAosr/btrzdNGhmph/axvKr2dWQR9UwO7KyCMa8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byAosr/btrzdNGhmph/axvKr2dWQR9UwO7KyCMa8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byAosr/btrzdNGhmph/axvKr2dWQR9UwO7KyCMa8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyAosr%2FbtrzdNGhmph%2FaxvKr2dWQR9UwO7KyCMa8K%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;374&quot; height=&quot;656&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;136. Adding the BMI Calculator Functionality&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;BMI 계산하는 클래스를 만들어주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649763174540&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'dart:math';

class CalculatorBrain {
  CalculatorBrain({this.height, this.weight});

  final int height;
  final int weight;

  double _bmi;

  String calculateBMI() {
    _bmi = weight / pow(height / 100, 2);
    return _bmi.toStringAsFixed(1);
  }

  String getResult() {
    if (_bmi &amp;gt;= 25) {
      return 'Overweight';
    } else if (_bmi &amp;gt; 18.5) {
      return 'Normal';
    } else {
      return 'Underweight';
    }
  }

  String getInterpretation() {
    if (_bmi &amp;gt;= 25) {
      return 'You have a higher than normal body weight. Try to exercise more.';
    } else if (_bmi &amp;gt;= 18.5) {
      return 'You have a normal body weight. Good job!';
    } else {
      return 'You have a lower than normal body weight. You can eat a bit more.';
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바텀버튼에 이 생성자를 사용해줘서 결과페이지에 데이터를 전달해주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1649764776494&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;BottomButton(
              buttonTitle: 'CALCULATE',
              onTap: () {
                CalculatorBrain calc = CalculatorBrain(height: height, weight: weight);
                Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) =&amp;gt; ResultsPage(
                              bmiResult: calc.calculateBMI(),
                              resultText: calc.getResult(),
                              interpretation: calc.getInterpretation(),
                            )));
              },&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;class ResultsPage extends StatelessWidget {
  final String bmiResult;
  final String resultText;
  final String interpretation;

  ResultsPage(
      {@required this.bmiResult,
      @required this.resultText,
      @required this.interpretation});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 섹션 12 학습을 완료했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[다음학습]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/692&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/692&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649765439800&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/685 [Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates) [이전학습] https://youngest-programming.tistor..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/692&quot; data-og-url=&quot;https://youngest-programming.tistory.com/692&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cjePMu/hyN1D89Ikw/H6K84o8MVYmyKdgup7hKC1/img.png?width=630&amp;amp;height=259&amp;amp;face=0_0_630_259,https://scrap.kakaocdn.net/dn/c7me2e/hyN1zlnzLI/4J5jTHf9UkEEfUVT0OtSlK/img.png?width=630&amp;amp;height=259&amp;amp;face=0_0_630_259,https://scrap.kakaocdn.net/dn/fEIna/hyN0jLeQyP/QMBi2JlxCSM08pR1iijNg0/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/692&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/692&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cjePMu/hyN1D89Ikw/H6K84o8MVYmyKdgup7hKC1/img.png?width=630&amp;amp;height=259&amp;amp;face=0_0_630_259,https://scrap.kakaocdn.net/dn/c7me2e/hyN1zlnzLI/4J5jTHf9UkEEfUVT0OtSlK/img.png?width=630&amp;amp;height=259&amp;amp;face=0_0_630_259,https://scrap.kakaocdn.net/dn/fEIna/hyN0jLeQyP/QMBi2JlxCSM08pR1iijNg0/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 13 학습 (학습중 3시간18분 강의) (Clima - Powering Your Flutter App with Live W&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/685 [Flutter] Udemy 플러터 강의 섹션 12 학습 (BMI Calculator - Building Flutter for intermediates) [이전학습] https://youngest-programming.tistor..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>BMI Calculator - Building Flutter for intermediates</category>
      <category>flutter map</category>
      <category>flutter materialpageroute</category>
      <category>flutter RoundIconButton</category>
      <category>유데미 안젤라 강의 정리</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/685</guid>
      <comments>https://youngest-programming.tistory.com/685#entry685comment</comments>
      <pubDate>Mon, 4 Apr 2022 15:16:50 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 11 학습 (Boss Level Challenge 2 - Destini)</title>
      <link>https://youngest-programming.tistory.com/682</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;259&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vRx9z/btrygwfonag/B0EMmL4P9VTI5eiWCjjbZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vRx9z/btrygwfonag/B0EMmL4P9VTI5eiWCjjbZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vRx9z/btrygwfonag/B0EMmL4P9VTI5eiWCjjbZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvRx9z%2Fbtrygwfonag%2FB0EMmL4P9VTI5eiWCjjbZ1%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;623&quot; height=&quot;259&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;259&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;&lt;a href=&quot;https://youngest-programming.tistory.com/624&quot;&gt;https://youngest-programming.tistory.com/624&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648971470042&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/623 [Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development) [이전학습] https://youngest-prog..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/624&quot; data-og-url=&quot;https://youngest-programming.tistory.com/624&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oK987/hyLZSf2HAH/h2iakOQH5zAqwbbRE1oOC0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/bNZfty/hyLYzh6l09/ptAAewTy2IT4xQzDmdb9d0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/HZC4h/hyLYHUJLIz/TaWL9pGZkowxFwMovdFt3k/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/624&quot; data-source-url=&quot;https://youngest-programming.tistory.com/624&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oK987/hyLZSf2HAH/h2iakOQH5zAqwbbRE1oOC0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/bNZfty/hyLYzh6l09/ptAAewTy2IT4xQzDmdb9d0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/HZC4h/hyLYHUJLIz/TaWL9pGZkowxFwMovdFt3k/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/623 [Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development) [이전학습] https://youngest-prog..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648971470043&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648971470045&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;105. Destini - A Choose Your Own Adventure Game&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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zrSm2/btrye2TlpDt/Yc3eQ6EbKWYAy5H1V8bbw1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zrSm2/btrye2TlpDt/Yc3eQ6EbKWYAy5H1V8bbw1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zrSm2/btrye2TlpDt/Yc3eQ6EbKWYAy5H1V8bbw1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/zrSm2/btrye2TlpDt/Yc3eQ6EbKWYAy5H1V8bbw1/img.gif&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;317&quot; height=&quot;567&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;567&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;108. Step 1 - Adding a Image as a Background&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀스크린 배경을 하는 방법&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zvM7U/btryk2cPLa0/XRwWcALJtSXZakUYo67fPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zvM7U/btryk2cPLa0/XRwWcALJtSXZakUYo67fPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zvM7U/btryk2cPLa0/XRwWcALJtSXZakUYo67fPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzvM7U%2Fbtryk2cPLa0%2FXRwWcALJtSXZakUYo67fPk%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;282&quot; height=&quot;581&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BoxDecoration 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1648974181369&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;How do I Set Background image in Flutter?&quot; data-og-description=&quot;I am trying to set a background image for the home page. I am getting the image place from start of the screen and filling the width but not the height. Am I missing something in my code? Are there&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&quot; data-og-url=&quot;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/7INR5/hyNUAdJ0Td/l6XfHjYzooCOdSNQn6p5f1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/bZET8B/hyNUxH3Mbk/MsMhHolaPAlkKfzL6v7zq0/img.png?width=386&amp;amp;height=673&amp;amp;face=0_0_386_673,https://scrap.kakaocdn.net/dn/wsnIs/hyNUAdJ0TU/ltVCNDifSNyOG641b8oExk/img.png?width=253&amp;amp;height=361&amp;amp;face=0_0_253_361&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/44179889/how-do-i-set-background-image-in-flutter&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/7INR5/hyNUAdJ0Td/l6XfHjYzooCOdSNQn6p5f1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316,https://scrap.kakaocdn.net/dn/bZET8B/hyNUxH3Mbk/MsMhHolaPAlkKfzL6v7zq0/img.png?width=386&amp;amp;height=673&amp;amp;face=0_0_386_673,https://scrap.kakaocdn.net/dn/wsnIs/hyNUAdJ0TU/ltVCNDifSNyOG641b8oExk/img.png?width=253&amp;amp;height=361&amp;amp;face=0_0_253_361');&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;How do I Set Background image in Flutter?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I am trying to set a background image for the home page. I am getting the image place from start of the screen and filling the width but not the height. Am I missing something in my code? Are there&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1648974468774&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class _StoryPageState extends State&amp;lt;StoryPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        //TODO: Step 1 - Add background.png to this Container as a background image.
        decoration: BoxDecoration(
          image: DecorationImage(
            image: AssetImage('images/background.png'),
            fit: BoxFit.cover,
          ),
        ),
        padding: EdgeInsets.symmetric(vertical: 50.0, horizontal: 15.0),
        constraints: BoxConstraints.expand(),&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;110. Step 2/3/4 - Create a New Story Class&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_1648975632103&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 2 - Create a new class called Story.
class Story {
  //TODO: Step 3 - Create 3 properties for this class, A. storyTitle to store the story text. B. choice1 to store the text for choice 1, C. choice2 to store the text for choice 2.
  String storyTitle;
  String choice1;
  String choice2;

  //TODO: Step 4 - Create a Constructor for this class to be able to initialise the properties created in step 3.
  Story({this.storyTitle, this.choice1, this.choice2});
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 Step4의 클래스 생성자 의미는 다음을 간단하게 한거다.&lt;/p&gt;
&lt;pre id=&quot;code_1648975667193&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Story {
  String storyTitle;
  String choice1;
  String choice2;
  Story({String storyTitle, String choice1, String choice2}) {
    this.storyTitle = storyTitle;
    this.choice1 = choice1;
    this.choice2 = choice2;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;111. Step 5/6/7 - Create the Story Brain&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_1648978250269&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 6 - import the story.dart file into this file.
import 'story.dart';
//TODO: Step 5 - Create a new class called StoryBrain.
class StoryBrain{

}
//TODO: Step 7 - Uncomment the lines below to include storyData as a private property in StoryBrain. Hint: You might need to change something in story.dart to make this work.

List&amp;lt;Story&amp;gt; _storyData = [
 Story(
     storyTitle:
     'Your car has blown a tire on a winding road in the middle of nowhere with no cell phone reception. You decide to hitchhike. A rusty pickup truck rumbles to a stop next to you. A man with a wide brimmed hat with soulless eyes opens the passenger door for you and asks: &quot;Need a ride, boy?&quot;.',
     choice1: 'I\'ll hop in. Thanks for the help!',
     choice2: 'Better ask him if he\'s a murderer first.'),
 Story(
     storyTitle: 'He nods slowly, unphased by the question.',
     choice1: 'At least he\'s honest. I\'ll climb in.',
     choice2: 'Wait, I know how to change a tire.'),
 Story(
     storyTitle:
     'As you begin to drive, the stranger starts talking about his relationship with his mother. He gets angrier and angrier by the minute. He asks you to open the glovebox. Inside you find a bloody knife, two severed fingers, and a cassette tape of Elton John. He reaches for the glove box.',
     choice1: 'I love Elton John! Hand him the cassette tape.',
     choice2: 'It\'s him or me! You take the knife and stab him.'),
 Story(
     storyTitle:
     'What? Such a cop out! Did you know traffic accidents are the second leading cause of accidental death for most adult age groups?',
     choice1: 'Restart',
     choice2: ''),
 Story(
     storyTitle:
     'As you smash through the guardrail and careen towards the jagged rocks below you reflect on the dubious wisdom of stabbing someone while they are driving a car you are in.',
     choice1: 'Restart',
     choice2: ''),
 Story(
     storyTitle:
     'You bond with the murderer while crooning verses of &quot;Can you feel the love tonight&quot;. He drops you off at the next town. Before you go he asks you if you know any good places to dump bodies. You reply: &quot;Try the pier&quot;.',
     choice1: 'Restart',
     choice2: '')
];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;112. Display the Story in the App&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;282&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3xlL5/btryg0frGHK/K49UWcmjcadMk8qmZDAGU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3xlL5/btryg0frGHK/K49UWcmjcadMk8qmZDAGU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3xlL5/btryg0frGHK/K49UWcmjcadMk8qmZDAGU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3xlL5%2Fbtryg0frGHK%2FK49UWcmjcadMk8qmZDAGU1%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;282&quot; height=&quot;584&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;584&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;pre id=&quot;code_1648978482638&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 8 - Create a method called getStory() that returns the first storyTitle from _storyData.
String getStory() {
  return _storyData[0].storyTitle;
}&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;pre id=&quot;code_1648978606918&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 9 - Create a new storyBrain object from the StoryBrain class.
StoryBrain storyBrain = StoryBrain();&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;pre id=&quot;code_1648978727999&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;child: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              Expanded(
                flex: 12,
                child: Center(
                  child: Text(
                    //TODO: Step 10 - use the storyBrain to get the first story title and display it in this Text Widget.
                    storyBrain.getStory(),
                    style: TextStyle(
                      fontSize: 25.0,
                    ),
                  ),
                ),
              ),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;113. Step 11/12/13/14 - Display the Choices in the App&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_1648979090938&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 11 - Create a method called getChoice1() that returns the text for the first choice1 from _storyData.
  String getChoice1() {
    return _storyData[0].choice1;
  }

//TODO: Step 12 - Create a method called getChoice2() that returns the text for the first choice2 from _storyData.
  String getChoice2() {
    return _storyData[0].choice2;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;`&lt;/p&gt;
&lt;pre id=&quot;code_1648979144418&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Expanded(
                flex: 2,
                child: FlatButton(
                  onPressed: () {
                    //Choice 1 made by user.
                    //TODO: Step 18 - Call the nextStory() method from storyBrain and pass the number 1 as the choice made by the user.
                  },
                  color: Colors.red,
                  child: Text(
                    //TODO: Step 13 - Use the storyBrain to get the text for choice 1.
                    storyBrain.getChoice1(),
                    style: TextStyle(
                      fontSize: 20.0,
                    ),
                  ),
                ),
              ),&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1648979167797&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; child: FlatButton(
                  onPressed: () {
                    //Choice 2 made by user.
                    //TODO: Step 19 - Call the nextStory() method from storyBrain and pass the number 2 as the choice made by the user.
                  },
                  color: Colors.blue,
                  child: Text(
                    //TODO: Step 14 - Use the storyBrain to get the text for choice 2.
                    storyBrain.getChoice2(),
                    style: TextStyle(
                      fontSize: 20.0,
                    ),
                  ),
                ),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;114. Update the Story Based on User Choice&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;/p&gt;
&lt;pre id=&quot;code_1648980673857&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 16 - Create a property called storyNumber which starts with a value of 0. This will be used to track which story the user is currently viewing.
  int storyNumber = 0;

//TODO: Step 17 - Create a method called nextStory(), it should not have any outputs but it should have 1 input called choiceNumber which will be the choice number (int) made by the user.
  void nextStory(int choiceNumber) {}&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;pre id=&quot;code_1648980739845&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; child: FlatButton(
                  onPressed: () {
                    //Choice 1 made by user.
                    //TODO: Step 18 - Call the nextStory() method from storyBrain and pass the number 1 as the choice made by the user.
                    storyBrain.nextStory(1);
                  },&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1648980833654&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  child: FlatButton(
                  onPressed: () {
                    //Choice 2 made by user.
                    //TODO: Step 19 - Call the nextStory() method from storyBrain and pass the number 2 as the choice made by the user.
                    storyBrain.nextStory(2);
                  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;115. Step 21 - Use the Story Plan to Progress through the Story&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;1121&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/phBsN/btrycD7baC7/IbQY0SbFQintn57tz8V6G1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/phBsN/btrycD7baC7/IbQY0SbFQintn57tz8V6G1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/phBsN/btrycD7baC7/IbQY0SbFQintn57tz8V6G1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FphBsN%2FbtrycD7baC7%2FIbQY0SbFQintn57tz8V6G1%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;1121&quot; height=&quot;788&quot; data-origin-width=&quot;1121&quot; data-origin-height=&quot;788&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;&amp;nbsp;if/else 문 사용&lt;/p&gt;
&lt;pre id=&quot;code_1648986466849&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 17 - Create a method called nextStory(), it should not have any outputs but it should have 1 input called choiceNumber which will be the choice number (int) made by the user.
  void nextStory(int choiceNumber) {
    //TODO: Step 21 - Using the story plan, update nextStory to change the storyNumber depending on the choice made by the user.
    if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 0) {
      storyNumber = 2;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 0) {
      storyNumber = 1;
    } else if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 1) {
      storyNumber = 2;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 1) {
      storyNumber = 3;
    } else if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 2) {
      storyNumber = 5;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 2) {
      storyNumber = 4;
    }
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;116. Step 22/23/24 - Restart the Game When the User Reaches the End&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;restart() 재시작 구현&lt;/p&gt;
&lt;pre id=&quot;code_1648986650148&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 17 - Create a method called nextStory(), it should not have any outputs but it should have 1 input called choiceNumber which will be the choice number (int) made by the user.
  void nextStory(int choiceNumber) {
    //TODO: Step 20 - Download the story plan here: https://drive.google.com/uc?export=download&amp;amp;id=1KU6EghkO9Hf2hRM0756xFHgNaZyGCou3
    //TODO: Step 21 - Using the story plan, update nextStory to change the storyNumber depending on the choice made by the user.
    if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 0) {
      storyNumber = 2;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 0) {
      storyNumber = 1;
    } else if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 1) {
      storyNumber = 2;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 1) {
      storyNumber = 3;
    } else if (choiceNumber == 1 &amp;amp;&amp;amp; storyNumber == 2) {
      storyNumber = 5;
    } else if (choiceNumber == 2 &amp;amp;&amp;amp; storyNumber == 2) {
      storyNumber = 4;
    }
//TODO: Step 22 - In nextStory() if the storyNumber is equal to 3 or 4 or 5, that means it's the end of the game and it should call a method called restart() that resets the storyNumber to 0.
    else if (storyNumber == 3 || storyNumber == 4 || storyNumber == 5) {
      restart();
    }
  }

  //TODO: Step 22
  void restart() {
    storyNumber = 0;
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 0으로 하드코딩되어있던거 변수로 변경 (step 23)&lt;/p&gt;
&lt;pre id=&quot;code_1648986939796&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 23 - Use the storyNumber property inside getStory(), getChoice1() and getChoice2() so that it gets the updated story and choices rather than always just the first (0th) one.
//TODO: Step 8 - Create a method called getStory() that returns the first storyTitle from _storyData.
  String getStory() {
    return _storyData[storyNumber].storyTitle;
  }

//TODO: Step 11 - Create a method called getChoice1() that returns the text for the first choice1 from _storyData.
  String getChoice1() {
    return _storyData[storyNumber].choice1;
  }

//TODO: Step 12 - Create a method called getChoice2() that returns the text for the first choice2 from _storyData.
  String getChoice2() {
    return _storyData[storyNumber].choice2;
  }&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;기존에 클릭리스너에 구현되어어있던거 함수 구현에 따라 UI상태가 바뀔 수 있도록 setState() 해줌&lt;/p&gt;
&lt;pre id=&quot;code_1648987094704&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;onPressed: () {
                    //Choice 2 made by user.
                    //TODO: Step 19 - Call the nextStory() method from storyBrain and pass the number 2 as the choice made by the user.
                    //TODO: Step 24 - Run the app and try to figure out what code you need to add to this file to make the story change when you press on the choice buttons.
                    setState(() {
                      storyBrain.nextStory(2);
                    });
                  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;117. Step 25 - Renaming and Refactoring Using Android Studio&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;dart 에서는 변수 앞에 _를 붙이면 private&lt;/p&gt;
&lt;pre class=&quot;sql&quot;&gt;&lt;code&gt;//TODO: Step 16 - Create a property called storyNumber which starts with a value of 0. This will be used to track which story the user is currently viewing.
  int _storyNumber = 0;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;118. Step 26/27/28 - Hiding Buttons&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;Visibility 위젯 사용 (Show/Hide 기능이 있는 위젯) - step 26&lt;/p&gt;
&lt;pre id=&quot;code_1648987498775&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 26 - Use a Flutter Visibility Widget to wrap this FlatButton.
                //TODO: Step 28 - Set the &quot;visible&quot; property of the Visibility Widget to equal the output from the buttonShouldBeVisible() method in the storyBrain.
                child: Visibility(
                  child: FlatButton(
                    onPressed: () {
                      //Choice 2 made by user.
                      //TODO: Step 19 - Call the nextStory() method from storyBrain and pass the number 2 as the choice made by the user.
                      //TODO: Step 24 - Run the app and try to figure out what code you need to add to this file to make the story change when you press on the choice buttons.
                      setState(() {
                        storyBrain.nextStory(2);
                      });
                    },
                    color: Colors.blue,
                    child: Text(
                      //TODO: Step 14 - Use the storyBrain to get the text for choice 2.
                      storyBrain.getChoice2(),
                      style: TextStyle(
                        fontSize: 20.0,
                      ),
                    ),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StoryBrain 클래스에 bool 함수 구현&lt;/p&gt;
&lt;pre id=&quot;code_1648987863521&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//TODO: Step 27 - Create a method called buttonShouldBeVisible() which checks to see if storyNumber is 0 or 1 or 2 (when both buttons should show choices) and return true if that is the case, else it should return false.
  bool buttonShouldBeVisible() {
    return _storyNumber &amp;lt; 3;
  }&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;Visiblity 위젯에 visible 속성추가하여 마지막 스토리일때 버튼이 보이게끔 설정한다.&lt;/p&gt;
&lt;pre id=&quot;code_1648987985342&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;child: Visibility(
                  //TODO: Step 28 - Set the &quot;visible&quot; property of the Visibility Widget to equal the output from the buttonShouldBeVisible() method in the storyBrain.
                  visible: storyBrain.buttonShouldBeVisible(),
                  child: FlatButton(
                    onPressed: () {
                      //Choice 2 made by user.
                      //TODO: Step 19 - Call the nextStory() method from storyBrain and pass the number 2 as the choice made by the user.
                      //TODO: Step 24 - Run the app and try to figure out what code you need to add to this file to make the story change when you press on the choice buttons.
                      setState(() {
                        storyBrain.nextStory(2);
                      });
                    },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;THE END..&lt;/p&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;006&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 섹션 11 학습을 완료했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&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: #555555;&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/685&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/685&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649053052168&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 12 학습 (학습중....) (BMI Calculator - Building Flutter for intermediates)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/682 [Flutter] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini) [이전학습] https://youngest-programming.tistory.com/624..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/685&quot; data-og-url=&quot;https://youngest-programming.tistory.com/685&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/eJbgx/hyNUqDc6bQ/I64Cs7UJmk46WtEheokyxK/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/Do5sS/hyNUwKbelA/2HrTKhmmoBWh7Q4G73zfN1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/bt6MZV/hyNUvkdD8s/1odnWuqNSoMW2MKMEekTyK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/685&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/685&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/eJbgx/hyNUqDc6bQ/I64Cs7UJmk46WtEheokyxK/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/Do5sS/hyNUwKbelA/2HrTKhmmoBWh7Q4G73zfN1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/bt6MZV/hyNUvkdD8s/1odnWuqNSoMW2MKMEekTyK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 12 학습 (학습중....) (BMI Calculator - Building Flutter for intermediates)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/682 [Flutter] Udemy 플러터 강의 섹션 11 학습 (섹션 11: Boss Level Challenge 2 - Destini) [이전학습] https://youngest-programming.tistory.com/624..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;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>플러터(Flutter) &amp;amp; Dart</category>
      <category>Boss Level Challenge 2 - Destini</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/682</guid>
      <comments>https://youngest-programming.tistory.com/682#entry682comment</comments>
      <pubDate>Sun, 3 Apr 2022 16:38:26 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 9237 이장님 초대 -그리디- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/674</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;&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://www.acmicpc.net/problem/9237&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/9237&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647005950425&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;9237번: 이장님 초대&quot; data-og-description=&quot;입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 &amp;le; N &amp;le; 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 &amp;le; ti &amp;le; 1,000,000)&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/9237&quot; data-og-url=&quot;https://www.acmicpc.net/problem/9237&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bkDcgO/hyNGPn8bao/q6qgvq9apGEUmlVy7N6fe1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/9237&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/9237&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bkDcgO/hyNGPn8bao/q6qgvq9apGEUmlVy7N6fe1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&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;9237번: 이장님 초대&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;입력은 두 줄로 이루어져 있다. 첫째 줄에는 묘목의 수 N (1 &amp;le; N &amp;le; 100,000)이 주어진다. 둘째 줄에는 각 나무가 다 자라는데 며칠이 걸리는지를 나타낸 ti가 주어진다. (1 &amp;le; ti &amp;le; 1,000,000)&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;911&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beR9LE/btrvK4qXOSY/0xqYS6SiLtyhXKucqJ9kb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beR9LE/btrvK4qXOSY/0xqYS6SiLtyhXKucqJ9kb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beR9LE/btrvK4qXOSY/0xqYS6SiLtyhXKucqJ9kb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeR9LE%2FbtrvK4qXOSY%2F0xqYS6SiLtyhXKucqJ9kb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1195&quot; height=&quot;911&quot; data-origin-width=&quot;1195&quot; data-origin-height=&quot;911&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;1183&quot; data-origin-height=&quot;481&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tPOs4/btrvKpPEAqQ/tJTeNotl7LFz38KglKLhM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tPOs4/btrvKpPEAqQ/tJTeNotl7LFz38KglKLhM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tPOs4/btrvKpPEAqQ/tJTeNotl7LFz38KglKLhM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtPOs4%2FbtrvKpPEAqQ%2FtJTeNotl7LFz38KglKLhM0%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;1183&quot; height=&quot;481&quot; data-origin-width=&quot;1183&quot; data-origin-height=&quot;481&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;009&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 그리디 유형에서 9237번 이장님 초대라는 문제를 풀어봤습니다. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리디 유형은 코드는 간단한데 생각을 빨리하는게 역시 중요한 것 같습니다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주석으로 설명은 대체합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1647006039891&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        Integer[] t = new Integer[N];
        for (int i = 0; i &amp;lt; N; i++) {
            t[i] = sc.nextInt();
        }
        // 오래걸리는거부터 심어야 최대한 빠르므로 역정렬
        Arrays.sort(t, Collections.reverseOrder());
        int maxDay = 0;
        for (int i = 0; i &amp;lt; N; i++) {
            // 나무자라는데걸리는시간 + 며칠지났는지 + 심는데 하루
            maxDay = Math.max(maxDay, t[i] + i + 1);
        }
        // 다 심은 다음날 이장님 초대 가능
        maxDay += 1;
        System.out.println(maxDay);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1647006047899&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*

fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    val N = sc.nextInt()
    val t = arrayOfNulls&amp;lt;Int&amp;gt;(N)
    for (i in 0 until N) {
        t[i] = sc.nextInt()
    }
    // 오래걸리는거부터 심어야 최대한 빠르므로 역정렬
    Arrays.sort(t, Collections.reverseOrder())
    var maxDay = 0
    for (i in 0 until N) { // 나무자라는데걸리는시간 + 며칠지났는지 + 심는데 하루
        maxDay = Math.max(maxDay, t[i]!! + i + 1)
    }
    // 다 심은 다음날 이장님 초대 가능
    maxDay += 1
    println(maxDay)
}&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;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1647006114367&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 9237 풀이 &amp;middot; mtjin/algorithm_practice@ae39f3a&quot; data-og-description=&quot;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 44 additions and 0 deletions. +25 &amp;minus;0 백준 9237 이장님 초대 -그리디-/Main.java +19 &amp;minus;0 백&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cuA3pD/hyNGIieXln/2rWlcaGZhSf9IqFJBtrsV1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/ae39f3a9e59c984436f953ebf950231496b214ee&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cuA3pD/hyNGIieXln/2rWlcaGZhSf9IqFJBtrsV1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 9237 풀이 &amp;middot; mtjin/algorithm_practice@ae39f3a&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 44 additions and 0 deletions. +25 &amp;minus;0 백준 9237 이장님 초대 -그리디-/Main.java +19 &amp;minus;0 백&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;005&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;</description>
      <category>알고리즘/그리디</category>
      <category>백준 9237 이장님 초대</category>
      <category>백준 9237 이장님 초대 java</category>
      <category>백준 9237 이장님 초대 kotlin</category>
      <category>백준 9237 이장님 초대 자바</category>
      <category>백준 9237 이장님 초대 코틀린</category>
      <category>백준 이장님 초대 java</category>
      <category>백준 이장님 초대 kotlin</category>
      <category>백준 이장님 초대 자바</category>
      <category>백준 이장님 초대 코틀린</category>
      <category>이장님 초대 자바 코틀린</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/674</guid>
      <comments>https://youngest-programming.tistory.com/674#entry674comment</comments>
      <pubDate>Fri, 11 Mar 2022 22:42:34 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 15658 연산자 끼워넣기 (2) -백트래킹- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/673</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15658&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/15658&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646818014545&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;15658번: 연산자 끼워넣기 (2)&quot; data-og-description=&quot;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다. 연산자의 개수&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15658&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15658&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sF0sF/hyNFDBc1vV/ktUZPtt19ZzqVkI2JhPTQ1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15658&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15658&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sF0sF/hyNFDBc1vV/ktUZPtt19ZzqVkI2JhPTQ1/img.png?width=2834&amp;amp;height=1480&amp;amp;face=0_0_2834_1480');&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;15658번: 연산자 끼워넣기 (2)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(&amp;times;), 나눗셈(&amp;divide;)으로만 이루어져 있다. 연산자의 개수&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qr6zY/btrvwjvDD1A/tklac6KbNocbz6wK0Suj1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qr6zY/btrvwjvDD1A/tklac6KbNocbz6wK0Suj1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qr6zY/btrvwjvDD1A/tklac6KbNocbz6wK0Suj1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqr6zY%2FbtrvwjvDD1A%2Ftklac6KbNocbz6wK0Suj1K%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;1225&quot; height=&quot;733&quot; data-origin-width=&quot;1225&quot; data-origin-height=&quot;733&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;1196&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLzviJ/btrvxlfG4mR/UZvBy2ChF2Z3oJqqiWetA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLzviJ/btrvxlfG4mR/UZvBy2ChF2Z3oJqqiWetA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLzviJ/btrvxlfG4mR/UZvBy2ChF2Z3oJqqiWetA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLzviJ%2FbtrvxlfG4mR%2FUZvBy2ChF2Z3oJqqiWetA1%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;1196&quot; height=&quot;604&quot; data-origin-width=&quot;1196&quot; data-origin-height=&quot;604&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;1212&quot; data-origin-height=&quot;902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/THyZm/btrvu28lnou/3Jd6dQuL2vVkUjE6GsljU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/THyZm/btrvu28lnou/3Jd6dQuL2vVkUjE6GsljU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/THyZm/btrvu28lnou/3Jd6dQuL2vVkUjE6GsljU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTHyZm%2Fbtrvu28lnou%2F3Jd6dQuL2vVkUjE6GsljU1%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;1212&quot; height=&quot;902&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;902&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;연산자 끼워넣기 (2) 를 풀어봤습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산자 우선순위는 배제하고 정해지 연산자별 개수로 가장 큰 수식과 작은 수식 결과를 도출해내는 문제였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연산자 개수를 한개씩 줄여가며 백트래킹을 돌리면 되는 문제였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 이렇게 두 개의 값을 연산하는 문제인 경우 첫번째 값을 넣어주고 돌리면 풀기 좋습니다 :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646818233721&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    private static int N;
    private static int[] op = new int[4];
    private static int[] arr;
    private static int max = Integer.MIN_VALUE;
    private static int min = Integer.MAX_VALUE;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        arr = new int[N];
        for (int i = 0; i &amp;lt; N; i++) {
            arr[i] = sc.nextInt();
        }
        for (int i = 0; i &amp;lt; 4; i++) {
            op[i] = sc.nextInt();
        }
        dfs(1, op, arr[0]);
        System.out.println(max);
        System.out.println(min);
    }

    private static void dfs(int depth, int[] op, int result) {
        if (depth == N) {
            max = Math.max(max, result);
            min = Math.min(min, result);
            return;
        }
        for (int i = 0; i &amp;lt; 4; i++) {
            if (op[i] == 0) {
                continue;
            }
            op[i]--;
            switch (i) {
                case 0:
                    dfs(depth + 1, op, result + arr[depth]);
                    break;
                case 1:
                    dfs(depth + 1, op, result - arr[depth]);
                    break;
                case 2:
                    dfs(depth + 1, op, result * arr[depth]);
                    break;
                case 3:
                    dfs(depth + 1, op, result / arr[depth]);
                    break;
            }
            op[i]++;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1646818243740&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*


private var N = 0
private val op = IntArray(4)
private lateinit var arr: IntArray
private var max = Int.MIN_VALUE
private var min = Int.MAX_VALUE
fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    N = sc.nextInt()
    arr = IntArray(N)
    for (i in 0 until N) {
        arr[i] = sc.nextInt()
    }
    for (i in 0..3) {
        op[i] = sc.nextInt()
    }
    dfs(1, op, arr[0])
    println(max)
    println(min)
}

private fun dfs(depth: Int, op: IntArray, result: Int) {
    if (depth == N) {
        max = Math.max(max, result)
        min = Math.min(min, result)
        return
    }
    for (i in 0..3) {
        if (op[i] == 0) {
            continue
        }
        op[i]--
        when (i) {
            0 -&amp;gt; dfs(depth + 1, op, result + arr[depth])
            1 -&amp;gt; dfs(depth + 1, op, result - arr[depth])
            2 -&amp;gt; dfs(depth + 1, op, result * arr[depth])
            3 -&amp;gt; dfs(depth + 1, op, result / arr[depth])
        }
        op[i]++
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1646818376645&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 15658 풀이 &amp;middot; mtjin/algorithm_practice@d982e5e&quot; data-og-description=&quot;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 96 additions and 0 deletions. +53 &amp;minus;0 백준 15658 연산자 끼워넣기 (2) -백트래킹-/Main.java&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d982e5e058e2b74ea434ce44efb8fd68bf92ea4f&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;백준 15658 풀이 &amp;middot; mtjin/algorithm_practice@d982e5e&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 96 additions and 0 deletions. +53 &amp;minus;0 백준 15658 연산자 끼워넣기 (2) -백트래킹-/Main.java&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 자바와 코틀린으로 알고리즘을 풀어봤네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뇌가 굳지 않게 꾸준히 해야겠습니다...&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;</description>
      <category>알고리즘/DFS, BFS, 시뮬, 백트래킹</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 15658 연산자 끼워넣기 (2)</category>
      <category>백준 15658 연산자 끼워넣기 (2) java</category>
      <category>백준 15658 연산자 끼워넣기 (2) kotlin</category>
      <category>백준 15658 연산자 끼워넣기 (2) 자바</category>
      <category>백준 15658 연산자 끼워넣기 (2) 코틀린</category>
      <category>백준 15658 자바 코틀린</category>
      <category>백준 연산자 끼워넣기 (2) 자바 java</category>
      <category>백준 연산자 끼워넣기 (2) 코틀린 kotlin</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/673</guid>
      <comments>https://youngest-programming.tistory.com/673#entry673comment</comments>
      <pubDate>Wed, 9 Mar 2022 18:33:30 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 2164 카드2 -큐, 데큐(Dequeue)- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/667</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/2164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/2164&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1643774529575&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;2164번: 카드2&quot; data-og-description=&quot;N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2164&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2164&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZQXG3/hyNgg9hIjN/xYyTnf7R1dWoqFL58h2ObK/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/2164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZQXG3/hyNgg9hIjN/xYyTnf7R1dWoqFL58h2ObK/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;2164번: 카드2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1189&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CQ0Ie/btrr9gb2M6r/Ltx3ZtMQhMwr8XKCZaBrJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CQ0Ie/btrr9gb2M6r/Ltx3ZtMQhMwr8XKCZaBrJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CQ0Ie/btrr9gb2M6r/Ltx3ZtMQhMwr8XKCZaBrJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQ0Ie%2Fbtrr9gb2M6r%2FLtx3ZtMQhMwr8XKCZaBrJ0%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;1189&quot; height=&quot;938&quot; data-origin-width=&quot;1189&quot; data-origin-height=&quot;938&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;데큐(Dequeue)는 알고는 있었는데 자바에서 직접 사용해보는건 처음이었네요.&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;span style=&quot;background-color: #ffffff; color: #4d5156;&quot;&gt;양방향으로 입출력이 가능한 데&lt;/span&gt;큐의 특성을 활용하여 문제 그대로 풀면 되었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 주석으로 자세히 적어놨고 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1643774683968&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        Deque&amp;lt;Integer&amp;gt; deque = new ArrayDeque&amp;lt;&amp;gt;();
        // 1. 초기화
        for (int i = 1; i &amp;lt;= N; i++) {
            deque.add(i);
        }
        // 한 장 남을때까지 반복
        while (deque.size() &amp;gt; 1) {
            // 2. 맨 위 카드 버리기
            deque.pollFirst();
            // 3. 맨 위 카드 맨밑으로 옮기기
            deque.offerLast(deque.pollFirst());
        }
        // 마지막 카드 정답 출력
        System.out.println(deque.poll());
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1643774764321&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*


fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    val N = sc.nextInt()
    val deque: Deque&amp;lt;Int&amp;gt; = ArrayDeque()
    // 1. 초기화
    for (i in 1..N) {
        deque.add(i)
    }
    // 한 장 남을때까지 반복
    while (deque.size &amp;gt; 1) { // 2. 맨 위 카드 버리기
        deque.pollFirst()
        // 3. 맨 위 카드 맨밑으로 옮기기
        deque.offerLast(deque.pollFirst())
    }
    // 마지막 카드 정답 출력
    println(deque.poll())
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;003&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/003.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/003.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1643774799939&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 2164 풍이 &amp;middot; mtjin/algorithm_practice@d6c5f1a&quot; data-og-description=&quot;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 44 additions and 0 deletions. +24 &amp;minus;0 백준 2164 카드2 -큐, 덱큐-/Main.java +20 &amp;minus;0 백준 2164&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgUy2b/hyNghG6uot/Ojl5fR7yqZiBxUDRKjFbjK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d6c5f1a8b7700cf43f1452d20989eec502fea653&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgUy2b/hyNghG6uot/Ojl5fR7yqZiBxUDRKjFbjK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 2164 풍이 &amp;middot; mtjin/algorithm_practice@d6c5f1a&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Showing 2 changed files with 44 additions and 0 deletions. +24 &amp;minus;0 백준 2164 카드2 -큐, 덱큐-/Main.java +20 &amp;minus;0 백준 2164&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/스택, 큐</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 2164 카드2</category>
      <category>백준 2164 카드2 java</category>
      <category>백준 2164 카드2 kotlin</category>
      <category>백준 2164 카드2 자바</category>
      <category>백준 2164 카드2 코틀린</category>
      <category>백준 카드2 자바</category>
      <category>백준 카드2 자바 코틀린</category>
      <category>카드2 자바 코틀린</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/667</guid>
      <comments>https://youngest-programming.tistory.com/667#entry667comment</comments>
      <pubDate>Wed, 2 Feb 2022 13:07:27 +0900</pubDate>
    </item>
    <item>
      <title>[면접정리] 2021 하반기 현대오토에버 커넥티드카 2차 면접 후기 -어플리케이션 개발/운영-</title>
      <link>https://youngest-programming.tistory.com/666</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;&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;649&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0FWrk/btrshzOyffH/KQns3LEvHguzV1TMT53juK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0FWrk/btrshzOyffH/KQns3LEvHguzV1TMT53juK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0FWrk/btrshzOyffH/KQns3LEvHguzV1TMT53juK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0FWrk%2FbtrshzOyffH%2FKQns3LEvHguzV1TMT53juK%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;649&quot; height=&quot;440&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지인의 현대 오토에버 2차면접 후기입니다. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;면접관 3 : 지원자 2&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;30분 동안 화상면접 진행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[질문 내용 - 개인적인 질문은 제외]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자기소개&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인턴&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3년 후 무엇을 하고 있을지 ?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3년 후에도 개발자로 있을 것인지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공백기간 동안 머했는지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코딩 테스트 난이도 어땠는지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인턴때 한것 간략히 설명&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어와 소프트웨어 도구는 왜 초급이라고 기재했는지 ?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 할말&lt;/p&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>필기 및 면접정리</category>
      <category>2021 하반기 현대오토에버 2차 면접 후기</category>
      <category>2021 현대오토에버 면접 후기</category>
      <category>Hyundai AutoEver 2차 면접 후기</category>
      <category>막내의막무가내 현대오토에버 면접 후기</category>
      <category>현대오토에버 2차면접 후기</category>
      <category>현대오토에버 it 면접 후기</category>
      <category>현대오토에버 sw 면접 후기</category>
      <category>현대오토에버 어플리케이션 개발 2차 면접 후기</category>
      <category>현대오토에버 어플리케이션 개발/운영 면접 후기</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/666</guid>
      <comments>https://youngest-programming.tistory.com/666#entry666comment</comments>
      <pubDate>Tue, 1 Feb 2022 21:13:52 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 클린 아키텍처 Hilt 추가 적용 (MVVM, Muliti Module, RxJava2, Hilt)</title>
      <link>https://youngest-programming.tistory.com/665</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;&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;667&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0XU4i/btrr4RbIJ9E/jdCisYw7TKWDP1L73Qjch0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0XU4i/btrr4RbIJ9E/jdCisYw7TKWDP1L73Qjch0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0XU4i/btrr4RbIJ9E/jdCisYw7TKWDP1L73Qjch0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0XU4i%2Fbtrr4RbIJ9E%2FjdCisYw7TKWDP1L73Qjch0%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;667&quot; height=&quot;604&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 안드로이드 아키텍처나 한번 훓을겸 예전에 한 프로젝트에 Hilt를 추가해봤는데 이에 대한 기록을 남겨볼까 합니다.&lt;/p&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;[안드로이드 MVVM 클린 아키텍처 프로젝트 정리 포스팅]&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/484&quot;&gt;https://youngest-programming.tistory.com/484&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1643715727522&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] 클린 아키텍처(Clean Architecture) 정리 및 구현&quot; data-og-description=&quot;[2021-04-28 업데이트] [2022-02-01 업데이트] Hilt 사용한 프로젝트 링크 하단에 추가 [프로젝트] github.com/mtjin/mtjin-android-clean-architecture-movieapp mtjin/mtjin-android-clean-architecture-movieap..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/484&quot; data-og-url=&quot;https://youngest-programming.tistory.com/484&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9t7Ub/hyNhZLlX2d/vFLECrP6RY5F9f9WXNs7a1/img.png?width=786&amp;amp;height=479&amp;amp;face=0_0_786_479,https://scrap.kakaocdn.net/dn/buAHLh/hyNgkwPHPl/Dz7Tmu1yAZAitzNWwwBg2k/img.png?width=786&amp;amp;height=479&amp;amp;face=0_0_786_479,https://scrap.kakaocdn.net/dn/CJbP2/hyNhPvczho/rKLQZoymjGrWcpQs52zQvK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/484&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/484&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9t7Ub/hyNhZLlX2d/vFLECrP6RY5F9f9WXNs7a1/img.png?width=786&amp;amp;height=479&amp;amp;face=0_0_786_479,https://scrap.kakaocdn.net/dn/buAHLh/hyNgkwPHPl/Dz7Tmu1yAZAitzNWwwBg2k/img.png?width=786&amp;amp;height=479&amp;amp;face=0_0_786_479,https://scrap.kakaocdn.net/dn/CJbP2/hyNhPvczho/rKLQZoymjGrWcpQs52zQvK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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;[안드로이드] 클린 아키텍처(Clean Architecture) 정리 및 구현&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[2021-04-28 업데이트] [2022-02-01 업데이트] Hilt 사용한 프로젝트 링크 하단에 추가 [프로젝트] github.com/mtjin/mtjin-android-clean-architecture-movieapp mtjin/mtjin-android-clean-architecture-movieap..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&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;MVVM, Multi Module, RxJava2, Dagger2, Koin 등을 사용하며 구현한 프로젝트였는데 추가로 Hilt를 적용한 예시를 만들어야겠다는 생각이 있었는데 오늘에서야 했네요... ㅎㅎ&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp/tree/main&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1643716023537&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/mtjin-android-clean-architecture-movieapp: Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger&quot; data-og-description=&quot;Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger2, Jetpack Lib) - GitHub - mtjin/mtjin-android-clean-architecture-movieapp: Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger2...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp/tree/main&quot; data-og-url=&quot;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dD5jUh/hyNgdLfb3O/MMJU2WgjxHecGSQ82WPbW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp/tree/main&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/mtjin-android-clean-architecture-movieapp/tree/main&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dD5jUh/hyNgdLfb3O/MMJU2WgjxHecGSQ82WPbW0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/mtjin-android-clean-architecture-movieapp: Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger2, Jetpack Lib) - GitHub - mtjin/mtjin-android-clean-architecture-movieapp: Clean Architecture 학습 및 구현(MVVM, RxJava2, Hilt, Koin, Dagger2...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main 과 clean-mvvm-multi-module-rxjava-hilt 브랜치에 구현해놨고 따로 설명하는 글은 남기지 않겠습니당.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 예전에 만든 프로젝트에서 구조만 바꾼거고 비현직자가 구현한거라 네이밍이나 구조가 좀 이상해도 양해부탁드립니다. ㅎㅎ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 기회되면 더 깔끔하게 바꿔보도록 하겠습니다 !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;MVVM, Multi Module, RxJava2, Hilt, Databinding, Room, AAC ViewModel, Glide, Retrofit2&lt;/p&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;b&gt;[구현내용]&lt;/b&gt;&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 자동로그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 영화 로컬캐싱&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 영화 검색 및 불러오기 무한스크롤&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android mvvm hilt rxjava</category>
      <category>막내의막무가내 클린아키텍처</category>
      <category>안드로이드 mvvm hilt</category>
      <category>안드로이드 클린아키텍처 hilt</category>
      <category>안드로이드 클린아키텍처 힐트</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/665</guid>
      <comments>https://youngest-programming.tistory.com/665#entry665comment</comments>
      <pubDate>Tue, 1 Feb 2022 21:02:53 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] Jetpack Navigation Fragment 관련 에러해결  java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{815f3ee} (abd6ddc7-177d-4b7a-99a0-3d2d4..</title>
      <link>https://youngest-programming.tistory.com/660</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 사항]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1807&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cafLwG/btrquQdxSz4/tnk6GMbWylFzQM36kjwGyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cafLwG/btrquQdxSz4/tnk6GMbWylFzQM36kjwGyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cafLwG/btrquQdxSz4/tnk6GMbWylFzQM36kjwGyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcafLwG%2FbtrquQdxSz4%2Ftnk6GMbWylFzQM36kjwGyk%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;1807&quot; height=&quot;470&quot; data-origin-width=&quot;1807&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;E/AndroidRuntime:&amp;nbsp;FATAL&amp;nbsp;EXCEPTION:&amp;nbsp;main &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Process:&amp;nbsp;com.mtjin.bungsegwon,&amp;nbsp;PID:&amp;nbsp;1717 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;java.lang.IllegalArgumentException:&amp;nbsp;No&amp;nbsp;view&amp;nbsp;found&amp;nbsp;for&amp;nbsp;id&amp;nbsp;0x7f090102&amp;nbsp;(com.mtjin.bungsegwon:id/main_navigation_view)&amp;nbsp;for&amp;nbsp;fragment&amp;nbsp;MainEnrollFragment{815f3ee}&amp;nbsp;(abd6ddc7-177d-4b7a-99a0-3d2d4c1a4610&amp;nbsp;id=0x7f090102&amp;nbsp;tag=2131296509) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:513) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:112) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1647) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3128) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:3065) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2988) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2180) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2106) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;androidx.fragment.app.FragmentManager$5.run(FragmentManager.java:524) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Handler.handleCallback(Handler.java:883) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Handler.dispatchMessage(Handler.java:100) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.os.Looper.loop(Looper.java:237) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;android.app.ActivityThread.main(ActivityThread.java:7811) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;java.lang.reflect.Method.invoke(Native&amp;nbsp;Method) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;at&amp;nbsp;com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076) &lt;br /&gt;I/Process:&amp;nbsp;Sending&amp;nbsp;signal.&amp;nbsp;PID:&amp;nbsp;1717&amp;nbsp;SIG:&amp;nbsp;9 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Jetpack Navigation을 사용중인데 홈화면에서 다른 프래그먼트로 이동 후 뒤로가기 버튼으로 다시 홈화면으로 돌아오면 위와 같은 에러로 앱이 팅기는 문제가 발생하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 원인]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;No&amp;nbsp;view&amp;nbsp;found&amp;nbsp;for&amp;nbsp;id&amp;nbsp;0x7f090102&amp;nbsp;(com.mtjin.bungsegwon:id/main_navigation_view)&amp;nbsp;for&amp;nbsp;fragment&amp;nbsp;MainEnrollFragment{&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러에 써있는대로 MainEnrollFragment 프래그먼트에서 main_navigation_view 라는 id를 못찾는 문제인 것 같았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 구글링을 해봤는데 제 해결방법과 다른거만 나왔지만 다 id를 수정해주거나 Jeptack Navigation을 안쓰고 일반적인&amp;nbsp; 트랜잭션으로 직접 프래그먼트을 구현하시는분은 replace로 바꾸는식으로 해결했음을 볼 수 있었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;getChildFragmentManager() 로 수정해서 해결하신분도 있었고요. 자세한건 아래 링크 남겨놨습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641906657747&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;Android Fragment no view found for ID?&quot; data-og-description=&quot;I have a fragment I am trying to add into a view. FragmentManager fragMgr=getSupportFragmentManager(); feed_parser_activity content = (feed_parser_activity)fragMgr ...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&quot; data-og-url=&quot;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/4YXwo/hyM3JRfq6m/EKj8WN6TLxqbtQNcitoguK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/7508044/android-fragment-no-view-found-for-id&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/4YXwo/hyM3JRfq6m/EKj8WN6TLxqbtQNcitoguK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;Android Fragment no view found for ID?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;I have a fragment I am trying to add into a view. FragmentManager fragMgr=getSupportFragmentManager(); feed_parser_activity content = (feed_parser_activity)fragMgr ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;a href=&quot;https://jionchu.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jionchu.tistory.com/133&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641906667564&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Android] java.lang.IllegalArgumentException: No view found for id for fragment&quot; data-og-description=&quot;프로젝트 리팩토링 진행 중 프래그먼트 연결 부분에서 다음과 같은 오류가 발생했다. java.lang.IllegalArgumentException: No view found for id 0x7f080056 for fragment MainFragment id=0x7f080056} at androi..&quot; data-og-host=&quot;jionchu.tistory.com&quot; data-og-source-url=&quot;https://jionchu.tistory.com/133&quot; data-og-url=&quot;https://jionchu.tistory.com/133&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dlSSZ0/hyM3FBlzFr/9xtHcenRSkgrPaFO8BUSK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b0bMPo/hyM3QW9eFT/NgAqgBSMPb4eeFWVYIXHZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://jionchu.tistory.com/133&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://jionchu.tistory.com/133&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dlSSZ0/hyM3FBlzFr/9xtHcenRSkgrPaFO8BUSK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b0bMPo/hyM3QW9eFT/NgAqgBSMPb4eeFWVYIXHZ0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;[Android] java.lang.IllegalArgumentException: No view found for id for fragment&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 리팩토링 진행 중 프래그먼트 연결 부분에서 다음과 같은 오류가 발생했다. java.lang.IllegalArgumentException: No view found for id 0x7f080056 for fragment MainFragment id=0x7f080056} at androi..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;jionchu.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;a href=&quot;https://pythonq.com/so/android/214638&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pythonq.com/so/android/214638&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641906648222&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;android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 &amp;mdash; ViewPager의 ViewPager - IT 툴 넷&quot; data-og-description=&quot;android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 &amp;mdash; ViewPager의 ViewPager 기사 출처 android android-fragments android-viewpager&quot; data-og-host=&quot;pythonq.com&quot; data-og-source-url=&quot;https://pythonq.com/so/android/214638&quot; data-og-url=&quot;https://pythonq.com/so/android/214638&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://pythonq.com/so/android/214638&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pythonq.com/so/android/214638&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;android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 &amp;mdash; ViewPager의 ViewPager - IT 툴 넷&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;android - IllegalArgumentException : 조각의 id에 대한보기를 찾을 수 없음 &amp;mdash; ViewPager의 ViewPager 기사 출처 android android-fragments android-viewpager&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;pythonq.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 해결]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;541&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvXStd/btrquhWKgRD/UuPzXGFuXJLeqCgVmgTLa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvXStd/btrquhWKgRD/UuPzXGFuXJLeqCgVmgTLa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvXStd/btrquhWKgRD/UuPzXGFuXJLeqCgVmgTLa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvXStd%2FbtrquhWKgRD%2FUuPzXGFuXJLeqCgVmgTLa0%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;850&quot; height=&quot;541&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;541&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 에러에 명시된 id인 main_navigation_view에 가보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;452&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beQDBi/btrqobQQIuA/Um9yNcjMr1EVs7odmAfTFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beQDBi/btrqobQQIuA/Um9yNcjMr1EVs7odmAfTFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beQDBi/btrqobQQIuA/Um9yNcjMr1EVs7odmAfTFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeQDBi%2FbtrqobQQIuA%2FUm9yNcjMr1EVs7odmAfTFK%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;864&quot; height=&quot;452&quot; data-origin-width=&quot;864&quot; data-origin-height=&quot;452&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fragment에 린트가 되어있고 FragmentContainerView로 변경해보라고 되어있어서 변경했더니 해결되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FragmentContainerView는 &lt;span style=&quot;background-color: #ffffff; color: #292929;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Fragment를 위해 특별히 설계된 레이아웃이며 FrameLayout을 확장하여 프래그먼트 트랜잭션을 안정적으로 처리 할 수 ​​있고, 프래그먼트 동작을 조정할 수있는 추가 기능도 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #292929;&quot;&gt;&lt;a href=&quot;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641906843197&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;FragmentContainerView &amp;nbsp;|&amp;nbsp; Android Developers&quot; data-og-description=&quot;FragmentContainerView public final class FragmentContainerView FragmentContainerView is a customized Layout designed specifically for Fragments. It extends FrameLayout, so it can reliably handle Fragment Transactions, and it also has additional features to&quot; data-og-host=&quot;developer.android.com&quot; data-og-source-url=&quot;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView&quot; data-og-url=&quot;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bSdef1/hyM3NzlHFq/XswIqi0Gxt80tmgwI87kp0/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676&quot;&gt;&lt;a href=&quot;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.android.com/reference/androidx/fragment/app/FragmentContainerView&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bSdef1/hyM3NzlHFq/XswIqi0Gxt80tmgwI87kp0/img.png?width=1201&amp;amp;height=676&amp;amp;face=0_0_1201_676');&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;FragmentContainerView &amp;nbsp;|&amp;nbsp; Android Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;FragmentContainerView public final class FragmentContainerView FragmentContainerView is a customized Layout designed specifically for Fragments. It extends FrameLayout, so it can reliably handle Fragment Transactions, and it also has additional features to&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.android.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #555555;&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;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>E/AndroidRuntime: FATAL EXCEPTION: main Process: com.mtjin.bungsegwon</category>
      <category>java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment</category>
      <category>PID: 1717 java.lang.IllegalArgumentException: No view found for id 0x7f090102 (com.mtjin.bungsegwon:id/main_navigation_view) for fragment MainEnrollFragment{815f3ee} (abd6ddc7-177d-4b7a-99a0-3d2d4c1a4610 id=0x7f090102 tag=2131296509) at androi</category>
      <category>막내의막무가내 프래그먼트 에러해결</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/660</guid>
      <comments>https://youngest-programming.tistory.com/660#entry660comment</comments>
      <pubDate>Tue, 11 Jan 2022 22:14:55 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 네이버맵 코드 정리 (마커, 현재위치표시, 카메라이동 및 감지, Geocoder 좌표 주소 변환 등)</title>
      <link>https://youngest-programming.tistory.com/659</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 안드로이드 개발을 하며 구글맵, 티맵, 카카오맵을 사용해봤는데 네이버맵은 처음 사용해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용한 코드를 메모하는 포스팅입니다 :)&lt;/p&gt;
&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://navermaps.github.io/android-map-sdk/guide-ko/1.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://navermaps.github.io/android-map-sdk/guide-ko/1.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641733343943&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;시작하기 &amp;middot; 네이버 지도 안드로이드 SDK&quot; data-og-description=&quot;No results matching &amp;quot;&amp;quot;&quot; data-og-host=&quot;navermaps.github.io&quot; data-og-source-url=&quot;https://navermaps.github.io/android-map-sdk/guide-ko/1.html&quot; data-og-url=&quot;https://navermaps.github.io/android-map-sdk/guide-ko/1.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://navermaps.github.io/android-map-sdk/guide-ko/1.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://navermaps.github.io/android-map-sdk/guide-ko/1.html&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;시작하기 &amp;middot; 네이버 지도 안드로이드 SDK&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;No results matching &quot;&quot;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;navermaps.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 네이버맵 관련 세팅과 사용법은 위 공식문서를 참고하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현해야하는 화면과 로직은 다음과 같았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 사용자 현재 위치 표시 (파랑 아이콘)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 상점을 등록할 마커 (빨간색 아이콘) - 항상 가운데에 고정되어야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 처음 현재위치로 카메라와 아이콘들이 세팅되어있어야함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 움직일때는 이동중 텍스트와 함께 확인 버튼 비활성화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 카메라 이동이 멈추면 빨간색 마커 좌표를 주소로 변환하여 텍스트에 세팅하고 확인 버튼 활성화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;464&quot; data-origin-height=&quot;955&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WQ0vk/btrp6wOScto/SQIpQtlZKHg672LX5MtaiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WQ0vk/btrp6wOScto/SQIpQtlZKHg672LX5MtaiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WQ0vk/btrp6wOScto/SQIpQtlZKHg672LX5MtaiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWQ0vk%2Fbtrp6wOScto%2FSQIpQtlZKHg672LX5MtaiK%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;464&quot; height=&quot;955&quot; data-origin-width=&quot;464&quot; data-origin-height=&quot;955&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;474&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMcx8U/btrp7RrerOe/36Z6UfR1ZGfYhWmvY1gKy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMcx8U/btrp7RrerOe/36Z6UfR1ZGfYhWmvY1gKy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMcx8U/btrp7RrerOe/36Z6UfR1ZGfYhWmvY1gKy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMcx8U%2Fbtrp7RrerOe%2F36Z6UfR1ZGfYhWmvY1gKy0%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;474&quot; height=&quot;957&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;957&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;466&quot; data-origin-height=&quot;955&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rFboJ/btrqaJeEv9n/cDzQTexfkEZW9KkGRMlKdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rFboJ/btrqaJeEv9n/cDzQTexfkEZW9KkGRMlKdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rFboJ/btrqaJeEv9n/cDzQTexfkEZW9KkGRMlKdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrFboJ%2FbtrqaJeEv9n%2FcDzQTexfkEZW9KkGRMlKdk%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;466&quot; height=&quot;955&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;955&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Manifest]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 현재 위치를 받아오기 위해서는 manifest에 위치 권한을 등록해주어야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1641733638926&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;manifest xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    package=&quot;com.mtjin.bungsegwon&quot;&amp;gt;

    &amp;lt;uses-permission android:name=&quot;android.permission.INTERNET&quot; /&amp;gt;
    &amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_COARSE_LOCATION&quot; /&amp;gt;
    &amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_FINE_LOCATION&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;[build.gradle]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/ParkSangGwon/TedPermission&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/ParkSangGwon/TedPermission&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641733713459&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow&quot; data-og-description=&quot;Easy check permission library for Android Marshmallow - GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/ParkSangGwon/TedPermission&quot; data-og-url=&quot;https://github.com/ParkSangGwon/TedPermission&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bcXSUx/hyM20xcKBX/zUKy2SOoTwZ7OxJPWuophK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/ParkSangGwon/TedPermission&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/ParkSangGwon/TedPermission&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bcXSUx/hyM20xcKBX/zUKy2SOoTwZ7OxJPWuophK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Easy check permission library for Android Marshmallow - GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드에서 위치권한 요청을 위해 저는 TedPermission 라이브러리를 사용했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평소에도 자주 사용하는데 정말 편합니다. ㅎㅎ 감사합니다 :)&lt;/p&gt;
&lt;pre class=&quot;clean&quot;&gt;&lt;code&gt;// Ted Permission - RxJava3
implementation 'io.github.ParkSangGwon:tedpermission-rx3:3.3.0'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Layout XML]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이아웃은 크게 볼건 없을것 같고 네이버맵을 FrameLayout에 프래그먼트 코드에서 동적으로 넣어주는식으로 구현했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F5mGO/btrqii1UpoG/bxaTxkxjkQGkDooY4VpN51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F5mGO/btrqii1UpoG/bxaTxkxjkQGkDooY4VpN51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F5mGO/btrqii1UpoG/bxaTxkxjkQGkDooY4VpN51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF5mGO%2Fbtrqii1UpoG%2FbxaTxkxjkQGkDooY4VpN51%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;695&quot; height=&quot;588&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1641733753227&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;layout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
    xmlns:tools=&quot;http://schemas.android.com/tools&quot;&amp;gt;

    &amp;lt;data&amp;gt;

    &amp;lt;/data&amp;gt;

    &amp;lt;androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        tools:context=&quot;.views.location_enroll.LocationEnrollFragment&quot;&amp;gt;

        &amp;lt;FrameLayout
            android:id=&quot;@+id/naver_map&quot;
            android:layout_width=&quot;match_parent&quot;
            android:layout_height=&quot;match_parent&quot; /&amp;gt;

        &amp;lt;TextView
            android:layout_width=&quot;188dp&quot;
            android:layout_height=&quot;30dp&quot;
            android:layout_marginTop=&quot;100dp&quot;
            android:background=&quot;@drawable/rect_round_white_radius_30&quot;
            android:gravity=&quot;center&quot;
            android:text=&quot;@string/text_move_map_set_location&quot;
            android:textColor=&quot;@color/black_2d2d2d&quot;
            android:textSize=&quot;12dp&quot;
            app:layout_constraintEnd_toEndOf=&quot;parent&quot;
            app:layout_constraintStart_toStartOf=&quot;parent&quot;
            app:layout_constraintTop_toTopOf=&quot;parent&quot; /&amp;gt;

        &amp;lt;TextView
            android:id=&quot;@+id/tv_location&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;73dp&quot;
            android:layout_marginHorizontal=&quot;16dp&quot;
            android:layout_marginBottom=&quot;8dp&quot;
            android:background=&quot;@drawable/rect_round_white_radius_8&quot;
            android:gravity=&quot;center&quot;
            android:paddingHorizontal=&quot;12dp&quot;
            android:textColor=&quot;@color/black_2d2d2d&quot;
            app:layout_constraintBottom_toTopOf=&quot;@id/btn_confirm&quot;
            app:layout_constraintEnd_toEndOf=&quot;parent&quot;
            app:layout_constraintStart_toStartOf=&quot;parent&quot;
            tools:text=&quot;서울특별시 강남구&quot; /&amp;gt;

        &amp;lt;androidx.appcompat.widget.AppCompatButton
            android:id=&quot;@+id/btn_confirm&quot;
            android:layout_width=&quot;0dp&quot;
            android:layout_height=&quot;52dp&quot;
            android:layout_marginStart=&quot;16dp&quot;
            android:layout_marginTop=&quot;23.74dp&quot;
            android:layout_marginEnd=&quot;16dp&quot;
            android:layout_marginBottom=&quot;56dp&quot;
            android:background=&quot;@drawable/rect_round_ffd464_radius_8&quot;
            android:text=&quot;@string/confirm_text&quot;
            android:textColor=&quot;@color/black&quot;
            android:textSize=&quot;14dp&quot;
            android:textStyle=&quot;bold&quot;
            app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
            app:layout_constraintEnd_toEndOf=&quot;parent&quot;
            app:layout_constraintStart_toStartOf=&quot;parent&quot; /&amp;gt;

        &amp;lt;com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id=&quot;@+id/fab_tracking&quot;
            android:layout_width=&quot;wrap_content&quot;
            android:layout_height=&quot;wrap_content&quot;
            android:layout_marginEnd=&quot;16dp&quot;
            android:layout_marginBottom=&quot;16dp&quot;
            android:backgroundTint=&quot;@color/yellow_ffd464&quot;
            android:contentDescription=&quot;추적&quot;
            android:src=&quot;@drawable/ic_tracking&quot;
            app:backgroundTint=&quot;@color/yellow_ffd464&quot;
            app:layout_constraintBottom_toTopOf=&quot;@id/tv_location&quot;
            app:layout_constraintEnd_toEndOf=&quot;parent&quot; /&amp;gt;


    &amp;lt;/androidx.constraintlayout.widget.ConstraintLayout&amp;gt;
&amp;lt;/layout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Fragment]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프래그먼트에 로직들을 구현했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나하나 다 설명하긴 힘들고 메모용이라 주석을 참고하시면 될 것 같습니다. ㅎㅎ&lt;/p&gt;
&lt;pre id=&quot;code_1641733856859&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.mtjin.bungsegwon.views.location_enroll

import android.Manifest
import android.content.pm.PackageManager
import android.graphics.Color
import android.location.Address
import android.location.Geocoder
import android.location.Location
import android.util.Log
import androidx.annotation.UiThread
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
import com.gun0912.tedpermission.rx3.TedPermission
import com.mtjin.bungsegwon.R
import com.mtjin.bungsegwon.base.BaseFragment
import com.mtjin.bungsegwon.databinding.FragmentLocationEnrollBinding
import com.naver.maps.geometry.LatLng
import com.naver.maps.map.CameraUpdate
import com.naver.maps.map.MapFragment
import com.naver.maps.map.NaverMap
import com.naver.maps.map.OnMapReadyCallback
import com.naver.maps.map.overlay.Marker
import com.naver.maps.map.overlay.OverlayImage
import com.naver.maps.map.util.FusedLocationSource
import java.io.IOException
import java.util.*


class LocationEnrollFragment :
    BaseFragment&amp;lt;FragmentLocationEnrollBinding&amp;gt;(R.layout.fragment_location_enroll),
    OnMapReadyCallback {
    private lateinit var fusedLocationClient: FusedLocationProviderClient
    private lateinit var locationSource: FusedLocationSource
    private lateinit var naverMap: NaverMap

    override fun init() {
        fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext())
        requestPermissions()
        initView()
    }

    private fun initView() {
        // 네이버맵 동적으로 불러오기
        val fm = childFragmentManager
        val mapFragment = fm.findFragmentById(R.id.naver_map) as MapFragment?
            ?: MapFragment.newInstance().also {
                fm.beginTransaction().add(R.id.naver_map, it).commit()
            }
        mapFragment.getMapAsync(this)
    }

    // 위치권한 관련 요청
    private fun requestPermissions() {
        // 내장 위치 추적 기능 사용
        locationSource =
            FusedLocationSource(this, LOCATION_PERMISSION_REQUEST_CODE)
        TedPermission.create()
            .setRationaleTitle(&quot;위치권한 요청&quot;)
            .setRationaleMessage(&quot;현재 위치로 이동하기 위해 위치권한이 필요합니다.&quot;) // &quot;we need permission for read contact and find your location&quot;
            .setPermissions(
                Manifest.permission.ACCESS_COARSE_LOCATION,
                Manifest.permission.ACCESS_FINE_LOCATION
            )
            .request()
            .subscribe({ tedPermissionResult -&amp;gt;
                if (!tedPermissionResult.isGranted) {
                    showToast(getString(R.string.location_permission_denied_msg))
                }
            }) { throwable -&amp;gt; Log.e(&quot;AAAAAA&quot;, throwable.message.toString()) }


    }

    // 네이버맵 불러오기가 완료되면 콜백
    @UiThread
    override fun onMapReady(naverMap: NaverMap) {
        this.naverMap = naverMap
        // 내장 위치 추적 기능 사용
        naverMap.locationSource = locationSource

        // 빨간색 표시 마커 (네이버맵 현재 가운데에 항상 위치)
        val marker = Marker()
        marker.position = LatLng(
            naverMap.cameraPosition.target.latitude,
            naverMap.cameraPosition.target.longitude
        )
        marker.icon = OverlayImage.fromResource(R.drawable.ic_location_enroll)
        marker.map = naverMap

        // 카메라의 움직임에 대한 이벤트 리스너 인터페이스.
        // 참고 : https://navermaps.github.io/android-map-sdk/reference/com/naver/maps/map/package-summary.html
        naverMap.addOnCameraChangeListener { reason, animated -&amp;gt;
            Log.i(&quot;NaverMap&quot;, &quot;카메라 변경 - reson: $reason, animated: $animated&quot;)
            marker.position = LatLng(
                // 현재 보이는 네이버맵의 정중앙 가운데로 마커 이동
                naverMap.cameraPosition.target.latitude,
                naverMap.cameraPosition.target.longitude
            )
            // 주소 텍스트 세팅 및 확인 버튼 비활성화
            binding.tvLocation.run {
                text = &quot;위치 이동 중&quot;
                setTextColor(Color.parseColor(&quot;#c4c4c4&quot;))
            }
            binding.btnConfirm.run {
                setBackgroundResource(R.drawable.rect_round_c4c4c4_radius_8)
                setTextColor(Color.parseColor(&quot;#ffffff&quot;))
                isEnabled = false
            }
        }

        // 카메라의 움직임 종료에 대한 이벤트 리스너 인터페이스.
        naverMap.addOnCameraIdleListener {
            marker.position = LatLng(
                naverMap.cameraPosition.target.latitude,
                naverMap.cameraPosition.target.longitude
            )
            // 좌표 -&amp;gt; 주소 변환 텍스트 세팅, 버튼 활성화
            binding.tvLocation.run {
                text = getAddress(
                    naverMap.cameraPosition.target.latitude,
                    naverMap.cameraPosition.target.longitude
                )
                setTextColor(Color.parseColor(&quot;#2d2d2d&quot;))
            }
            binding.btnConfirm.run {
                setBackgroundResource(R.drawable.rect_round_ffd464_radius_8)
                setTextColor(Color.parseColor(&quot;#FF000000&quot;))
                isEnabled = true
            }
        }

        if (ActivityCompat.checkSelfPermission(
                requireContext(),
                Manifest.permission.ACCESS_FINE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED &amp;amp;&amp;amp; ActivityCompat.checkSelfPermission(
                requireContext(),
                Manifest.permission.ACCESS_COARSE_LOCATION
            ) != PackageManager.PERMISSION_GRANTED
        ) {
            return
        }
        // 사용자 현재 위치 받아오기
        var currentLocation: Location?
        fusedLocationClient.lastLocation
            .addOnSuccessListener { location: Location? -&amp;gt;
                currentLocation = location
                // 위치 오버레이의 가시성은 기본적으로 false로 지정되어 있습니다. 가시성을 true로 변경하면 지도에 위치 오버레이가 나타납니다.
                // 파랑색 점, 현재 위치 표시
                naverMap.locationOverlay.run {
                    isVisible = true
                    position = LatLng(currentLocation!!.latitude, currentLocation!!.longitude)
                }

                // 카메라 현재위치로 이동
                val cameraUpdate = CameraUpdate.scrollTo(
                    LatLng(
                        currentLocation!!.latitude,
                        currentLocation!!.longitude
                    )
                )
                naverMap.moveCamera(cameraUpdate)

                // 빨간색 마커 현재위치로 변경
                marker.position = LatLng(
                    naverMap.cameraPosition.target.latitude,
                    naverMap.cameraPosition.target.longitude
                )
            }
    }

    // 좌표 -&amp;gt; 주소 변환
    private fun getAddress(lat: Double, lng: Double): String {
        val geoCoder = Geocoder(requireContext(), Locale.KOREA)
        val address: ArrayList&amp;lt;Address&amp;gt;
        var addressResult = &quot;주소를 가져 올 수 없습니다.&quot;
        try {
            //세번째 파라미터는 좌표에 대해 주소를 리턴 받는 갯수로
            //한좌표에 대해 두개이상의 이름이 존재할수있기에 주소배열을 리턴받기 위해 최대갯수 설정
            address = geoCoder.getFromLocation(lat, lng, 1) as ArrayList&amp;lt;Address&amp;gt;
            if (address.size &amp;gt; 0) {
                // 주소 받아오기
                val currentLocationAddress = address[0].getAddressLine(0)
                    .toString()
                addressResult = currentLocationAddress

            }

        } catch (e: IOException) {
            e.printStackTrace()
        }
        return addressResult
    }


    companion object {
        private const val LOCATION_PERMISSION_REQUEST_CODE = 1000
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 사용해보는 맵이라 몇가지 구현부분에서 삽질이 좀 많고 코드도 좀 더럽네요... ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보시다가 궁금하신 점이 있으면 댓글로 남겨주시면 답변해드리겠습니다. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android naver map</category>
      <category>android 위치권한 요청</category>
      <category>막내의막무가내 안드로이드</category>
      <category>안드로이드 Geocoder</category>
      <category>안드로이드 네이버맵</category>
      <category>안드로이드 네이버맵 API 현재위치</category>
      <category>안드로이드 네이버맵 마커 세팅</category>
      <category>안드로이드 네이버맵 움직임 감지</category>
      <category>안드로이드 네이버맵 프래그먼트 콜백</category>
      <category>안드로이드 좌표 주소 변환</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/659</guid>
      <comments>https://youngest-programming.tistory.com/659#entry659comment</comments>
      <pubDate>Sun, 9 Jan 2022 22:14:16 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 10974 모든 순열 -백트래킹- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/658</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/10974&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/10974&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1641298797409&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;10974번: 모든 순열&quot; data-og-description=&quot;N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/10974&quot; data-og-url=&quot;https://www.acmicpc.net/problem/10974&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Olwjg/hyMXNGujEM/ehiW3px5TUNBdumDSZbnhk/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/10974&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/10974&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Olwjg/hyMXNGujEM/ehiW3px5TUNBdumDSZbnhk/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;10974번: 모든 순열&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LZh8i/btrpDMxt6Dr/DilWvSNzGOOgs246Gjg4b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LZh8i/btrpDMxt6Dr/DilWvSNzGOOgs246Gjg4b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LZh8i/btrpDMxt6Dr/DilWvSNzGOOgs246Gjg4b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLZh8i%2FbtrpDMxt6Dr%2FDilWvSNzGOOgs246Gjg4b0%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;1166&quot; height=&quot;890&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;890&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 코볼만 쓰고 있는데 자바 정말 오랜만에 쓰네요.... 그립다 자바야 ㅜㅜㅜㅜㅜㅜㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641298883534&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {
    private static int N;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        boolean[] isVisited = new boolean[N+1];
        dfs(0, isVisited, new int[N]);
    }

    private static void dfs(int depth, boolean[] isVisited, int[] nums) {
        if (depth == N) {
            for (int i = 0; i &amp;lt; nums.length; i++) {
                System.out.print(nums[i] + &quot; &quot;);
            }
            System.out.println();
            return;
        }
        for (int i = 1; i &amp;lt;= N; i++) {
            if (!isVisited[i]) {
                isVisited[i] = true;
                nums[depth] = i;
                dfs(depth + 1, isVisited, nums);
                isVisited[i] = false;
            }
        }
    }


}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641298896854&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*

private var N = 0
fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    N = sc.nextInt()
    val isVisited = BooleanArray(N + 1)
    dfs(0, isVisited, IntArray(N))
}

private fun dfs(depth: Int, isVisited: BooleanArray, nums: IntArray) {
    if (depth == N) {
        for (i in nums.indices) {
            print(nums[i].toString() + &quot; &quot;)
        }
        println()
        return
    }
    for (i in 1..N) {
        if (!isVisited[i]) {
            isVisited[i] = true
            nums[depth] = i
            dfs(depth + 1, isVisited, nums)
            isVisited[i] = false
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/DFS, BFS, 시뮬, 백트래킹</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 10974 모든 순열 자바</category>
      <category>백준 10974 모든 순열 코틀린</category>
      <category>백준 10974 자바</category>
      <category>백준 10974 코틀린</category>
      <category>백준 모든 순열 자바</category>
      <category>백준 모든 순열 코틀린</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/658</guid>
      <comments>https://youngest-programming.tistory.com/658#entry658comment</comments>
      <pubDate>Tue, 4 Jan 2022 21:22:29 +0900</pubDate>
    </item>
    <item>
      <title>[일상] 2021년 12월 일상 4 - 여의도 한우 오마카세 도쿄등심, 폴바셋 아이스크림, 깐부치킨, 계림닭도리탕, 동남집 곰탕, 스타벅스, 파</title>
      <link>https://youngest-programming.tistory.com/656</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;true&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;
 &lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot;&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;안녕하세요~ 2021년 12월 네 번째 일상포스팅입니다 ㅎㅎ&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640506155722&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2013-21%20%EB%A9%98%ED%95%98%ED%83%8421%EB%A6%AC%EB%B9%99%ED%85%94%202%EC%B8%B5%20210%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1308583811&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482665%2C%22mapCenterY%22%3A1119478%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482669%2C%22y%22%3A1119483%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%A2%85%EB%A1%9C%EA%B3%84%EB%A6%BC%EB%8B%AD%EB%8F%84%EB%A6%AC%ED%83%95%EC%9B%90%EC%A1%B0%20%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%82%AC%EB%8B%B9%EC%A0%90%22%2C%22confirmid%22%3A1308583811%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482665&amp;amp;mapY=1119478&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-786-1113&amp;amp;title=%EC%A2%85%EB%A1%9C%EA%B3%84%EB%A6%BC%EB%8B%AD%EB%8F%84%EB%A6%AC%ED%83%95%EC%9B%90%EC%A1%B0%20%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%82%AC%EB%8B%B9%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2013-21%20%EB%A9%98%ED%95%98%ED%83%8421%EB%A6%AC%EB%B9%99%ED%85%94%202%EC%B8%B5%20210%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1308583811&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482665%2C%22mapCenterY%22%3A1119478%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482669%2C%22y%22%3A1119483%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%A2%85%EB%A1%9C%EA%B3%84%EB%A6%BC%EB%8B%AD%EB%8F%84%EB%A6%AC%ED%83%95%EC%9B%90%EC%A1%B0%20%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%82%AC%EB%8B%B9%EC%A0%90%22%2C%22confirmid%22%3A1308583811%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482665&amp;amp;mapY=1119478&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-786-1113&amp;amp;title=%EC%A2%85%EB%A1%9C%EA%B3%84%EB%A6%BC%EB%8B%AD%EB%8F%84%EB%A6%AC%ED%83%95%EC%9B%90%EC%A1%B0%20%EA%B5%AD%ED%9A%8C%EC%9D%98%EC%82%AC%EB%8B%B9%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=482665%2C1119478&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A482669%2C1119483&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640506155722&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;회사 점심시간에&lt;b&gt; 종로계림닭도리탕원조 국회의사당점&lt;/b&gt;에 다녀왔다.&lt;br&gt;종로가 본점이고 몇십년 전통 닭도리탕 맛집이라고한다. 유명하다함!!&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJHv6X/btroYjacAov/c8nSykAgoZG3ACVh9EaS00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJHv6X/btroYjacAov/c8nSykAgoZG3ACVh9EaS00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJHv6X/btroYjacAov/c8nSykAgoZG3ACVh9EaS00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJHv6X%2FbtroYjacAov%2Fc8nSykAgoZG3ACVh9EaS00%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;720&quot; height=&quot;754&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;한 국자씩 덜고 찍은 3인분 사진인데 닭도 푸짐하게 들어있고 감자, 라면, 떡 등 다양한 사리도 들어있다.&lt;br&gt;남자 세싱 먹는데 다 못먹고 남길정도로 양은 많다.&lt;br&gt;그리고 라면 대신 우동으로 선택할 수 있고 다먹은뒤에는 볶음밥도 가능하고 매운맛도 조절가능하다.&lt;br&gt;정말 오랜만에 닭도리탕을 먹었는데 맛있게 먹었다!&lt;br&gt;가격은 만원초반이었던걸로 기억한다.&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;971&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dfCujB/btroSuLgnfJ/zukcFx5yKucESdaU1xx810/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dfCujB/btroSuLgnfJ/zukcFx5yKucESdaU1xx810/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dfCujB/btroSuLgnfJ/zukcFx5yKucESdaU1xx810/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdfCujB%2FbtroSuLgnfJ%2FzukcFx5yKucESdaU1xx810%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;734&quot; height=&quot;971&quot; data-origin-width=&quot;734&quot; data-origin-height=&quot;971&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;요즘 닭가슴살을 먹고 있는데 &lt;b&gt;하림 닭가슴살 훈제&lt;/b&gt; 맛있고 단백질도 많이 들어있어서 추천한다. &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640506512681&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-9%20%EB%8D%94%ED%95%98%EC%9A%B0%EC%8A%A4%EC%86%8C%ED%98%B8%20B105%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=2012079514&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481915%2C%22mapCenterY%22%3A1118638%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481915%2C%22y%22%3A1118643%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%B9%B4%EC%B8%A0%EC%B9%B4%EC%B8%A0%22%2C%22confirmid%22%3A2012079514%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481915&amp;amp;mapY=1118638&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=&amp;amp;title=%EC%B9%B4%EC%B8%A0%EC%B9%B4%EC%B8%A0&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-9%20%EB%8D%94%ED%95%98%EC%9A%B0%EC%8A%A4%EC%86%8C%ED%98%B8%20B105%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=2012079514&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481915%2C%22mapCenterY%22%3A1118638%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481915%2C%22y%22%3A1118643%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%B9%B4%EC%B8%A0%EC%B9%B4%EC%B8%A0%22%2C%22confirmid%22%3A2012079514%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481915&amp;amp;mapY=1118638&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=&amp;amp;title=%EC%B9%B4%EC%B8%A0%EC%B9%B4%EC%B8%A0&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=481915%2C1118638&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A481915%2C1118643&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640506512681&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;회사 점심시간에 돈까스 맛집 &lt;b&gt;카츠카츠&lt;/b&gt;라 여의점에 다녀왔다. &lt;br&gt;돈까스 사랑 :)&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SHGZH/btroRdC3qk3/qaaVZg4x00k8jNdNPwgz11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SHGZH/btroRdC3qk3/qaaVZg4x00k8jNdNPwgz11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SHGZH/btroRdC3qk3/qaaVZg4x00k8jNdNPwgz11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSHGZH%2FbtroRdC3qk3%2FqaaVZg4x00k8jNdNPwgz11%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;1299&quot; height=&quot;968&quot; data-origin-width=&quot;1299&quot; data-origin-height=&quot;968&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;히레카츠 세트를 시켜먹었고 가격은 14,000원으로 좀 비싼편이다. &lt;br&gt;부드러운 맛이 특징인 집이다!&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640506663945&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-9&amp;amp;addtype=1&amp;amp;confirmid=1746182269&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481920%2C%22mapCenterY%22%3A1118663%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481921%2C%22y%22%3A1118668%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8%20KBS%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A1746182269%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481920&amp;amp;mapY=1118663&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=0507-1323-5600&amp;amp;title=%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8%20KBS%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-9&amp;amp;addtype=1&amp;amp;confirmid=1746182269&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481920%2C%22mapCenterY%22%3A1118663%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481921%2C%22y%22%3A1118668%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8%20KBS%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A1746182269%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481920&amp;amp;mapY=1118663&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=0507-1323-5600&amp;amp;title=%ED%8C%8C%EB%A6%AC%EB%B0%94%EA%B2%8C%ED%8A%B8%20KBS%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=481920%2C1118663&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A481921%2C1118668&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640506663945&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;요즘&lt;b&gt; 파리바게트&lt;/b&gt; 쿠폰을 받아서 샌드위치도 자주먹었다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l9FBd/btroTndN5Kf/qufiidXGAuHRbEMzeLzxK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l9FBd/btroTndN5Kf/qufiidXGAuHRbEMzeLzxK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l9FBd/btroTndN5Kf/qufiidXGAuHRbEMzeLzxK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9FBd%2FbtroTndN5Kf%2FqufiidXGAuHRbEMzeLzxK0%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;731&quot; height=&quot;865&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;865&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;720&quot; data-origin-height=&quot;967&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coAyUn/btroSVoiz88/yF3zTxCthQ0sKIfz32HJZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coAyUn/btroSVoiz88/yF3zTxCthQ0sKIfz32HJZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coAyUn/btroSVoiz88/yF3zTxCthQ0sKIfz32HJZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoAyUn%2FbtroSVoiz88%2FyF3zTxCthQ0sKIfz32HJZ1%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;720&quot; height=&quot;967&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;967&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;빵집 샌드위치는 언제나 옳다. ㅎㅎ&lt;br&gt;(편의점꺼는 실패한적이 있음..)&lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640506783580&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EA%B5%AC%EB%A1%9C%EA%B5%AC%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EB%8F%99%20692&amp;amp;addtype=1&amp;amp;confirmid=26776860&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A475590%2C%22mapCenterY%22%3A1113798%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A475593%2C%22y%22%3A1113801%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%98%84%EB%8C%80%EB%B0%B1%ED%99%94%EC%A0%90%20%EB%94%94%ED%81%90%EB%B8%8C%EC%8B%9C%ED%8B%B0%EC%A0%90%22%2C%22confirmid%22%3A26776860%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=475590&amp;amp;mapY=1113798&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1153051000&amp;amp;tel=02-2622-2233&amp;amp;title=%ED%98%84%EB%8C%80%EB%B0%B1%ED%99%94%EC%A0%90%20%EB%94%94%ED%81%90%EB%B8%8C%EC%8B%9C%ED%8B%B0%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EA%B5%AC%EB%A1%9C%EA%B5%AC%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EB%8F%99%20692&amp;amp;addtype=1&amp;amp;confirmid=26776860&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A475590%2C%22mapCenterY%22%3A1113798%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A475593%2C%22y%22%3A1113801%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%98%84%EB%8C%80%EB%B0%B1%ED%99%94%EC%A0%90%20%EB%94%94%ED%81%90%EB%B8%8C%EC%8B%9C%ED%8B%B0%EC%A0%90%22%2C%22confirmid%22%3A26776860%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=475590&amp;amp;mapY=1113798&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1153051000&amp;amp;tel=02-2622-2233&amp;amp;title=%ED%98%84%EB%8C%80%EB%B0%B1%ED%99%94%EC%A0%90%20%EB%94%94%ED%81%90%EB%B8%8C%EC%8B%9C%ED%8B%B0%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=475590%2C1113798&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A475593%2C1113801&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640506783580&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;퇴근 후 회사동기와 미소페 구두수선 및 쇼핑도 할려고 신도림역에 위치한&lt;b&gt; 현대백화점 디큐브시티점&lt;/b&gt;에 다녀왔다. &lt;br&gt;(더현대서울에는 미소페가 없더라 ㅠㅠ)&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;971&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAtUmN/btroXM4JBcF/PShzWyWu12uGRxUhUfuin1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAtUmN/btroXM4JBcF/PShzWyWu12uGRxUhUfuin1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAtUmN/btroXM4JBcF/PShzWyWu12uGRxUhUfuin1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAtUmN%2FbtroXM4JBcF%2FPShzWyWu12uGRxUhUfuin1%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;726&quot; height=&quot;971&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;971&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;지금쯤이면 시즌오프 할인행사 좀 하겠지하고 니트를 사려고 갔는데 라코스테 30%할인빼고 나머진 1월달에 한다고 하더라.. 폴로랑 빈폴거도 사고 싶었는데 할인없인 너무비싸서 못샀다. ㅎㅅㅎ&lt;br&gt;겨울 시즌오프 할인행사를 즐기려면 1월달에 가야한다는걸 기억하자!&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;847&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYmqUA/btroRZY1MTG/8KoPkgAaIiYbbQVPBvRFRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYmqUA/btroRZY1MTG/8KoPkgAaIiYbbQVPBvRFRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYmqUA/btroRZY1MTG/8KoPkgAaIiYbbQVPBvRFRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYmqUA%2FbtroRZY1MTG%2F8KoPkgAaIiYbbQVPBvRFRk%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;1300&quot; height=&quot;847&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;847&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;결국 라코스테에서 니트 2벌을 질러버렸다.&lt;br&gt;라코스테 니트만 이제 4개다.. 브랜드 겹치는걸 그닥 상관안해서 사긴했지만 앞으론 무신사에서 싸게 사야지..&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640507188798&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EA%B5%AC%EB%A1%9C%EA%B5%AC%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EB%8F%99%20694%20%ED%81%AC%EB%9D%BC%EC%9A%B4%EB%B9%8C%EC%83%81%EA%B0%80%20108%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=27383722&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A474375%2C%22mapCenterY%22%3A1113438%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A474379%2C%22y%22%3A1113442%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%83%88%EB%B2%BD%EC%A7%91%EC%96%91%EA%B3%B1%EC%B0%BD%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EC%A0%90%22%2C%22confirmid%22%3A27383722%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=474375&amp;amp;mapY=1113438&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1153051000&amp;amp;tel=02-2296-0325&amp;amp;title=%EC%83%88%EB%B2%BD%EC%A7%91%EC%96%91%EA%B3%B1%EC%B0%BD%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EA%B5%AC%EB%A1%9C%EA%B5%AC%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EB%8F%99%20694%20%ED%81%AC%EB%9D%BC%EC%9A%B4%EB%B9%8C%EC%83%81%EA%B0%80%20108%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=27383722&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A474375%2C%22mapCenterY%22%3A1113438%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A474379%2C%22y%22%3A1113442%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%83%88%EB%B2%BD%EC%A7%91%EC%96%91%EA%B3%B1%EC%B0%BD%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EC%A0%90%22%2C%22confirmid%22%3A27383722%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=474375&amp;amp;mapY=1113438&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1153051000&amp;amp;tel=02-2296-0325&amp;amp;title=%EC%83%88%EB%B2%BD%EC%A7%91%EC%96%91%EA%B3%B1%EC%B0%BD%20%EC%8B%A0%EB%8F%84%EB%A6%BC%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=474375%2C1113438&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A474379%2C1113442&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640507188798&quot;&gt;&lt;/iframe&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;967&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmCkuu/btroTlfZqrU/5VeHR4qPYmeGfKURhbe1lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmCkuu/btroTlfZqrU/5VeHR4qPYmeGfKURhbe1lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmCkuu/btroTlfZqrU/5VeHR4qPYmeGfKURhbe1lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmCkuu%2FbtroTlfZqrU%2F5VeHR4qPYmeGfKURhbe1lk%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;868&quot; height=&quot;967&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;967&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;쇼핑 후 신도림역에서 10분정도 걸어가면 있는 30년 전통!!! &lt;b&gt;새벽집 양곱창&lt;/b&gt;을 먹고왔다. &lt;br&gt;처음 가보는데 손님도 많고 연예인 사진이며 느낌이 아 맛집이다라는 삘이 딱왔다.&lt;br&gt;나중에 알고보니 여기 신도림역에만 있는 로컬 유일 맛집이다!&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vK4wW/btroYkAeclq/knlc2LVPemO702sS5BE9T1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vK4wW/btroYkAeclq/knlc2LVPemO702sS5BE9T1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vK4wW/btroYkAeclq/knlc2LVPemO702sS5BE9T1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvK4wW%2FbtroYkAeclq%2Fknlc2LVPemO702sS5BE9T1%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;1298&quot; height=&quot;968&quot; data-origin-width=&quot;1298&quot; data-origin-height=&quot;968&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;728&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lToJR/btroWCHR9Ow/9OAVePiP22eW3tYkuOBkLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lToJR/btroWCHR9Ow/9OAVePiP22eW3tYkuOBkLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lToJR/btroWCHR9Ow/9OAVePiP22eW3tYkuOBkLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlToJR%2FbtroWCHR9Ow%2F9OAVePiP22eW3tYkuOBkLk%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;728&quot; height=&quot;968&quot; data-origin-width=&quot;728&quot; data-origin-height=&quot;968&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;736&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfsYK2/btroSge1ztv/I3PEV0tv3xDnvNvwKBemQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfsYK2/btroSge1ztv/I3PEV0tv3xDnvNvwKBemQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfsYK2/btroSge1ztv/I3PEV0tv3xDnvNvwKBemQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfsYK2%2FbtroSge1ztv%2FI3PEV0tv3xDnvNvwKBemQk%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;736&quot; height=&quot;686&quot; data-origin-width=&quot;736&quot; data-origin-height=&quot;686&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;735&quot; data-origin-height=&quot;892&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFttde/btroT5DX4f4/q3LLCzk9FAWHJ1NYAsVJX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFttde/btroT5DX4f4/q3LLCzk9FAWHJ1NYAsVJX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFttde/btroT5DX4f4/q3LLCzk9FAWHJ1NYAsVJX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFttde%2FbtroT5DX4f4%2Fq3LLCzk9FAWHJ1NYAsVJX0%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;735&quot; height=&quot;892&quot; data-origin-width=&quot;735&quot; data-origin-height=&quot;892&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;721&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dN6lsC/btro120hhVg/KC1K1t0zbOAgDGx4ILnM80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dN6lsC/btro120hhVg/KC1K1t0zbOAgDGx4ILnM80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dN6lsC/btro120hhVg/KC1K1t0zbOAgDGx4ILnM80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdN6lsC%2Fbtro120hhVg%2FKC1K1t0zbOAgDGx4ILnM80%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;721&quot; height=&quot;850&quot; data-origin-width=&quot;721&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;소주와 함께 곱창과 대창, 볶음밥을 각 1인분씩 시켜먹었다.&lt;br&gt;서비스로 고기, 계란찜, 선지, 선엽도 주셨다. 서비스 쩖..&lt;br&gt;지금까지 살면서 먹은 곱창, 대창 중 가장 맛있었다 :) ㄹㅇ 개존맛&lt;br&gt;곱창 대창 좋아하는 사람들은 꼬꼬곡꼬꼬꼬꼬꼬꼬꼬꼬꼬꼬꼮꼮 가보길 추천한다.&lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640507584983&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-1%20%EA%B8%88%EC%82%B0%EB%B9%8C%EB%94%A9%201%EC%B8%B5%20106%2C107%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=612131539&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481520%2C%22mapCenterY%22%3A1119093%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481520%2C%22y%22%3A1119098%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%8F%99%EB%82%A8%EC%A7%91%22%2C%22confirmid%22%3A612131539%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481520&amp;amp;mapY=1119093&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-782-8834&amp;amp;title=%EB%8F%99%EB%82%A8%EC%A7%91&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-1%20%EA%B8%88%EC%82%B0%EB%B9%8C%EB%94%A9%201%EC%B8%B5%20106%2C107%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=612131539&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481520%2C%22mapCenterY%22%3A1119093%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481520%2C%22y%22%3A1119098%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%8F%99%EB%82%A8%EC%A7%91%22%2C%22confirmid%22%3A612131539%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481520&amp;amp;mapY=1119093&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-782-8834&amp;amp;title=%EB%8F%99%EB%82%A8%EC%A7%91&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=481520%2C1119093&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A481520%2C1119098&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640507584983&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;회사 점심으로 여의도에서 곰탕집으로 유명한 &lt;b&gt;동남집&lt;/b&gt;에 다녀왔다.&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkXpmA/btroWC19Vmh/46b26OPJkhjNgjEGOP8ivk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkXpmA/btroWC19Vmh/46b26OPJkhjNgjEGOP8ivk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkXpmA/btroWC19Vmh/46b26OPJkhjNgjEGOP8ivk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkXpmA%2FbtroWC19Vmh%2F46b26OPJkhjNgjEGOP8ivk%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;718&quot; height=&quot;954&quot; data-origin-width=&quot;718&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;간은 다되어있고 밥과 국수사리와 함께 먹으면 된다. &lt;br&gt;깔끔한 맛이 일품이고 국수사리와 밥은 무한리필이 가능하다!&lt;br&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640507671215&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2026%20S-TRENUE%203%EC%B8%B5%20303%2C304-1%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1848180500&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483265%2C%22mapCenterY%22%3A1117628%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483267%2C%22y%22%3A1117634%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22BHC%EC%B9%98%ED%82%A8%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%AD%EC%A0%90%22%2C%22confirmid%22%3A1848180500%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483265&amp;amp;mapY=1117628&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-761-3306&amp;amp;title=BHC%EC%B9%98%ED%82%A8%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%AD%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2026%20S-TRENUE%203%EC%B8%B5%20303%2C304-1%ED%98%B8&amp;amp;addtype=1&amp;amp;confirmid=1848180500&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483265%2C%22mapCenterY%22%3A1117628%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483267%2C%22y%22%3A1117634%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22BHC%EC%B9%98%ED%82%A8%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%AD%EC%A0%90%22%2C%22confirmid%22%3A1848180500%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483265&amp;amp;mapY=1117628&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-761-3306&amp;amp;title=BHC%EC%B9%98%ED%82%A8%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%AD%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=483265%2C1117628&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A483267%2C1117634&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640507671215&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;엄마가 치킨기프티콘을 줘서 저녁에&lt;b&gt; BHC 황금올리브(?) 치킨&lt;/b&gt;을 시켜먹었다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;943&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1JWOj/btroTmzfCdN/KCHQ7kfDqDvYdM6YLXoNA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1JWOj/btroTmzfCdN/KCHQ7kfDqDvYdM6YLXoNA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1JWOj/btroTmzfCdN/KCHQ7kfDqDvYdM6YLXoNA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1JWOj%2FbtroTmzfCdN%2FKCHQ7kfDqDvYdM6YLXoNA0%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;710&quot; height=&quot;943&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;943&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;비싸긴 하지만 맛있었다. ㅎㅎ 땡스 맘&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;&lt;iframe id=&quot;maps_1640507763550&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-10%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=557533491&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481815%2C%22mapCenterY%22%3A1118568%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481815%2C%22y%22%3A1118570%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%95%B5%EB%B0%A5%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A557533491%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481815&amp;amp;mapY=1118568&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=&amp;amp;title=%ED%95%B5%EB%B0%A5%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2017-10%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=557533491&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A481815%2C%22mapCenterY%22%3A1118568%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A481815%2C%22y%22%3A1118570%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%95%B5%EB%B0%A5%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A557533491%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=481815&amp;amp;mapY=1118568&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=&amp;amp;title=%ED%95%B5%EB%B0%A5%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=481815%2C1118568&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A481815%2C1118570&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640507763550&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;회사 점심시간에 덮밥 전문점 &lt;b&gt;핵밥&lt;/b&gt;에 다녀왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tlU9F/btroT5quyYX/j7yQmVZRBAFXwkADeq3580/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tlU9F/btroT5quyYX/j7yQmVZRBAFXwkADeq3580/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tlU9F/btroT5quyYX/j7yQmVZRBAFXwkADeq3580/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtlU9F%2FbtroT5quyYX%2Fj7yQmVZRBAFXwkADeq3580%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;1272&quot; height=&quot;954&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRZnHp/btroWopu7KD/Jg2RjkYSlSiP3XZasKc0ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRZnHp/btroWopu7KD/Jg2RjkYSlSiP3XZasKc0ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRZnHp/btroWopu7KD/Jg2RjkYSlSiP3XZasKc0ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRZnHp%2FbtroWopu7KD%2FJg2RjkYSlSiP3XZasKc0ok%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;1271&quot; height=&quot;954&quot; data-origin-width=&quot;1271&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;난 돼지고기덮밥을 먹고 선임님은 생연어덮밥을 먹었다.&lt;br&gt;덮밥 종류가 많아 골라 먹는 재미가 있고 맛도 다 평균이상은 한다!&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640507982259&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2013-17%20%EA%B5%BF%ED%94%BC%ED%94%8C%EB%B9%8C%EB%94%A9%202%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=27501350&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482510%2C%22mapCenterY%22%3A1119673%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482514%2C%22y%22%3A1119677%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EA%B9%90%EB%B6%80%EC%B9%98%ED%82%A8%20%EC%84%9C%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A27501350%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482510&amp;amp;mapY=1119673&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-761-2292&amp;amp;title=%EA%B9%90%EB%B6%80%EC%B9%98%ED%82%A8%20%EC%84%9C%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2013-17%20%EA%B5%BF%ED%94%BC%ED%94%8C%EB%B9%8C%EB%94%A9%202%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=27501350&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482510%2C%22mapCenterY%22%3A1119673%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482514%2C%22y%22%3A1119677%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EA%B9%90%EB%B6%80%EC%B9%98%ED%82%A8%20%EC%84%9C%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A27501350%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482510&amp;amp;mapY=1119673&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-761-2292&amp;amp;title=%EA%B9%90%EB%B6%80%EC%B9%98%ED%82%A8%20%EC%84%9C%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=482510%2C1119673&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A482514%2C1119677&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640507982259&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;금요일 퇴근 후 대학교 친구가 대전에서 놀러와서 만났다.&lt;br&gt;저녁도 먹을 겸 깐부치킨에 갔다.&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdrRoW/btro12FYRB2/1ThKw1KGKfzw6eV7POk72k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdrRoW/btro12FYRB2/1ThKw1KGKfzw6eV7POk72k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdrRoW/btro12FYRB2/1ThKw1KGKfzw6eV7POk72k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdrRoW%2Fbtro12FYRB2%2F1ThKw1KGKfzw6eV7POk72k%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;723&quot; height=&quot;875&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;875&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;719&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dS1brq/btroSWAKPYT/XZDmBoahvcZ5zMKApX6WmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dS1brq/btroSWAKPYT/XZDmBoahvcZ5zMKApX6WmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dS1brq/btroSWAKPYT/XZDmBoahvcZ5zMKApX6WmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdS1brq%2FbtroSWAKPYT%2FXZDmBoahvcZ5zMKApX6WmK%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;719&quot; height=&quot;964&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;964&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;순살스윗치킨과 함꼐 맥주한잔을 했다.&lt;br&gt;치킨맛은 솔직히 좀 별로였다... 바삭한 맛이다 별로 스윗한 맛이 안느껴졌다 ㅠ&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640508149938&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2014-34&amp;amp;addtype=1&amp;amp;confirmid=651425908&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482345%2C%22mapCenterY%22%3A1119248%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482345%2C%22y%22%3A1119251%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%8F%B4%EB%B0%94%EC%85%8B%20%EC%97%AC%EC%9D%98%EB%8F%84%EA%B5%AD%ED%9A%8C%EB%8C%80%EB%A1%9C%EC%A0%90%22%2C%22confirmid%22%3A651425908%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482345&amp;amp;mapY=1119248&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-785-2556&amp;amp;title=%ED%8F%B4%EB%B0%94%EC%85%8B%20%EC%97%AC%EC%9D%98%EB%8F%84%EA%B5%AD%ED%9A%8C%EB%8C%80%EB%A1%9C%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2014-34&amp;amp;addtype=1&amp;amp;confirmid=651425908&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A482345%2C%22mapCenterY%22%3A1119248%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A482345%2C%22y%22%3A1119251%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%ED%8F%B4%EB%B0%94%EC%85%8B%20%EC%97%AC%EC%9D%98%EB%8F%84%EA%B5%AD%ED%9A%8C%EB%8C%80%EB%A1%9C%EC%A0%90%22%2C%22confirmid%22%3A651425908%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=482345&amp;amp;mapY=1119248&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-785-2556&amp;amp;title=%ED%8F%B4%EB%B0%94%EC%85%8B%20%EC%97%AC%EC%9D%98%EB%8F%84%EA%B5%AD%ED%9A%8C%EB%8C%80%EB%A1%9C%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=482345%2C1119248&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A482345%2C1119251&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640508149938&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;먹은 후 디저트는 진리&lt;br&gt;폴바셋으로 아이스크림을 먹으러갔다.&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;673&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0SK6k/btroZEL937S/EvKICiDlU51gKeMQMSr99k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0SK6k/btroZEL937S/EvKICiDlU51gKeMQMSr99k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0SK6k/btroZEL937S/EvKICiDlU51gKeMQMSr99k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0SK6k%2FbtroZEL937S%2FEvKICiDlU51gKeMQMSr99k%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;505&quot; height=&quot;673&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;673&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;폴바셋이 커피도 커피지만 아이스크림이 맛있다고 유명해서 엄청 기대하고 먹었는데 음... 극찬까지 할정도인가 싶었다.&lt;br&gt;맛은 있으나 극찬까진 아닌듯하다. (내가 먹은 아이스크림이 맞다면 ㅇㅇ..)&lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt; &lt;br&gt;어제 만난친구와 자취방에서 잔 뒤 토요일 점심으로 한우 오마카세를 가기로했다.&lt;br&gt;친구가 싸피에 합격한 기념으로 한턱 크게 쐈다~!&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;509&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bemW1K/btroTmeVGwx/L6aZSIz0rCWmHQ9rKs6KX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bemW1K/btroTmeVGwx/L6aZSIz0rCWmHQ9rKs6KX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bemW1K/btroTmeVGwx/L6aZSIz0rCWmHQ9rKs6KX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbemW1K%2FbtroTmeVGwx%2FL6aZSIz0rCWmHQ9rKs6KX1%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;674&quot; height=&quot;509&quot; data-origin-width=&quot;674&quot; data-origin-height=&quot;509&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;502&quot; data-origin-height=&quot;674&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2SC75/btroWDfKHE9/5cEkLFAvrqpbZMlphDVcw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2SC75/btroWDfKHE9/5cEkLFAvrqpbZMlphDVcw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2SC75/btroWDfKHE9/5cEkLFAvrqpbZMlphDVcw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2SC75%2FbtroWDfKHE9%2F5cEkLFAvrqpbZMlphDVcw1%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;502&quot; height=&quot;674&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;674&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;br&gt;여의도역 걸어가는 길에 여의도공원 풍경&lt;br&gt;이날 춥더라..&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640508451271&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2035-3%20%ED%95%9C%EA%B5%AD%EA%B5%90%EC%A7%81%EC%9B%90%EA%B3%B5%EC%A0%9C%ED%9A%8C%EA%B4%80%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=663977672&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483560%2C%22mapCenterY%22%3A1117318%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483563%2C%22y%22%3A1117323%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%8F%84%EC%BF%84%EB%93%B1%EC%8B%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A663977672%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483560&amp;amp;mapY=1117318&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-782-2260&amp;amp;title=%EB%8F%84%EC%BF%84%EB%93%B1%EC%8B%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2035-3%20%ED%95%9C%EA%B5%AD%EA%B5%90%EC%A7%81%EC%9B%90%EA%B3%B5%EC%A0%9C%ED%9A%8C%EA%B4%80%20%EC%A7%80%ED%95%981%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=663977672&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483560%2C%22mapCenterY%22%3A1117318%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483563%2C%22y%22%3A1117323%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EB%8F%84%EC%BF%84%EB%93%B1%EC%8B%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90%22%2C%22confirmid%22%3A663977672%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483560&amp;amp;mapY=1117318&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=02-782-2260&amp;amp;title=%EB%8F%84%EC%BF%84%EB%93%B1%EC%8B%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=483560%2C1117318&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A483563%2C1117323&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640508451271&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;&lt;b&gt;도쿄등심&lt;/b&gt;이라는 한우 오마카세 집이었다. &lt;br&gt;체인점이다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v831o/btroVls3sbk/mhMMecN7xGiKVINZ5rckA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v831o/btroVls3sbk/mhMMecN7xGiKVINZ5rckA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v831o/btroVls3sbk/mhMMecN7xGiKVINZ5rckA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv831o%2FbtroVls3sbk%2FmhMMecN7xGiKVINZ5rckA0%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;715&quot; height=&quot;954&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;여기 지하로 내려가면 있다&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;952&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eqKftY/btroTltx5m4/0DgJ0rSMKF1kvEHHDqwRkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eqKftY/btroTltx5m4/0DgJ0rSMKF1kvEHHDqwRkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eqKftY/btroTltx5m4/0DgJ0rSMKF1kvEHHDqwRkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeqKftY%2FbtroTltx5m4%2F0DgJ0rSMKF1kvEHHDqwRkK%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;722&quot; height=&quot;952&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;952&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;인테리어는 고급지게 잘 되있다.&lt;br&gt;그리고 주류는 외부에서 무료로 반입이 가능하다!&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/38OUW/btroXNP7u8y/UOB9Uee8noYeTeKiKze6oK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/38OUW/btroXNP7u8y/UOB9Uee8noYeTeKiKze6oK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/38OUW/btroXNP7u8y/UOB9Uee8noYeTeKiKze6oK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F38OUW%2FbtroXNP7u8y%2FUOB9Uee8noYeTeKiKze6oK%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;719&quot; height=&quot;842&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;7,9000원 (120g) 한우 오마카세를 2인분을 시켜먹었다. (런치인데 스시 오마카세보다 가격이 좀 더 썐거같다)&lt;br&gt;코스는&lt;br&gt;숙성 한우 구이&lt;br&gt;연어 홍시 폰즈&lt;br&gt;크림 새우 고로케&lt;br&gt;코코넛 관자&lt;br&gt;한우 미역국&lt;br&gt;탄산음료&lt;br&gt;디저트&lt;br&gt;로 이루어져있다.&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w6Bar/btroRZkr8bN/woKSgJtPJcmg4UCmRLIQr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w6Bar/btroRZkr8bN/woKSgJtPJcmg4UCmRLIQr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w6Bar/btroRZkr8bN/woKSgJtPJcmg4UCmRLIQr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw6Bar%2FbtroRZkr8bN%2FwoKSgJtPJcmg4UCmRLIQr1%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;716&quot; height=&quot;948&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;948&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;725&quot; data-origin-height=&quot;976&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHvzO/btroVkOrdy2/a7kQEfg90hFBtYpavmFbik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHvzO/btroVkOrdy2/a7kQEfg90hFBtYpavmFbik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHvzO/btroVkOrdy2/a7kQEfg90hFBtYpavmFbik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHvzO%2FbtroVkOrdy2%2Fa7kQEfg90hFBtYpavmFbik%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;725&quot; height=&quot;976&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;976&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;룸으로 처음 내부인테리어는 이렇다.&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;779&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oqTb1/btroVlzQrSf/dA9jlSnzKFite1jeNuA4Rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oqTb1/btroVlzQrSf/dA9jlSnzKFite1jeNuA4Rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oqTb1/btroVlzQrSf/dA9jlSnzKFite1jeNuA4Rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoqTb1%2FbtroVlzQrSf%2FdA9jlSnzKFite1jeNuA4Rk%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;711&quot; height=&quot;779&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;779&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;음료는 제로콜라를 시켰다.&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5xV9/btroRLsNuL7/hTVCUp1gcr5j9NLPBEVZjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5xV9/btroRLsNuL7/hTVCUp1gcr5j9NLPBEVZjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5xV9/btroRLsNuL7/hTVCUp1gcr5j9NLPBEVZjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5xV9%2FbtroRLsNuL7%2FhTVCUp1gcr5j9NLPBEVZjk%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;1275&quot; height=&quot;840&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;처음에 연어 홍시 폰즈가 나온다.&lt;br&gt;맛있당 하지만 오마카세 특징이지만 양이 적다 ㅠ&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1279&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKYVIq/btroTlUCn1e/VY0WWbpdPUOKvwbFyPSWCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKYVIq/btroTlUCn1e/VY0WWbpdPUOKvwbFyPSWCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKYVIq/btroTlUCn1e/VY0WWbpdPUOKvwbFyPSWCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKYVIq%2FbtroTlUCn1e%2FVY0WWbpdPUOKvwbFyPSWCK%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;1279&quot; height=&quot;856&quot; data-origin-width=&quot;1279&quot; data-origin-height=&quot;856&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;두번째로는 코코넛 관자가 나온다. &lt;br&gt;이것도 맛있었다.&lt;br&gt;근데 접시는 큰데 관자는 한개라니~~~&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu9KqM/btroSukgf5a/Q3C31GpPOmp4OVx7RC5Gi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu9KqM/btroSukgf5a/Q3C31GpPOmp4OVx7RC5Gi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu9KqM/btroSukgf5a/Q3C31GpPOmp4OVx7RC5Gi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu9KqM%2FbtroSukgf5a%2FQ3C31GpPOmp4OVx7RC5Gi1%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;1278&quot; height=&quot;863&quot; data-origin-width=&quot;1278&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;세번째로는 크림 새우 고로케가 나왔다.&lt;br&gt;크림과 새우의 조합이 존맛이었다. &lt;br&gt;평소 와사비를 싫어하는데 와사비소스맛이 강하진 않아 맛있게 먹었다.&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;956&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDur63/btroXMDGMtU/KlgKuYaOe4ac5MtSf4ecxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDur63/btroXMDGMtU/KlgKuYaOe4ac5MtSf4ecxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDur63/btroXMDGMtU/KlgKuYaOe4ac5MtSf4ecxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDur63%2FbtroXMDGMtU%2FKlgKuYaOe4ac5MtSf4ecxK%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;717&quot; height=&quot;956&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;956&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;한우 안심, 등심, 살치살 3 종류가 나온다.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coHxn0/btroTmeWaeC/CEw0LxtgVqY5skm0gDVkKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coHxn0/btroTmeWaeC/CEw0LxtgVqY5skm0gDVkKK/img.png&quot; data-alt=&quot; 치즈와 먹으면 개꿀맛 &quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coHxn0/btroTmeWaeC/CEw0LxtgVqY5skm0gDVkKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoHxn0%2FbtroTmeWaeC%2FCEw0LxtgVqY5skm0gDVkKK%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;719&quot; height=&quot;904&quot; data-origin-width=&quot;719&quot; data-origin-height=&quot;904&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt; 치즈와 먹으면 개꿀맛 &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;946&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NEaeq/btroVq105bn/E3cACj4779VZfZKbeuk3yK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NEaeq/btroVq105bn/E3cACj4779VZfZKbeuk3yK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NEaeq/btroVq105bn/E3cACj4779VZfZKbeuk3yK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNEaeq%2FbtroVq105bn%2FE3cACj4779VZfZKbeuk3yK%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;707&quot; height=&quot;946&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;946&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;714&quot; data-origin-height=&quot;959&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vH9Ph/btroWDthawT/OwmdiEut1sjtgflIwQeR1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vH9Ph/btroWDthawT/OwmdiEut1sjtgflIwQeR1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vH9Ph/btroWDthawT/OwmdiEut1sjtgflIwQeR1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvH9Ph%2FbtroWDthawT%2FOwmdiEut1sjtgflIwQeR1k%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;714&quot; height=&quot;959&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;959&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;711&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi5g0d/btroXNvPmwB/pFj88aTiskMsUkoICNx2Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi5g0d/btroXNvPmwB/pFj88aTiskMsUkoICNx2Jk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi5g0d/btroXNvPmwB/pFj88aTiskMsUkoICNx2Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi5g0d%2FbtroXNvPmwB%2FpFj88aTiskMsUkoICNx2Jk%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;711&quot; height=&quot;954&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;954&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;1283&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhqEHH/btroRZksneR/ht0KuKBqHj1ptvX45LvuR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhqEHH/btroRZksneR/ht0KuKBqHj1ptvX45LvuR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhqEHH/btroRZksneR/ht0KuKBqHj1ptvX45LvuR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhqEHH%2FbtroRZksneR%2Fht0KuKBqHj1ptvX45LvuR0%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;1283&quot; height=&quot;852&quot; data-origin-width=&quot;1283&quot; data-origin-height=&quot;852&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;712&quot; data-origin-height=&quot;958&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8W7Zk/btroSudpSrk/WjF3yoCfRaoKyKPwsaTIjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8W7Zk/btroSudpSrk/WjF3yoCfRaoKyKPwsaTIjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8W7Zk/btroSudpSrk/WjF3yoCfRaoKyKPwsaTIjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8W7Zk%2FbtroSudpSrk%2FWjF3yoCfRaoKyKPwsaTIjk%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;712&quot; height=&quot;958&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;958&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;그 다음 대망의 메인 메뉴인 숙성 한우 구이와 한우 미역국이 나온다.&lt;br&gt;한우는 당연히 구워주시고 굽기를 어느정도로 할 지 여쭤보신다. 우리는 미디엄으로 먹었다.&lt;br&gt;고기와 미역국 둘 다 정말 맛있었다!!! 입에서 살살 녹음.. 물론 돈도 녹음.. 하지만 내 돈은 아님.. ㅎ&lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ba2nWe/btro13LFYLq/X9L5g8hqApuxTXRkX9HPmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ba2nWe/btro13LFYLq/X9L5g8hqApuxTXRkX9HPmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ba2nWe/btro13LFYLq/X9L5g8hqApuxTXRkX9HPmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fba2nWe%2Fbtro13LFYLq%2FX9L5g8hqApuxTXRkX9HPmK%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;1275&quot; height=&quot;954&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;마지막으로는 디저트 아이스크림과 아메리카노를 주신다.&lt;br&gt; &lt;br&gt;처음에 맛은 있겠는데 이걸 먹고 배가 차겠어 했는데 굶은 상태로간 성인 남자 둘 다 신기하게 배불렀다. &lt;br&gt;콜라때문인가...? 하튼 양이 딱 적당하고 맛도 있고 인테리어도 잘되어 있었다.&lt;br&gt;한우 오마카세를 경험하고 싶다면 한번쯤 와도 좋을 것 같다. ㅎㅎ&lt;br&gt;친구 덕분에 한우 오마카세를 맛있게 먹었다. THANKS THANKS~&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;iframe id=&quot;maps_1640509789368&quot; data-ke-type=&quot;map&quot; mapdata=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2023-6%20%ED%95%9C%EA%B5%AD%ED%9C%B4%EB%A0%9B%ED%8C%A9%EC%BB%A4%EB%93%9C%EB%B9%8C%EB%94%A9%201%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=27465313&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483110%2C%22mapCenterY%22%3A1117708%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483112%2C%22y%22%3A1117712%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%8A%A4%ED%83%80%EB%B2%85%EC%8A%A4%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%ADR%EC%A0%90%22%2C%22confirmid%22%3A27465313%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483110&amp;amp;mapY=1117708&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=1522-3232&amp;amp;title=%EC%8A%A4%ED%83%80%EB%B2%85%EC%8A%A4%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%ADR%EC%A0%90&quot; data-maps-data=&quot;addr=%EC%84%9C%EC%9A%B8%20%EC%98%81%EB%93%B1%ED%8F%AC%EA%B5%AC%20%EC%97%AC%EC%9D%98%EB%8F%84%EB%8F%99%2023-6%20%ED%95%9C%EA%B5%AD%ED%9C%B4%EB%A0%9B%ED%8C%A9%EC%BB%A4%EB%93%9C%EB%B9%8C%EB%94%A9%201%EC%B8%B5&amp;amp;addtype=1&amp;amp;confirmid=27465313&amp;amp;docid=&amp;amp;idx=1&amp;amp;ifrH=362px&amp;amp;ifrW=490px&amp;amp;mapHeight=362&amp;amp;mapInfo=%7B%22version%22%3A2%2C%22mapWidth%22%3A490%2C%22mapHeight%22%3A362%2C%22mapCenterX%22%3A483110%2C%22mapCenterY%22%3A1117708%2C%22mapLevel%22%3A4%2C%22coordinate%22%3A%22wcongnamul%22%2C%22markInfo%22%3A%5B%7B%22markerType%22%3A%22standPlace%22%2C%22coordinate%22%3A%22wcongnamul%22%2C%22x%22%3A483112%2C%22y%22%3A1117712%2C%22clickable%22%3Atrue%2C%22draggable%22%3Atrue%2C%22icon%22%3A%7B%22width%22%3A35%2C%22height%22%3A56%2C%22offsetX%22%3A17%2C%22offsetY%22%3A56%2C%22src%22%3A%22%2F%2Ft1.daumcdn.net%2Flocalimg%2Flocalimages%2F07%2F2012%2Fattach%2Fpc_img%2Fico_marker2_150331.png%22%7D%2C%22content%22%3A%22%EC%8A%A4%ED%83%80%EB%B2%85%EC%8A%A4%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%ADR%EC%A0%90%22%2C%22confirmid%22%3A27465313%7D%5D%2C%22graphicInfo%22%3A%5B%5D%2C%22roadviewInfo%22%3A%5B%5D%7D&amp;amp;mapWidth=490&amp;amp;mapX=483110&amp;amp;mapY=1117708&amp;amp;map_hybrid=false&amp;amp;map_level=4&amp;amp;map_type=TYPE_MAP&amp;amp;rcode=1156054000&amp;amp;tel=1522-3232&amp;amp;title=%EC%8A%A4%ED%83%80%EB%B2%85%EC%8A%A4%20%EC%97%AC%EC%9D%98%EB%8F%84%EC%97%ADR%EC%A0%90&quot; data-maps-mapx=&quot;&quot; data-maps-mapy=&quot;&quot; data-maps-thumbnail=&quot;https://ssl.daumcdn.net/map3/staticmap/image?center=483110%2C1117708&amp;amp;lv=4&amp;amp;size=540x350&amp;amp;srs=WCONGNAMUL&amp;amp;markers=symbol%3Asc_marker%7Clocation%3A483112%2C1117712&quot; width=&quot;540px&quot; height=&quot;350px&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;/proxy/plusmapViewer.php?id=maps_1640509789368&quot;&gt;&lt;/iframe&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;밥 먹은 후 카페는 역시 진리 &lt;br&gt;스타벅스로 향했다.&lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;852&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLZVzK/btroSVokkWE/62eVEmGdv8PuXs4oioBlxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLZVzK/btroSVokkWE/62eVEmGdv8PuXs4oioBlxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLZVzK/btroSVokkWE/62eVEmGdv8PuXs4oioBlxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLZVzK%2FbtroSVokkWE%2F62eVEmGdv8PuXs4oioBlxk%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;707&quot; height=&quot;852&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;852&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;콜드브루 마시며 놀다 헤어졌다. &lt;br&gt;매번 대학교 친구들이 올라오는데 나도 대전 한 번 가긴 해야겤ㅅ다&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt;카페에서 나온 뒤 부모님이 내 자취방 여름 옷도 가지러올겸 오셔서 함께 본가인 일산에 갔다. &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;951&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v5GyL/btroSfApjTZ/uXNO0KQU2xceOccvUJKLw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v5GyL/btroSfApjTZ/uXNO0KQU2xceOccvUJKLw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v5GyL/btroSfApjTZ/uXNO0KQU2xceOccvUJKLw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv5GyL%2FbtroSfApjTZ%2FuXNO0KQU2xceOccvUJKLw0%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;1275&quot; height=&quot;951&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;951&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;저녁으로 날 반기는 &lt;b&gt;진초밥&lt;/b&gt;&lt;br&gt;초밥 꿀맛&lt;br&gt; &lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkBCeG/btroXOhcJqO/a24rk83BUQJSfe5wKVOrHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkBCeG/btroXOhcJqO/a24rk83BUQJSfe5wKVOrHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkBCeG/btroXOhcJqO/a24rk83BUQJSfe5wKVOrHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkBCeG%2FbtroXOhcJqO%2Fa24rk83BUQJSfe5wKVOrHK%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;707&quot; height=&quot;803&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;803&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;714&quot; data-origin-height=&quot;952&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kLfHz/btroWnD9doZ/nBgqyx6iy1tOErbCufXkEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kLfHz/btroWnD9doZ/nBgqyx6iy1tOErbCufXkEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kLfHz/btroWnD9doZ/nBgqyx6iy1tOErbCufXkEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkLfHz%2FbtroWnD9doZ%2FnBgqyx6iy1tOErbCufXkEK%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;714&quot; height=&quot;952&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;952&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;본가에 온 후 주말은 가족과 함께 시간을 보냈다.&lt;br&gt;샤브샤브 해먹음 :)&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boCzsp/btroZEyDgqx/cK5KlcgCuV4VdBSaZBz90K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boCzsp/btroZEyDgqx/cK5KlcgCuV4VdBSaZBz90K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boCzsp/btroZEyDgqx/cK5KlcgCuV4VdBSaZBz90K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboCzsp%2FbtroZEyDgqx%2FcK5KlcgCuV4VdBSaZBz90K%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;326&quot; height=&quot;564&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;원래 누나 아이디로 스타벅스 앱을 공유해서 사용했는데 최근에 내 아이디로 새로 만들었다.&lt;br&gt;프리퀀시 31일까지 9잔 먹어야하는데 불가능할 것 같다. ㅠ&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends2&quot; data-emoticon-name=&quot;049&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends2/large/049.png&quot;&gt;
 &lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends2/large/049.png&quot; width=&quot;150&quot;&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: center;&quot;&gt;작성하다보니 엄청 먹은 한 주 였던 것 같다.&lt;br&gt;다이어트 운동 해야제.. 허허&lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;br&gt; &lt;/p&gt;</description>
      <category>계림닭도리탕 국회의사당</category>
      <category>깐부치킨 국회의사당</category>
      <category>새벽집 양곱창 신도림역</category>
      <category>스타벅스 여의도</category>
      <category>신도림역 곱창 맛집</category>
      <category>여의도 동남집</category>
      <category>여의도 한우 오마카세 도쿄등심</category>
      <category>카츠카츠 여의도</category>
      <category>폴바셋 국회의사당점</category>
      <category>현대백화점 디큐브시티점 신도림역</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/656</guid>
      <comments>https://youngest-programming.tistory.com/656#entry656comment</comments>
      <pubDate>Sun, 26 Dec 2021 18:22:29 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 14659 한조서열정리하고옴ㅋㅋ -그리디- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/652</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;&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://www.acmicpc.net/problem/14659&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/14659&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638680953623&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;14659번: 한조서열정리하고옴ㅋㅋ&quot; data-og-description=&quot;첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 &amp;le; N &amp;le; 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 &amp;le; 높이 &amp;le; 100,000) 각각 봉우리의 높이는 중복 없이 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/14659&quot; data-og-url=&quot;https://www.acmicpc.net/problem/14659&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bgjIQ6/hyMAumaANB/gc1FJOlxp9Cb4Ia0maOAH1/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/14659&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/14659&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bgjIQ6/hyMAumaANB/gc1FJOlxp9Cb4Ia0maOAH1/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;14659번: 한조서열정리하고옴ㅋㅋ&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 &amp;le; N &amp;le; 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 &amp;le; 높이 &amp;le; 100,000) 각각 봉우리의 높이는 중복 없이&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjmAwC/btrm3K1VnNC/PPkrJg2QT5bsSKsQSSiXVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjmAwC/btrm3K1VnNC/PPkrJg2QT5bsSKsQSSiXVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjmAwC/btrm3K1VnNC/PPkrJg2QT5bsSKsQSSiXVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjmAwC%2Fbtrm3K1VnNC%2FPPkrJg2QT5bsSKsQSSiXVk%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;1920&quot; height=&quot;950&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;950&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;1900&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsWhOO/btrmZJv1eTo/fFA01BH8UyrVczSW4sMrD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsWhOO/btrmZJv1eTo/fFA01BH8UyrVczSW4sMrD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsWhOO/btrmZJv1eTo/fFA01BH8UyrVczSW4sMrD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsWhOO%2FbtrmZJv1eTo%2FfFA01BH8UyrVczSW4sMrD1%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;1900&quot; height=&quot;814&quot; data-origin-width=&quot;1900&quot; data-origin-height=&quot;814&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;풀이는 다음과 같습니다.&lt;/p&gt;
&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;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638681175072&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner;

public class Main {

    private static int answer = Integer.MIN_VALUE;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); // 활잡이의 수
        int[] arr = new int[N];
        for (int i = 0; i &amp;lt; N; i++) {
            arr[i] = sc.nextInt();
        }
        for (int i = 0; i &amp;lt; N; i++) {
            int count = 0;
            for (int j = i + 1; j &amp;lt; N; j++) {
                if (arr[i] &amp;gt; arr[j]) { // 자신보다 높은 봉우리면 킬
                    count++;
                } else { // 자신보다 낮은 봉우리면 포기
                    break;
                }
            }
            answer = Math.max(answer, count);
        }
        System.out.println(answer);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638681187742&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*


private var answer = Int.MIN_VALUE
fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    val N = sc.nextInt() // 활잡이의 수
    val arr = IntArray(N)
    for (i in 0 until N) {
        arr[i] = sc.nextInt()
    }
    for (i in 0 until N) {
        var count = 0
        for (j in i + 1 until N) {
            if (arr[i] &amp;gt; arr[j]) { // 자신보다 높은 봉우리면 킬
                count++
            } else { // 자신보다 낮은 봉우리면 포기
                break
            }
        }
        answer = answer.coerceAtLeast(count)
    }
    println(answer)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;018&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/018.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/018.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&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;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638681331874&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 14659 풀이 &amp;middot; mtjin/algorithm_practice@d878372&quot; data-og-description=&quot;&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dkDete/hyMAnHmHkK/G3RY98cFBiAbhTEREbKKN0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dkDete/hyMAnHmHkK/G3RY98cFBiAbhTEREbKKN0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 14659 풀이 &amp;middot; mtjin/algorithm_practice@d878372&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;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/그리디</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 14659 한조서열정리하고옴ㅋㅋ</category>
      <category>백준 14659 한조서열정리하고옴ㅋㅋ java</category>
      <category>백준 14659 한조서열정리하고옴ㅋㅋ kotlin</category>
      <category>백준 14659 한조서열정리하고옴ㅋㅋ 자바</category>
      <category>백준 14659 한조서열정리하고옴ㅋㅋ 코틀린</category>
      <category>한조서열정리하고옴ㅋㅋ 자바</category>
      <category>한조서열정리하고옴ㅋㅋ 코틀린</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/652</guid>
      <comments>https://youngest-programming.tistory.com/652#entry652comment</comments>
      <pubDate>Sun, 5 Dec 2021 14:15:52 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] Jetpack Navigation 사용시 프래그먼트 재생성 되는 문제 해결 (android bottom navigation fragment save state)</title>
      <link>https://youngest-programming.tistory.com/651</link>
      <description>&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;707&quot; data-origin-height=&quot;398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZU4If/btrm2oxTFhl/od0ZTurQCYXejyKH1cuq80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZU4If/btrm2oxTFhl/od0ZTurQCYXejyKH1cuq80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZU4If/btrm2oxTFhl/od0ZTurQCYXejyKH1cuq80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZU4If%2Fbtrm2oxTFhl%2Fod0ZTurQCYXejyKH1cuq80%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;707&quot; height=&quot;398&quot; data-origin-width=&quot;707&quot; data-origin-height=&quot;398&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;a href=&quot;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638626035191&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - STAR-ZERO/navigation-keep-fragment-sample&quot; data-og-description=&quot;Contribute to STAR-ZERO/navigation-keep-fragment-sample development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&quot; data-og-url=&quot;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/o3Enu/hyMAs9aKUm/TGB1BqztMR71kMru0QHN7K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/STAR-ZERO/navigation-keep-fragment-sample&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/o3Enu/hyMAs9aKUm/TGB1BqztMR71kMru0QHN7K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - STAR-ZERO/navigation-keep-fragment-sample&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to STAR-ZERO/navigation-keep-fragment-sample development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsKoEi/btrmXPRhJOW/akQMoRoLAk5xhKKrLkXXl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsKoEi/btrmXPRhJOW/akQMoRoLAk5xhKKrLkXXl0/img.png&quot; data-alt=&quot;위 깃허브 샘플프로젝트의 예제 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsKoEi/btrmXPRhJOW/akQMoRoLAk5xhKKrLkXXl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsKoEi%2FbtrmXPRhJOW%2FakQMoRoLAk5xhKKrLkXXl0%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;326&quot; height=&quot;599&quot; data-origin-width=&quot;326&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위 깃허브 샘플프로젝트의 예제 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;안드로이드 Jetpack Navigation 사용을 하면 프래그먼트는 항상 재생성이 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;그래서 Jetpack의 BottomNavigation을 사용해 밑에 탭이 있는 메인 홈화면을 구성한다면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 홈탭을 누를때마다 프래그먼트가 재생성이 되서 로딩도 느리고 뭔가 시중앱과 다르게 부자연스러워 보이기도 할겁니다.&amp;nbsp; 예를들어 대표적인 시중앱인 카카오톡, 토스 등은 메인 홈화면의 바텀 탭을 누르면 처음에만 화면이 생성되고 그 다음 다시 누를떄는 재생성되지 않고 기존화면(프래그먼트)를 보여주어 빠릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;즉, 홈화면의 바텀탭간의 화면전환(프래그먼트) 만큼은 재생성이 되는 것을 막는게 좋아보였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이 샘플 프로젝트에서 Jetpack Navigationd을 커스텀해서 이러한 문제점을 해결하였는데 이 코드를 살짝 수정하여 저도 문제를 해결할 수 있었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;현재 좀 할게 많은 상태기도하고 이를 구현한 깃허브 레포지토리만 남겨놓겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/bungsegwon-android&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/bungsegwon-android&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649162816010&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/bungsegwon-android&quot; data-og-description=&quot;Contribute to mtjin/bungsegwon-android development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/bungsegwon-android&quot; data-og-url=&quot;https://github.com/mtjin/bungsegwon-android&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/SwRUT/hyNVWBIV9P/gqthcKTlzKaldBS6Q0KPtK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/bungsegwon-android&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/bungsegwon-android&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/SwRUT/hyNVWBIV9P/gqthcKTlzKaldBS6Q0KPtK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/bungsegwon-android&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to mtjin/bungsegwon-android development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;저와 같은 문제를 겪은 분들은 샘플 프로젝트를 보면 해결하실 수 있을 것 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&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;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android bottom navigation fragment recreate</category>
      <category>android jetpack navigation fragment recreate</category>
      <category>android jetpack navigation state loss</category>
      <category>jetpack navigation fragmnet state</category>
      <category>막내의막무가내 jetpack navigation state loss</category>
      <category>안드로이드 바텀네비게이션 프래그먼트 재생성 막기</category>
      <category>안드로이드 젯팩 네비게이션 프래그먼트 상태 유지</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/651</guid>
      <comments>https://youngest-programming.tistory.com/651#entry651comment</comments>
      <pubDate>Sat, 4 Dec 2021 23:05:35 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 11497 통나무 건너뛰기 -그리디- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/650</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/11497&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/11497&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638449740863&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;11497번: 통나무 건너뛰기&quot; data-og-description=&quot;남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11497&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11497&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/kFXYS/hyMznml1aT/VoBU6H07QI8roh1KUqkcIk/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/11497&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11497&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/kFXYS/hyMznml1aT/VoBU6H07QI8roh1KUqkcIk/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;11497번: 통나무 건너뛰기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6V8gu/btrmSwJBd9o/OkyAsoUwEHq23VqiFKZ0dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6V8gu/btrmSwJBd9o/OkyAsoUwEHq23VqiFKZ0dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6V8gu/btrmSwJBd9o/OkyAsoUwEHq23VqiFKZ0dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6V8gu%2FbtrmSwJBd9o%2FOkyAsoUwEHq23VqiFKZ0dk%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;1182&quot; height=&quot;801&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;801&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;1188&quot; data-origin-height=&quot;913&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCwcJ1/btrmRjKH6TL/kcLRlJWx8wLshsZZrOHjp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCwcJ1/btrmRjKH6TL/kcLRlJWx8wLshsZZrOHjp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCwcJ1/btrmRjKH6TL/kcLRlJWx8wLshsZZrOHjp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCwcJ1%2FbtrmRjKH6TL%2FkcLRlJWx8wLshsZZrOHjp0%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;1188&quot; height=&quot;913&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;913&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백준 11497 통나무 건너뛰기 문제를 풀어봤습니다.&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;729&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zYxVv/btrmTcKRQlJ/1YjF5L0KLEnUj5SnANQqqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zYxVv/btrmTcKRQlJ/1YjF5L0KLEnUj5SnANQqqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zYxVv/btrmTcKRQlJ/1YjF5L0KLEnUj5SnANQqqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzYxVv%2FbtrmTcKRQlJ%2F1YjF5L0KLEnUj5SnANQqqK%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;729&quot; height=&quot;316&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;316&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;통나무를 양 옆으로 작은것들로 시작하여 점점 가운데로 올 수록 크게 배치하면 최소의 난이도를 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638450105540&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt(); // 테스트 케이스 수
        for (int t = 0; t &amp;lt; T; t++) {
            int N = sc.nextInt(); // 통나무 개수
            int[] arr = new int[N];
            for (int i = 0; i &amp;lt; N; i++) {
                arr[i] = sc.nextInt();
            }
            Arrays.sort(arr); // 정렬
            int left = N - 1;
            int right = 0;
            int[] nums = new int[N];
            // 왼쪽 오른쪽에 하나씩 정렬된 통나무를 놓으면 가장 작은 차이를 만들 수 있음
            for (int i = 0; i &amp;lt; N; i++) {
                if (i % 2 == 0) {
                    nums[left--] = arr[i];
                } else {
                    nums[right++] = arr[i];
                }
            }
            // 인접한것들끼리의 크기비교
            int answer = Integer.MIN_VALUE;
            for (int i = 1; i &amp;lt; N; i++) {
                answer = Math.max(answer, Math.abs(nums[i] - nums[i - 1]));
            }
            // 처음과 끝 통나무도 크기비교
            answer = Math.max(answer,Math.abs(nums[0] - nums[N - 1]));
            System.out.println(answer + &quot; &quot;);
        }

    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1638450121717&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*
import kotlin.math.abs

fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    val T = sc.nextInt() // 테스트 케이스 수
    for (t in 0 until T) {
        val N = sc.nextInt() // 통나무 개수
        val arr = IntArray(N)
        for (i in 0 until N) {
            arr[i] = sc.nextInt()
        }
        Arrays.sort(arr) // 정렬
        var left = N - 1
        var right = 0
        val nums = IntArray(N)
        // 왼쪽 오른쪽에 하나씩 정렬된 통나무를 놓으면 가장 작은 차이를 만들 수 있음
        for (i in 0 until N) {
            if (i % 2 == 0) {
                nums[left--] = arr[i]
            } else {
                nums[right++] = arr[i]
            }
        }
        // 인접한것들끼리의 크기비교
        var answer = Int.MIN_VALUE
        for (i in 1 until N) {
            answer = answer.coerceAtLeast(abs(nums[i] - nums[i - 1]))
        }
        // 처음과 끝 통나무도 크기비교
        answer = answer.coerceAtLeast(abs(nums[0] - nums[N - 1]))
        println(&quot;$answer &quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638450159864&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 11497 풀이 &amp;middot; mtjin/algorithm_practice@79d3ccc&quot; data-og-description=&quot;&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/txxb8/hyMymbyuPQ/JsOnkSq51xIVHzLfX2f5z0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/79d3ccc066903ee71af5d537954d05cad6680999&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/txxb8/hyMymbyuPQ/JsOnkSq51xIVHzLfX2f5z0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 11497 풀이 &amp;middot; mtjin/algorithm_practice@79d3ccc&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;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/그리디</category>
      <category>백준 11497 통나무 건너뛰기</category>
      <category>백준 11497 통나무 건너뛰기 java</category>
      <category>백준 11497 통나무 건너뛰기 kotlin</category>
      <category>백준 11497 통나무 건너뛰기 자바</category>
      <category>백준 11497 통나무 건너뛰기 코틀린</category>
      <category>백준 통나무 건너뛰기 자바</category>
      <category>백준 통나무 건너뛰기 자바 java</category>
      <category>백준 통나무 건너뛰기 자바 코틀린 kotlin</category>
      <category>통나무 건너뛰기 java</category>
      <category>통나무 건너뛰기 자바</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/650</guid>
      <comments>https://youngest-programming.tistory.com/650#entry650comment</comments>
      <pubDate>Thu, 2 Dec 2021 22:03:13 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 파이어베이스 인증 에러 해결  An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</title>
      <link>https://youngest-programming.tistory.com/647</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;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;021&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/021.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/021.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링해도 안나오는 에러라 삽질 오래했네요 후..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 사항]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mD0Fi/btrmhJDMS9E/NoPPXn04IiEhgk7DkwyjVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mD0Fi/btrmhJDMS9E/NoPPXn04IiEhgk7DkwyjVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mD0Fi/btrmhJDMS9E/NoPPXn04IiEhgk7DkwyjVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmD0Fi%2FbtrmhJDMS9E%2FNoPPXn04IiEhgk7DkwyjVK%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;1888&quot; height=&quot;845&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;845&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;이 함수에서 isSusccessful로 떨어지지않고 에러가 Blocked 되는 에러가 발생하였습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An&amp;nbsp;internal&amp;nbsp;error&amp;nbsp;has&amp;nbsp;occurred.&amp;nbsp;[&amp;nbsp;Requests&amp;nbsp;from&amp;nbsp;this&amp;nbsp;Android&amp;nbsp;client&amp;nbsp;application&amp;nbsp;com.mtjin.bungsegwon&amp;nbsp;are&amp;nbsp;blocked.&amp;nbsp;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 원인]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 이 에러는 파이어베이스 콘솔 프로젝트 설정에서 내 앱 패키지에 SHA-1 인증키를 등록하지 않아서 발생하는데&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;즉 기존에 다른 패키지명으로 안드로이드 개발을 해놨었는데 프로젝트를 리뉴얼할거라 새로운 패키지로 프로젝트를 파고 파이어베이스 연결을 하였는데 이 두개의 google-service.json 이 꼬이고 기존에 있던 것만 제대로 동작하는 상황이 만들어진것 이었습니다.&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;1041&quot; data-origin-height=&quot;653&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UUTX0/btrmhgvh5YZ/BE0RuIIt8PnBNvAhsAOyM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UUTX0/btrmhgvh5YZ/BE0RuIIt8PnBNvAhsAOyM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UUTX0/btrmhgvh5YZ/BE0RuIIt8PnBNvAhsAOyM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUUTX0%2Fbtrmhgvh5YZ%2FBE0RuIIt8PnBNvAhsAOyM0%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;1041&quot; height=&quot;653&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;653&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;google-service.json 파일에 의해 빌드 시 vaues.xml이 만들어지고 이것들의 키 값에 의해 구글로그인이 실행되게 되는데 제 키값이 아닌 이전 프로젝트의 키값들이 삽입되면서 에러가 난거였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 해결]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. google-service.json 기존 프로젝트 패키지명을 새로만든 패키지명으로 변경&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&amp;gt; 이 부분은 내가 파이어베이스 프로젝트 설정 패키지 탭에서 google-service.json 을 다운 받았으면 내껄로 자동으로 다 되어있어야하는데 그렇지 않았다. 이 점은 파이어베이스 측에서 고쳐줘야 싶지 않나 싶다..&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;846&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mc8V3/btrmgH0OkZL/4pEU9QxKj2SDJSaTdG1i7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mc8V3/btrmgH0OkZL/4pEU9QxKj2SDJSaTdG1i7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mc8V3/btrmgH0OkZL/4pEU9QxKj2SDJSaTdG1i7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmc8V3%2FbtrmgH0OkZL%2F4pEU9QxKj2SDJSaTdG1i7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;846&quot; height=&quot;894&quot; data-origin-width=&quot;846&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;google-service.json을 뜯어보았고 웹 API KEY 와 연관된 에러이므로 api_key에서 이전 프로젝트의 키 코드를 지워줬습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 안 되면 다른 패키지관련 코드를 모두 지워버리면 됩니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 파이어베이스 콘솔뿐만 아니라 구글클라우드 플랫폼 사이트 사용자인증정보에서 잘 등록되었는지 확인&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BRseO/btrmlYUa9o2/ytOPpxCA6fwKNcQjYm5zeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BRseO/btrmlYUa9o2/ytOPpxCA6fwKNcQjYm5zeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BRseO/btrmlYUa9o2/ytOPpxCA6fwKNcQjYm5zeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBRseO%2FbtrmlYUa9o2%2FytOPpxCA6fwKNcQjYm5zeK%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;365&quot; height=&quot;621&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;621&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;추가로 파이어베이스 콘솔에서는 위와 같이 제 SHA-1 키가 잘 등록되었으나&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGp9wr/btrmorhlqID/23DDXGMM3V36GCVjrujgk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGp9wr/btrmorhlqID/23DDXGMM3V36GCVjrujgk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGp9wr/btrmorhlqID/23DDXGMM3V36GCVjrujgk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGp9wr%2FbtrmorhlqID%2F23DDXGMM3V36GCVjrujgk0%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;1545&quot; height=&quot;575&quot; data-origin-width=&quot;1545&quot; data-origin-height=&quot;575&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project=bungsegwon&quot;&gt;https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project=bungsegwon&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1638027856335&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;Google Cloud Platform&quot; data-og-description=&quot;하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.&quot; data-og-host=&quot;accounts.google.com&quot; data-og-source-url=&quot;https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project=bungsegwon&quot; data-og-url=&quot;https://accounts.google.com/ServiceLogin?service=cloudconsole&amp;amp;passive=1209600&amp;amp;osid=1&amp;amp;continue=https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project%3Dbungsegwon&amp;amp;followup=https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project%3Dbungsegwon&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project=bungsegwon&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://console.cloud.google.com/apis/api/firebaseinstallations.googleapis.com/credentials?project=bungsegwon&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;Google Cloud Platform&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;accounts.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 클라우드 플랫폼 사이트에서는 제가 새로만든 프로젝트 파이어베이스 연동하며 자동생성된 사용자 인증정보가 노란색 세모 느낌표 표시로 뭔가 잘 못되었다는 것을 확인하여 수정했습니다. (위 사진은 수정 후라 초록색으로 정상표시가 되어있는 점 양해부탁드립니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4FX9s/btrmhg9OwF7/dOws9KHduJjivl2DdnmlT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4FX9s/btrmhg9OwF7/dOws9KHduJjivl2DdnmlT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4FX9s/btrmhg9OwF7/dOws9KHduJjivl2DdnmlT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4FX9s%2Fbtrmhg9OwF7%2FdOws9KHduJjivl2DdnmlT1%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;1056&quot; height=&quot;853&quot; data-origin-width=&quot;1056&quot; data-origin-height=&quot;853&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;&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;1051&quot; data-origin-height=&quot;921&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wbP8Z/btrmg4amPWM/iYcks4yhebXAHoQv0QSHwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wbP8Z/btrmg4amPWM/iYcks4yhebXAHoQv0QSHwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wbP8Z/btrmg4amPWM/iYcks4yhebXAHoQv0QSHwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwbP8Z%2Fbtrmg4amPWM%2FiYcks4yhebXAHoQv0QSHwk%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;1051&quot; height=&quot;921&quot; data-origin-width=&quot;1051&quot; data-origin-height=&quot;921&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;&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;732&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL6EZG/btrmhJRtDeg/MlQ8bQYp5B1uEGLw9IAilk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL6EZG/btrmhJRtDeg/MlQ8bQYp5B1uEGLw9IAilk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL6EZG/btrmhJRtDeg/MlQ8bQYp5B1uEGLw9IAilk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL6EZG%2FbtrmhJRtDeg%2FMlQ8bQYp5B1uEGLw9IAilk%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;732&quot; height=&quot;346&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 크게 두가지를 수정하고 values.xml을 삭제 후 재실행 하면 자동생성되는 values.xml에 제 키값들이 들어가게되면서 구글 로그인도 성공하며 에러가 해결되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링해도 SHA-1 키 얘기만 나오고 혼자 삽질하느라 힘들었네요 ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</category>
      <category>android An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</category>
      <category>firebase auth An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</category>
      <category>안드로이드 An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</category>
      <category>파이어베이스 An internal error has occurred. [ Requests from this Android client application com.mtjin.bungsegwon are blocked. ]</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/647</guid>
      <comments>https://youngest-programming.tistory.com/647#entry647comment</comments>
      <pubDate>Sat, 27 Nov 2021 21:02:38 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 에러 해결 error: cannot find symbolpublic final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; { symbol: class BaseFragment</title>
      <link>https://youngest-programming.tistory.com/646</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 사항]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1887&quot; data-origin-height=&quot;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNIVOv/btrmhJcG305/TKJkkYAdkpikatdZaKYkq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNIVOv/btrmhJcG305/TKJkkYAdkpikatdZaKYkq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNIVOv/btrmhJcG305/TKJkkYAdkpikatdZaKYkq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNIVOv%2FbtrmhJcG305%2FTKJkkYAdkpikatdZaKYkq0%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;1887&quot; height=&quot;719&quot; data-origin-width=&quot;1887&quot; data-origin-height=&quot;719&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;error: cannot find symbolpublic final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; { symbol: class BaseFragment&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라는 에러가 발생했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 원인]&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3UFEy/btrmgFhPdwe/Owbtbv7mFpYny4Pfes3Cqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3UFEy/btrmgFhPdwe/Owbtbv7mFpYny4Pfes3Cqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3UFEy/btrmgFhPdwe/Owbtbv7mFpYny4Pfes3Cqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3UFEy%2FbtrmgFhPdwe%2FOwbtbv7mFpYny4Pfes3Cqk%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;1259&quot; height=&quot;464&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1638006973492&quot; class=&quot;kotlin&quot; style=&quot;margin: 20px auto 0px; display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; cursor: default; z-index: 1;&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package com.mtjin.bungsegwon.views.signup;

import java.lang.System;

@kotlin.Metadata(mv = {1, 4, 1}, bv = {1, 0, 3}, k = 1, d1 = {&quot;\u0000\u0016\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\u0018\u00002\b\u0012\u0004\u0012\u00020\u00020\u0001B\u0005\u00a2\u0006\u0002\u0010\u0003J\b\u0010\u0004\u001a\u00020\u0005H\u0016\u00a8\u0006\u0006&quot;}, d2 = {&quot;Lcom/mtjin/bungsegwon/views/signup/SignUpFragment;&quot;, &quot;LBaseFragment;&quot;, &quot;Lcom/mtjin/bungsegwon/databinding/FragmentSignUpBinding;&quot;, &quot;()V&quot;, &quot;init&quot;, &quot;&quot;, &quot;app_debug&quot;})
public final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; {
    
    @java.lang.Override()
    public void init() {
    }
    
    public SignUpFragment() {
        super(0);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러로그를 보면 LoginFrament 에서 에러났고&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;cannot find symbol class BaseFragment&amp;nbsp;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로 BaseFragment를 못찾는 문제라는 것을 알 수 있습니다.&lt;/p&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;Execution&amp;nbsp;failed&amp;nbsp;for&amp;nbsp;task&amp;nbsp;':app:kaptDebugKotlin'.&lt;br /&gt;&amp;gt;&amp;nbsp;A&amp;nbsp;failure&amp;nbsp;occurred&amp;nbsp;while&amp;nbsp;executing&amp;nbsp;org.jetbrains.kotlin.gradle.internal.KaptExecution&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&amp;nbsp;java.lang.reflect.InvocationTargetException&amp;nbsp;(no&amp;nbsp;error&amp;nbsp;message)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러도 추가로 발생한 것도 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;[에러 해결]&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;BaseFragment를 못찾는 문제 같으므로 BaseFragment를 들여다보았습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1638007037683&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.LayoutRes
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewDataBinding
import androidx.fragment.app.Fragment
import io.reactivex.rxjava3.disposables.CompositeDisposable

abstract class BaseFragment&amp;lt;B : ViewDataBinding&amp;gt;(
    @LayoutRes val layoutId: Int
) : Fragment() {
    lateinit var binding: B
    protected lateinit var thisContext: Context
    protected val compositeDisposable = CompositeDisposable()

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        binding = DataBindingUtil.inflate(inflater, layoutId, container, false)
        thisContext = inflater.context
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        binding.lifecycleOwner = this
        init()
    }

    abstract fun init()
    override fun onDestroy() {
        super.onDestroy()
        compositeDisposable.dispose()
    }

    protected fun showToast(msg: String) =
        Toast.makeText(context, msg, Toast.LENGTH_SHORT).show()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 상단에 Pacakage가 추가되어 있지 않아서 경로를 인지하지 못하여 SignUpFragment에서 import가 잘못되어 생긴 문제였습니다.&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;1335&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M4wzL/btrmiejdtnM/woZafPKCVNyizdGe8wb5w1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M4wzL/btrmiejdtnM/woZafPKCVNyizdGe8wb5w1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M4wzL/btrmiejdtnM/woZafPKCVNyizdGe8wb5w1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM4wzL%2FbtrmiejdtnM%2FwoZafPKCVNyizdGe8wb5w1%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;1335&quot; height=&quot;281&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;281&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android error: cannot find symbolpublic final class</category>
      <category>android error: cannot find symbolpublic final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; { symbol: class BaseFragment</category>
      <category>android Execution failed for task ':app:kaptDebugKotlin'. &amp;gt; A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution &amp;gt; java.lang.reflect.InvocationTargetException (no error message)</category>
      <category>error: cannot find symbolpublic final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; { symbol: class BaseFragment</category>
      <category>막내의막무가내 안드로이드 에러 해결</category>
      <category>안드로이드 error: cannot find symbolpublic final class</category>
      <category>안드로이드 error: cannot find symbolpublic final class SignUpFragment extends BaseFragment&amp;lt;com.mtjin.bungsegwon.databinding.FragmentSignUpBinding&amp;gt; { symbol: class BaseFragment</category>
      <category>안드로이드 Execution failed for task ':app:kaptDebugKotlin'. &amp;gt; A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution &amp;gt; java.lang.reflect.InvocationTargetException (no error message)</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/646</guid>
      <comments>https://youngest-programming.tistory.com/646#entry646comment</comments>
      <pubDate>Sat, 27 Nov 2021 19:00:12 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] 에러 해결 Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</title>
      <link>https://youngest-programming.tistory.com/645</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;619&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccbAoZ/btrmiE22alp/P4RLbmTLhTptcGU5Y1FQkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccbAoZ/btrmiE22alp/P4RLbmTLhTptcGU5Y1FQkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccbAoZ/btrmiE22alp/P4RLbmTLhTptcGU5Y1FQkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccbAoZ%2FbtrmiE22alp%2FP4RLbmTLhTptcGU5Y1FQkk%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;1888&quot; height=&quot;619&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;619&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;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[에러 사항]&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 스튜디오에서 실행을 시키니깐&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Caused&amp;nbsp;by:&amp;nbsp;org.gradle.cache.internal.btree.CorruptedCacheException:&amp;nbsp;Corrupted&amp;nbsp;IndexBlock&amp;nbsp;2020577&amp;nbsp;found&amp;nbsp;in&amp;nbsp;cache&amp;nbsp;'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 에러가 났습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[에러 원인]&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gradle의 캐싱된 종속성들에서 충돌 혹은 오류가 있어서 발생합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;[에러 해결]&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 스튜디오를 모두 종료해준 다음에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;윈도우 기준 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;C:\Users\82107\.gradle\caches&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경로로 가서 journal-1 폴더를 삭제하여 해결했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게&amp;nbsp;하면&amp;nbsp;Android&amp;nbsp;Studio가&amp;nbsp;프로세스에서&amp;nbsp;손상된&amp;nbsp;파일을&amp;nbsp;수정하는&amp;nbsp;.gradle&amp;nbsp;폴더를&amp;nbsp;다시&amp;nbsp;빌드하고&amp;nbsp;다시&amp;nbsp;다운로드합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1638000672694&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;CorruptedCacheException: Corrupted IndexBlock 298298 found in cache '/Users/macuser/.gradle/caches/journal-1/file-access.bin'&quot; data-og-description=&quot;My android projects runs and my app works but I keep getting these errors. Can anyone explain what is happening and how I can solve it? org.gradle.cache.internal.btree.CorruptedCacheException:&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&quot; data-og-url=&quot;https://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bGR3vU/hyMuANZY1s/86kQsfidUoX0urlFStR0t1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/55801823/corruptedcacheexception-corrupted-indexblock-298298-found-in-cache-users-macu&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bGR3vU/hyMuANZY1s/86kQsfidUoX0urlFStR0t1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&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;CorruptedCacheException: Corrupted IndexBlock 298298 found in cache '/Users/macuser/.gradle/caches/journal-1/file-access.bin'&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;My android projects runs and my app works but I keep getting these errors. Can anyone explain what is happening and how I can solve it? org.gradle.cache.internal.btree.CorruptedCacheException:&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</category>
      <category>Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</category>
      <category>kotlin Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</category>
      <category>막내의막무가내 안드로이드 에러 해결</category>
      <category>안드로이드 Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</category>
      <category>안드로이드 에러 Caused by: org.gradle.cache.internal.btree.CorruptedCacheException: Corrupted IndexBlock 2020577 found in cache 'C:\Users\82107\.gradle\caches\journal-1\file-access.bin'.</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/645</guid>
      <comments>https://youngest-programming.tistory.com/645#entry645comment</comments>
      <pubDate>Sat, 27 Nov 2021 17:20:13 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 1026 보물 -그리디- 자바, 코틀린</title>
      <link>https://youngest-programming.tistory.com/644</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/1026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/1026&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1637616868404&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;1026번: 보물&quot; data-og-description=&quot;첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/1026&quot; data-og-url=&quot;https://www.acmicpc.net/problem/1026&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bPNLcg/hyMtwC8h9d/fyxDyf8vjV6sanXAprk6d1/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/1026&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/1026&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bPNLcg/hyMtwC8h9d/fyxDyf8vjV6sanXAprk6d1/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;1026번: 보물&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거&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;&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;1199&quot; data-origin-height=&quot;789&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCHYz9/btrlZeDqZhj/fXgNxXGaR9QIjhmPQkB7M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCHYz9/btrlZeDqZhj/fXgNxXGaR9QIjhmPQkB7M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCHYz9/btrlZeDqZhj/fXgNxXGaR9QIjhmPQkB7M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCHYz9%2FbtrlZeDqZhj%2FfXgNxXGaR9QIjhmPQkB7M0%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;1199&quot; height=&quot;789&quot; data-origin-width=&quot;1199&quot; data-origin-height=&quot;789&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;1188&quot; data-origin-height=&quot;931&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfc4tm/btrlUO60YJb/AUlbqQYDFe9hFI7qjQjb20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfc4tm/btrlUO60YJb/AUlbqQYDFe9hFI7qjQjb20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfc4tm/btrlUO60YJb/AUlbqQYDFe9hFI7qjQjb20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcfc4tm%2FbtrlUO60YJb%2FAUlbqQYDFe9hFI7qjQjb20%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;1188&quot; height=&quot;931&quot; data-origin-width=&quot;1188&quot; data-origin-height=&quot;931&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A와 B 배열의 인덱스 곱의 합이 최솟값이 나와야하는데 A만 재배열이 가능하고 B는 불가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B가 재배열이 불가하다는 말에 꽂히지말아야합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;A와 B를 오름차순으로 정렬한다음에 A의 가장 작은값과 B의 가장 큰 값 인덱스들을 서로 곱해주는게 최소의 S결과가 나오게됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637617098300&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] A = new int[N];
        int[] B = new int[N];
        for (int i = 0; i &amp;lt; N; i++) {
            A[i] = sc.nextInt();
        }
        for (int i = 0; i &amp;lt; N; i++) {
            B[i] = sc.nextInt();
        }
        Arrays.sort(A);
        Arrays.sort(B);
        int S = 0;
        for (int i = 0; i &amp;lt; N; i++) {
            S += A[i] * B[N - 1 - i];
        }
        System.out.println(S);

    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Kotlin]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637617110550&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package kotlin

import java.util.*


fun main(args: Array&amp;lt;String&amp;gt;) {
    val sc = Scanner(System.`in`)
    val N = sc.nextInt()
    val A = IntArray(N)
    val B = IntArray(N)
    for (i in 0 until N) {
        A[i] = sc.nextInt()
    }
    for (i in 0 until N) {
        B[i] = sc.nextInt()
    }
    Arrays.sort(A)
    Arrays.sort(B)
    var S = 0
    for (i in 0 until N) {
        S += A[i] * B[N - 1 - i]
    }
    println(S)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1637617154336&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 1026 풀이 &amp;middot; mtjin/algorithm_practice@013a0cd&quot; data-og-description=&quot;&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/csQ2sm/hyMtHYXv2f/9KJkTOFDagum5C7g8c3bS0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/013a0cdfdf4059b6dda7c7ae09e61ca12d9795b5&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/csQ2sm/hyMtHYXv2f/9KJkTOFDagum5C7g8c3bS0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 1026 풀이 &amp;middot; mtjin/algorithm_practice@013a0cd&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;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/그리디</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 1026 보물 자바</category>
      <category>백준 1026 보물 코틀린</category>
      <category>백준 1026 자바 코틀린</category>
      <category>백준 보물 자바</category>
      <category>백준 보물 코틀린</category>
      <category>백준 자바</category>
      <category>백준 코틀린</category>
      <category>보물 자바</category>
      <category>보물 코틀린</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/644</guid>
      <comments>https://youngest-programming.tistory.com/644#entry644comment</comments>
      <pubDate>Tue, 23 Nov 2021 23:43:13 +0900</pubDate>
    </item>
    <item>
      <title>[알고리즘] 백준 15656 N과 M (7) -백트래킹- 자바</title>
      <link>https://youngest-programming.tistory.com/643</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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/15656&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/problem/15656&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1637590650634&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;15656번: N과 M (7)&quot; data-og-description=&quot;N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 &quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15656&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15656&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AeWBi/hyMqS2B5Zg/tRLVTkNl2IwxNf2DVvSXz0/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/15656&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15656&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AeWBi/hyMqS2B5Zg/tRLVTkNl2IwxNf2DVvSXz0/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;15656번: N과 M (7)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열&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;&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;1262&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V2ZTN/btrlLwezpyl/KcxnFoLsyMxk0qBgE3VOw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V2ZTN/btrlLwezpyl/KcxnFoLsyMxk0qBgE3VOw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V2ZTN/btrlLwezpyl/KcxnFoLsyMxk0qBgE3VOw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV2ZTN%2FbtrlLwezpyl%2FKcxnFoLsyMxk0qBgE3VOw0%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;1262&quot; height=&quot;748&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;748&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;1179&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ATmIV/btrlQ0zdArs/FhNJYr9oIbHH6xl8dwr00K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ATmIV/btrlQ0zdArs/FhNJYr9oIbHH6xl8dwr00K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ATmIV/btrlQ0zdArs/FhNJYr9oIbHH6xl8dwr00K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FATmIV%2FbtrlQ0zdArs%2FFhNJYr9oIbHH6xl8dwr00K%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;1179&quot; height=&quot;734&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;734&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;1166&quot; data-origin-height=&quot;799&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v0OdB/btrlUNZHlbR/iSQ7zDJg5oWk7KGAKEjMO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v0OdB/btrlUNZHlbR/iSQ7zDJg5oWk7KGAKEjMO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v0OdB/btrlUNZHlbR/iSQ7zDJg5oWk7KGAKEjMO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv0OdB%2FbtrlUNZHlbR%2FiSQ7zDJg5oWk7KGAKEjMO1%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;1166&quot; height=&quot;799&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;799&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 알고리즘을 풀고 백트래킹의 기본이라 할 수 있는 N과 M 시리즈를 풀어봤습니다.&amp;nbsp;&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;그러므로 isVisited[] 같은 중복을 체크하는 Boolean 형 타입은 필요하지 않고 StringBuilder와 순열을 저장할 배열만을 사용했습니다. 추가로 오름차순으로 출력해야하므로 정렬을 하는 전처리도 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀이는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[Java]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1637590936943&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Arrays;
import java.util.Scanner;

public class Main {
    private static int N;
    private static int M;
    private static int[] nums;
    private static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        N = sc.nextInt();
        M = sc.nextInt();
        nums = new int[N];
        for (int i = 0; i &amp;lt; N; i++) {
            nums[i] = sc.nextInt();
        }
        Arrays.sort(nums);
        dfs(0, new int[M]);
        System.out.println(sb.toString());
    }

    private static void dfs(int depth, int[] answers) {
        if (depth == M) {
            for (int i = 0; i &amp;lt; M; i++) {
                sb.append(answers[i]).append(&quot; &quot;);
            }
            sb.append(&quot;\n&quot;);
            return;
        }
        for (int i = 0; i &amp;lt; N; i++) {
            answers[depth] = nums[i];
            dfs(depth + 1, answers);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1637590967877&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;백준 15656 풀이 &amp;middot; mtjin/algorithm_practice@8e76415&quot; data-og-description=&quot;&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&quot; data-og-url=&quot;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bOelAb/hyMq5nkHdZ/VxISrc9HgUFnL1aH64tKMK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/algorithm_practice/commit/8e764158039d010159aef2bb64e6ed1499e4d802&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bOelAb/hyMq5nkHdZ/VxISrc9HgUFnL1aH64tKMK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;백준 15656 풀이 &amp;middot; mtjin/algorithm_practice@8e76415&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;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;006&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>알고리즘/DFS, BFS, 시뮬, 백트래킹</category>
      <category>N과 M (7) 자바</category>
      <category>막내의막무가내 알고리즘</category>
      <category>백준 15656 N과 M (7) 자바</category>
      <category>백준 15656 N과 M (7) 자바 풀이</category>
      <category>백준 N과 M (7) 자바</category>
      <category>백준 알고리즘 풀이</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/643</guid>
      <comments>https://youngest-programming.tistory.com/643#entry643comment</comments>
      <pubDate>Mon, 22 Nov 2021 23:23:40 +0900</pubDate>
    </item>
    <item>
      <title>[코딩테스트] 2021 NHN Pre-Test 1차 후기 (코딩테스트)</title>
      <link>https://youngest-programming.tistory.com/636</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;493&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xwJVg/btriBCah2aK/63ohdkflIth9cXTEkLWXJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xwJVg/btriBCah2aK/63ohdkflIth9cXTEkLWXJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xwJVg/btriBCah2aK/63ohdkflIth9cXTEkLWXJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxwJVg%2FbtriBCah2aK%2F63ohdkflIth9cXTEkLWXJ1%2Fimg.png&quot; data-origin-width=&quot;1267&quot; data-origin-height=&quot;493&quot; data-ke-mobilestyle=&quot;widthOrigin&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 style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;NHN은 자소서 없이 지원만하면 필기시험을 볼 수 있습니다.&lt;br /&gt;NHN Pre-Test 1차 코딩테스트를 14:00~16:00 동안 보고왔습니다. ㅎㅎ&lt;br /&gt;NHN 은 필기 1차는 코딩테스트 2차는 CS(전공) 시험을 보는 것 같습니다.&lt;br /&gt;그리고 노캠 + 구름에서 코딩테스트 시험이 진행되었습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;문제는 총 3문제였고 알고리즘을 애초에 잘하지도 않고 두달 넘게 쉰 제가 모든 문제를 다 푼거보면 이번 문제난이도는 매우 쉬웠던 것 같습니다. 객관적으로 봐도 쉬웠습니다..&lt;br /&gt;그래서 1차로 가르기보다는 2차 전공시험으로 면접자를 뽑지않을까 생각합니다. (코딩테스트 타임어택을 할 것 같지도 않고 데이터 개수도 적어서 효율성으로 판가름날 것 같지도 않기 때문입니다.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[1번 문제 - 구현]&lt;/b&gt;&lt;br /&gt;1번 문제는 단순 구현 문제에서 말하는 그대로 구현하면 되는 문제였습니다. &lt;br /&gt;저같은 경우 우선순위큐, 리스트, 정렬 정도를 사용하여 풀었습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[2번 문제 - 구현]&lt;/b&gt;&lt;br /&gt;2번 문제도 구현문제로 다양한 방법으로 풀 수 있을 것 같은데 전 배열을 사용해서 풀었습니다. &lt;br /&gt;맵을 사용해서 풀 수도 있을 것 같은데 배열이 더 효율적이었습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;[3번 문제 - 백트래킹]&lt;/b&gt;&lt;br /&gt;3번 문제는 백트래킹으로 저는 풀었습니다. &lt;br /&gt;어렵지 않은 백트래킹으로 백준의 N과 M 시리즈를 풀어보셨다면 어렵지 않게 푸셨을거라 생각합니다.&lt;br /&gt;다만 백트래킹을 하기전에 문제 조건에 맞게 리스트에 String으로 판별해야할 조건을 넣는 작업을 했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;카카오 기출 단체사진찍기 문제가 조금 더 어렵지만 비슷하다고 느꼈습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 기본적으로 백트래킹으로 풀었다보니 백준 N과M 시리즈와 비슷합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/1835&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://programmers.co.kr/learn/courses/30/lessons/1835&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1635036645962&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;programmers.co.kr&quot; data-og-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/1835&quot; data-og-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/1835&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iMmnz/hyL4yJCt83/xbOxKvSNLeV5hF4JQcbcM0/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/djHL3T/hyL4GVcqw6/MXryma1PuilRRdHHM5w9Kk/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/fzG8d/hyL4AtSxcv/l84BuB8z052B36Su0JkjrK/img.png?width=500&amp;amp;height=214&amp;amp;face=0_0_500_214&quot;&gt;&lt;a href=&quot;https://programmers.co.kr/learn/courses/30/lessons/1835&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://programmers.co.kr/learn/courses/30/lessons/1835&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iMmnz/hyL4yJCt83/xbOxKvSNLeV5hF4JQcbcM0/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/djHL3T/hyL4GVcqw6/MXryma1PuilRRdHHM5w9Kk/img.jpg?width=626&amp;amp;height=626&amp;amp;face=0_0_626_626,https://scrap.kakaocdn.net/dn/fzG8d/hyL4AtSxcv/l84BuB8z052B36Su0JkjrK/img.png?width=500&amp;amp;height=214&amp;amp;face=0_0_500_214');&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;단체사진 찍기 가을을 맞아 카카오프렌즈는 단체로 소풍을 떠났다. 즐거운 시간을 보내고 마지막에 단체사진을 찍기 위해 카메라 앞에 일렬로 나란히 섰다. 그런데 각자가 원하는 배치가 모두&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;programmers.co.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/workbook/view/2052&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.acmicpc.net/workbook/view/2052&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1635036623501&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;문제집: N과 M (시리즈)&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/workbook/view/2052&quot; data-og-url=&quot;https://www.acmicpc.net/workbook/view/2052&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMVkMW/hyL4zaHQob/a8Bt4u2dtH5BZwqhvufP6K/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/workbook/view/2052&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/workbook/view/2052&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMVkMW/hyL4zaHQob/a8Bt4u2dtH5BZwqhvufP6K/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;문제집: N과 M (시리즈)&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.acmicpc.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1차는 통과하였습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;이후에 시간날때 백준에 비슷한 문제가 있다면 남겨보도록 하겠습니다.&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>필기 및 면접정리</category>
      <category>2021 nhn pre test 1차 후기</category>
      <category>2021 NHN pre-test 1차</category>
      <category>2021 NHN 코딩테스트 문제</category>
      <category>2021 NHN 하반기 코딩테스트 후기</category>
      <category>NHN 코딩테스트 후기</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/636</guid>
      <comments>https://youngest-programming.tistory.com/636#entry636comment</comments>
      <pubDate>Sat, 23 Oct 2021 17:17:12 +0900</pubDate>
    </item>
    <item>
      <title>[안드로이드] Poketdex, MarvelHeros 안드로이드 샘플 프로젝트 학습</title>
      <link>https://youngest-programming.tistory.com/630</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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;209&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nTteF/btrgBDwkDZ3/kLrkN4jscjQzerNwmiks9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nTteF/btrgBDwkDZ3/kLrkN4jscjQzerNwmiks9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nTteF/btrgBDwkDZ3/kLrkN4jscjQzerNwmiks9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnTteF%2FbtrgBDwkDZ3%2FkLrkN4jscjQzerNwmiks9k%2Fimg.png&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;209&quot; data-ke-mobilestyle=&quot;widthOrigin&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 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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m7Jch/btrgRSSaNEk/qfCjlFvDDmiiT3LF8QLyL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m7Jch/btrgRSSaNEk/qfCjlFvDDmiiT3LF8QLyL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m7Jch/btrgRSSaNEk/qfCjlFvDDmiiT3LF8QLyL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm7Jch%2FbtrgRSSaNEk%2FqfCjlFvDDmiiT3LF8QLyL1%2Fimg.png&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;10월 목표 중 경력자분들의 샘플 프로젝트를 보며 공부하는게 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전에 다음 링크처럼 Sunflower 안드로이드 아키텍처 공식 프로젝트나 현재 Udemy 에서 Flutter를 정리하는 것 처럼 클래스별로 정리할까 했는데,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/545&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/545&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1633340848382&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[안드로이드] 구글 공식 프로젝트 Sunflower 스터디 (4) Hilt Dependency Injection&quot; data-og-description=&quot;[2021-04-29 업데이트] [출처 및 참고] github.com/android/sunflower android/sunflower A gardening app illustrating Android development best practices with Android Jetpack. - android/sunflower github...&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/545&quot; data-og-url=&quot;https://youngest-programming.tistory.com/545&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b4QRtf/hyLQ6d4MgP/hqCJ1Ozo3FdYoCG7Wljz0K/img.png?width=738&amp;amp;height=522&amp;amp;face=108_138_216_246,https://scrap.kakaocdn.net/dn/bjDoWr/hyLPnBLJSQ/f0JvbwOA0QJVG1fq5ExTtk/img.png?width=738&amp;amp;height=522&amp;amp;face=108_138_216_246,https://scrap.kakaocdn.net/dn/bE87q2/hyLRck3MS4/Fnr3IaqJr6w9xKiI8aL270/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/545&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/545&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b4QRtf/hyLQ6d4MgP/hqCJ1Ozo3FdYoCG7Wljz0K/img.png?width=738&amp;amp;height=522&amp;amp;face=108_138_216_246,https://scrap.kakaocdn.net/dn/bjDoWr/hyLPnBLJSQ/f0JvbwOA0QJVG1fq5ExTtk/img.png?width=738&amp;amp;height=522&amp;amp;face=108_138_216_246,https://scrap.kakaocdn.net/dn/bE87q2/hyLRck3MS4/Fnr3IaqJr6w9xKiI8aL270/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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;[안드로이드] 구글 공식 프로젝트 Sunflower 스터디 (4) Hilt Dependency Injection&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[2021-04-29 업데이트] [출처 및 참고] github.com/android/sunflower android/sunflower A gardening app illustrating Android development best practices with Android Jetpack. - android/sunflower github...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 샘플 프로젝트 Fork한 후 주석으로 기록하며 학습하려고 합니다. 나중에 추가로 더 확실하게 기록하고 싶으면 전체적으로 프로젝트를 정리하는 포스팅을 작성하겠습니다.&lt;/p&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;Skydoves님의 프로젝트를 Fork로 가져왔고 프로젝트를 학습하며 필요한 부분에 주석을 추가하는 방식으로 학습할 예정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;학습 및 기록할 프로젝트 레포지토리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[PoketDex]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/Pokedex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/Pokedex&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1633341022952&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/Pokedex:  ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM ar&quot; data-og-description=&quot; ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture. - GitHub - mtjin/Pokedex:  ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jet...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/Pokedex&quot; data-og-url=&quot;https://github.com/mtjin/Pokedex&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/McxuZ/hyLRiFAgfh/M5PIbUwQodi6a81sRDozJ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=967_127_1060_228&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/Pokedex&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/Pokedex&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/McxuZ/hyLRiFAgfh/M5PIbUwQodi6a81sRDozJ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=967_127_1060_228');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/Pokedex:  ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM ar&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jetpack (Room, ViewModel) based on MVVM architecture. - GitHub - mtjin/Pokedex:  ️ Android Pokedex using Hilt, Motion, Coroutines, Flow, Jet...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[MarvelHeros]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/MarvelHeroes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/mtjin/MarvelHeroes&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1633341112627&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/MarvelHeroes: ❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, Room, Repository, K&quot; data-og-description=&quot;❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, Room, Repository, Koin) architecture. - GitHub - mtjin/MarvelHeroes: ❤️ A sample Marvel heroes application based on MVVM...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/MarvelHeroes&quot; data-og-url=&quot;https://github.com/mtjin/MarvelHeroes&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bYrPtr/hyLRdEhgrq/aecfXzpyfiDHjMweCvtAvK/img.png?width=1200&amp;amp;height=600&amp;amp;face=967_127_1060_228&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/MarvelHeroes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/mtjin/MarvelHeroes&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bYrPtr/hyLRdEhgrq/aecfXzpyfiDHjMweCvtAvK/img.png?width=1200&amp;amp;height=600&amp;amp;face=967_127_1060_228');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/MarvelHeroes: ❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, Room, Repository, K&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;❤️ A sample Marvel heroes application based on MVVM (ViewModel, Coroutines, Room, Repository, Koin) architecture. - GitHub - mtjin/MarvelHeroes: ❤️ A sample Marvel heroes application based on MVVM...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;018&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/018.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/018.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>안드로이드/코틀린 &amp;amp; 아키텍처 &amp;amp; Recent</category>
      <category>android marvelheros practice</category>
      <category>android poketdex practice</category>
      <category>android 샘플 프로젝트 보며 학습하기</category>
      <category>막내의막무가내 안드로이드</category>
      <category>안드로이드 marvelheros 학습</category>
      <category>안드로이드 poketdex 학습</category>
      <category>안드로이드 샘플 프로젝트 학습</category>
      <category>안드로이드 아키텍처 샘플 프로젝트 학습</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/630</guid>
      <comments>https://youngest-programming.tistory.com/630#entry630comment</comments>
      <pubDate>Mon, 4 Oct 2021 18:53:44 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode)</title>
      <link>https://youngest-programming.tistory.com/624</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;&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pD0uW/btrfZpxdFz1/0aw6lyTe2ArY1lvjmLvkO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pD0uW/btrfZpxdFz1/0aw6lyTe2ArY1lvjmLvkO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pD0uW/btrfZpxdFz1/0aw6lyTe2ArY1lvjmLvkO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpD0uW%2FbtrfZpxdFz1%2F0aw6lyTe2ArY1lvjmLvkO1%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;621&quot; height=&quot;258&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;258&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;&lt;a href=&quot;https://youngest-programming.tistory.com/623&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/623&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632622727993&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/621 [Flutter] Udemy 플러터 강의 섹션 8 학습 (학습중..) (Boss Level Challenge 1 - Magic 8 Ball) [이전학습] https://youngest-programming.tistory.co..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/623&quot; data-og-url=&quot;https://youngest-programming.tistory.com/623&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/h2aGF/hyLIYWLE7N/MNsGCDd7ux2NJ8FhK8R8YK/img.png?width=628&amp;amp;height=261&amp;amp;face=0_0_628_261,https://scrap.kakaocdn.net/dn/cijHrf/hyLKrXjzHl/M6nm51HTGyZOKxyvInIeVk/img.png?width=628&amp;amp;height=261&amp;amp;face=0_0_628_261,https://scrap.kakaocdn.net/dn/gyhlD/hyLI7GaYd3/SiJOJOElHJWuRGu2f291Ik/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/623&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/623&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/h2aGF/hyLIYWLE7N/MNsGCDd7ux2NJ8FhK8R8YK/img.png?width=628&amp;amp;height=261&amp;amp;face=0_0_628_261,https://scrap.kakaocdn.net/dn/cijHrf/hyLKrXjzHl/M6nm51HTGyZOKxyvInIeVk/img.png?width=628&amp;amp;height=261&amp;amp;face=0_0_628_261,https://scrap.kakaocdn.net/dn/gyhlD/hyLI7GaYd3/SiJOJOElHJWuRGu2f291Ik/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/621 [Flutter] Udemy 플러터 강의 섹션 8 학습 (학습중..) (Boss Level Challenge 1 - Magic 8 Ball) [이전학습] https://youngest-programming.tistory.co..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632622666054&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632622666054&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;87. Quizzler - A True/False Quiz App&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;정보처리기사 공부할때 퀴즈렛을 한적이 있는데 그거와 비슷한 Quizzler 라는 앱을 만들어볼 예정입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/06l3z/btrhZlTffAh/WRfZLnxfl2oQQq4fsM6G60/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/06l3z/btrhZlTffAh/WRfZLnxfl2oQQq4fsM6G60/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/06l3z/btrhZlTffAh/WRfZLnxfl2oQQq4fsM6G60/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/06l3z/btrhZlTffAh/WRfZLnxfl2oQQq4fsM6G60/img.gif&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;342&quot; height=&quot;642&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;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;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;88. Building a Score Keeper&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;리스트 사용법과 리스트를 활용하여 True 버튼 클릭 시 동적으로 아이콘을 추가하는 방법에 대해 배웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634356899870&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [
    Icon(
      Icons.check,
      color: Colors.green,
    ),
    Icon(
      Icons.close,
      color: Colors.red,
    ),
    Icon(
      Icons.close,
      color: Colors.red,
    ),
    Icon(
      Icons.close,
      color: Colors.red,
    ),
    Icon(
      Icons.close,
      color: Colors.red,
    ),
  ];

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                'This is where the question text will go.',
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                setState(() {
                  scoreKeeper.add(Icon(
                    Icons.check,
                    color: Colors.green,
                  ));
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&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;397&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9V99O/btrhZlTfqlg/isbAXGSABw9qkOyQadRJN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9V99O/btrhZlTfqlg/isbAXGSABw9qkOyQadRJN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9V99O/btrhZlTfqlg/isbAXGSABw9qkOyQadRJN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9V99O%2FbtrhZlTfqlg%2FisbAXGSABw9qkOyQadRJN1%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;397&quot; height=&quot;758&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;758&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;89. [Dart] Lists&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다트의 리스트 개념에 대해 배웠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바와 리스트 선언 및 함수 활용법이 크게 다른점이 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;90. Displaying the Questions&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 true, false 클릭 시 질문번호가 증가되게 하고 질문번호가 변경되게 텍스트를 세팅해주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주의할 점은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1634358445483&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int questionNumber = 0;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634358378801&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];

  // 질문리스트
  List&amp;lt;String&amp;gt; questions = [
    'You can lead a cow down stairs but not up stairs.',
    'Approximately one quarter of human bones are in the feet.',
    'A slug\'s blood is green.'
  ];

  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int questionNumber = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                questions[questionNumber], //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&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;399&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brRJWF/btrhWJ8ab2x/uAM4WPHnCl3FSu3sgyM2u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brRJWF/btrhWJ8ab2x/uAM4WPHnCl3FSu3sgyM2u1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brRJWF/btrhWJ8ab2x/uAM4WPHnCl3FSu3sgyM2u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrRJWF%2FbtrhWJ8ab2x%2FuAM4WPHnCl3FSu3sgyM2u1%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;399&quot; height=&quot;754&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;91. Checking User Answers&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if else 문 활용법에 대해 배웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634358986173&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];

  // 질문리스트
  List&amp;lt;String&amp;gt; questions = [
    'You can lead a cow down stairs but not up stairs.',
    'Approximately one quarter of human bones are in the feet.',
    'A slug\'s blood is green.'
  ];

  // 정답리스트
  List&amp;lt;bool&amp;gt; answers = [false, true, true];

  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int questionNumber = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                questions[questionNumber], //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                bool correctNumber = answers[questionNumber];
                // if else 문을 활용한 정답 분기처리
                if (correctNumber == true) {
                  print('right');
                } else {
                  print('wrong');
                }
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;92. [Dart] Conditionals - IF/ELSE&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;Dart의 if else 문 개념과 사용법에 대해 배웠는데 이전 언어와 동일하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;94. Creating a Question Class&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;기존에 문제이름(String)과 정답(bool)로 이루어진 구조를 클래스를 활용하여 한번에 묶어줌으로써 더 효율적으로 코드를 변경하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 다트 클래스를 활용해보았는데 기존 자바와 크게 다른점은 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634370881850&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Question {
  String questionText;
  bool questionAnswer;

  Question({String q, bool a}) {
    questionText = q;
    questionAnswer = a;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1634370887920&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

import 'question.dart';

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];
  // 클래스 리스트
  List&amp;lt;Question&amp;gt; questionBank = [
    Question(q: 'You can lead a cow down stairs but not up stairs.', a: false),
    Question(
        q: 'Approximately one quarter of human bones are in the feet.',
        a: true),
    Question(q: 'A slug\'s blood is green.', a: true),
  ];

  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int questionNumber = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                questionBank[questionNumber].questionText, //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                bool correctNumber =
                    questionBank[questionNumber].questionAnswer;
                // if else 문을 활용한 정답 분기처리
                if (correctNumber == true) {
                  print('right');
                } else {
                  print('wrong');
                }
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;95. [Dart] Classes and Objects&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;96. Abstraction in Action&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;QuizBrain 이라는 Object 클래스를 만들어주어 Question 리스트를 관리해주는 식으로 코드를 변경했습니다.&amp;nbsp; 모듈화를 한 것이라 보면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1634371667180&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'question.dart';

class QuizBrain {
  List&amp;lt;Question&amp;gt; questionBank = [
    Question('Some cats are actually allergic to humans', true),
    Question('You can lead a cow down stairs but not up stairs.', false),
    Question('Approximately one quarter of human bones are in the feet.', true),
    Question('A slug\'s blood is green.', true),
    Question('Buzz Aldrin\'s mother\'s maiden name was \&quot;Moon\&quot;.', true),
    Question('It is illegal to pee in the Ocean in Portugal.', true),
    Question(
        'No piece of square dry paper can be folded in half more than 7 times.',
        false),
    Question(
        'In London, UK, if you happen to die in the House of Parliament, you are technically entitled to a state funeral, because the building is considered too sacred a place.',
        true),
    Question(
        'The loudest sound produced by any animal is 188 decibels. That animal is the African Elephant.',
        false),
    Question(
        'The total surface area of two human lungs is approximately 70 square metres.',
        true),
    Question('Google was originally called \&quot;Backrub\&quot;.', true),
    Question(
        'Chocolate affects a dog\'s heart and nervous system; a few ounces are enough to kill a small dog.',
        true),
    Question(
        'In West Virginia, USA, if you accidentally hit an animal with your car, you are free to take it home to eat.',
        true),
  ];
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1634371714690&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:quizzler/quiz_brain.dart';

QuizBrain quizBrain = QuizBrain();

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];
  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int questionNumber = 0;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                quizBrain.questionBank[questionNumber].questionText, //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                bool correctNumber =
                    quizBrain.questionBank[questionNumber].questionAnswer;
                // if else 문을 활용한 정답 분기처리
                if (correctNumber == true) {
                  print('right');
                } else {
                  print('wrong');
                }
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                setState(() {
                  questionNumber++;
                });
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;97. Encapsulation in Action&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;QuizBrain에 변수와 함수를 추가함으로써 더욱 모듈화 시켰습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 캡슐화를 시켜서 get은 가능하나 set은 못하게함으로써 불변하는것들에 대한 수정하는 실수가 없도록 구현했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1634372584981&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'question.dart';

class QuizBrain {
  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int _questionNumber = 0;

  // 캡슐화시킴
  List&amp;lt;Question&amp;gt; _questionBank = [
    Question('Some cats are actually allergic to humans', true),
    Question('You can lead a cow down stairs but not up stairs.', false),
    Question('Approximately one quarter of human bones are in the feet.', true),
    Question('A slug\'s blood is green.', true),
    Question('Buzz Aldrin\'s mother\'s maiden name was \&quot;Moon\&quot;.', true),
    Question('It is illegal to pee in the Ocean in Portugal.', true),
    Question(
        'No piece of square dry paper can be folded in half more than 7 times.',
        false),
    Question(
        'In London, UK, if you happen to die in the House of Parliament, you are technically entitled to a state funeral, because the building is considered too sacred a place.',
        true),
    Question(
        'The loudest sound produced by any animal is 188 decibels. That animal is the African Elephant.',
        false),
    Question(
        'The total surface area of two human lungs is approximately 70 square metres.',
        true),
    Question('Google was originally called \&quot;Backrub\&quot;.', true),
    Question(
        'Chocolate affects a dog\'s heart and nervous system; a few ounces are enough to kill a small dog.',
        true),
    Question(
        'In West Virginia, USA, if you accidentally hit an animal with your car, you are free to take it home to eat.',
        true),
  ];

  // 다음 질문 불러오기
  void nextQuestion() {
    if (_questionNumber &amp;lt; _questionBank.length - 1) {
      // 질문 개수이내
      _questionNumber++;
    }
  }

  // _questionBank을 캡슐화 시켰고 변경운 불가능하게하고 불러만 오게끔 구현
  String getQuestionText() {
    return _questionBank[_questionNumber].questionText;
  }

  bool getQuestionNumber() {
    return _questionBank[_questionNumber].questionAnswer;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1634372641843&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:quizzler/quiz_brain.dart';

QuizBrain quizBrain = QuizBrain();

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                quizBrain.getQuestionText(),
                //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                bool correctNumber = quizBrain.getQuestionNumber();
                // if else 문을 활용한 정답 분기처리
                if (correctNumber == true) {
                  print('right');
                } else {
                  print('wrong');
                }
                setState(() {
                  quizBrain.nextQuestion();
                });
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                setState(() {
                  quizBrain.nextQuestion();
                });
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;98. Inheritance in Action&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;extends로 자바와 동일했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;99. Polymorphism in Action&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;checkAnswer() 함수를 만들어 모듈화를 진행하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634382080157&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:quizzler/quiz_brain.dart';

QuizBrain quizBrain = QuizBrain();

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  // 스코어 아이콘 리스트
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];

  void checkAnswer(bool userPickedAnswer) {
    //The user picked true.
    bool correctAnswer = quizBrain.getQuestionNumber();
    setState(() {
      // if else 문을 활용한 정답 분기처리
      if (userPickedAnswer == correctAnswer) {
        scoreKeeper.add(Icon(
          Icons.check,
          color: Colors.green,
        ));
      } else {
        scoreKeeper.add(Icon(
          Icons.close,
          color: Colors.red,
        ));
      }
      // 다음 문제
      quizBrain.nextQuestion();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                quizBrain.getQuestionText(),
                //리스트 이용
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                checkAnswer(true);
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                checkAnswer(false);
              },
            ),
          ),
        ),
        // 스코어 리스트 동적으로 그려줌
        Row(children: scoreKeeper)
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&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;397&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1q1Dg/btrhTcRIpOh/upTLXvMCZ15ZJkgxnGQAl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1q1Dg/btrhTcRIpOh/upTLXvMCZ15ZJkgxnGQAl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1q1Dg/btrhTcRIpOh/upTLXvMCZ15ZJkgxnGQAl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1q1Dg%2FbtrhTcRIpOh%2FupTLXvMCZ15ZJkgxnGQAl0%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;397&quot; height=&quot;764&quot; data-origin-width=&quot;397&quot; data-origin-height=&quot;764&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;101. Code Challenge&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1634382701343&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'question.dart';

class QuizBrain {
  // 질문 번호 (핫리로드시 state를 보존하기때문에 이 값을 보존함 0부터 다시 시작하고싶으면 핫스타트 사용해야함)
  int _questionNumber = 0;

  // 캡슐화시킴
  List&amp;lt;Question&amp;gt; _questionBank = [
    Question('Some cats are actually allergic to humans', true),
    Question('You can lead a cow down stairs but not up stairs.', false),
    Question('Approximately one quarter of human bones are in the feet.', true),
    Question('A slug\'s blood is green.', true),
    Question('Buzz Aldrin\'s mother\'s maiden name was \&quot;Moon\&quot;.', true),
    Question('It is illegal to pee in the Ocean in Portugal.', true),
    Question(
        'No piece of square dry paper can be folded in half more than 7 times.',
        false),
    Question(
        'In London, UK, if you happen to die in the House of Parliament, you are technically entitled to a state funeral, because the building is considered too sacred a place.',
        true),
    Question(
        'The loudest sound produced by any animal is 188 decibels. That animal is the African Elephant.',
        false),
    Question(
        'The total surface area of two human lungs is approximately 70 square metres.',
        true),
    Question('Google was originally called \&quot;Backrub\&quot;.', true),
    Question(
        'Chocolate affects a dog\'s heart and nervous system; a few ounces are enough to kill a small dog.',
        true),
    Question(
        'In West Virginia, USA, if you accidentally hit an animal with your car, you are free to take it home to eat.',
        true),
  ];

  // 다음 질문 불러오기
  void nextQuestion() {
    if (_questionNumber &amp;lt; _questionBank.length - 1) {
      // 질문 개수이내
      _questionNumber++;
    }
  }

  // _questionBank을 캡슐화 시켰고 변경운 불가능하게하고 불러만 오게끔 구현
  String getQuestionText() {
    return _questionBank[_questionNumber].questionText;
  }

  bool getCorrectAnswer() {
    return _questionBank[_questionNumber].questionAnswer;
  }

  //TODO: Step 3 Part A - Create a method called isFinished() here that checks to see if we have reached the last question. It should return (have an output) true if we've reached the last question and it should return false if we're not there yet.

  bool isFinished() {
    if (_questionNumber &amp;gt;= _questionBank.length - 1) {
      //TODO: Step 3 Part B - Use a print statement to check that isFinished is returning true when you are indeed at the end of the quiz and when a restart should happen.

      print('Now returning true');
      return true;

    } else {
      return false;
    }
  }

  //TODO: Step 4 part B - Create a reset() method here that sets the questionNumber back to 0.
  void reset() {
    _questionNumber = 0;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1634382686483&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
//TODO: Step 2 - Import the rFlutter_Alert package here.
import 'package:rflutter_alert/rflutter_alert.dart';
import 'quiz_brain.dart';

QuizBrain quizBrain = QuizBrain();

void main() =&amp;gt; runApp(Quizzler());

class Quizzler extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        backgroundColor: Colors.grey.shade900,
        body: SafeArea(
          child: Padding(
            padding: EdgeInsets.symmetric(horizontal: 10.0),
            child: QuizPage(),
          ),
        ),
      ),
    );
  }
}

class QuizPage extends StatefulWidget {
  @override
  _QuizPageState createState() =&amp;gt; _QuizPageState();
}

class _QuizPageState extends State&amp;lt;QuizPage&amp;gt; {
  List&amp;lt;Icon&amp;gt; scoreKeeper = [];

  void checkAnswer(bool userPickedAnswer) {
    bool correctAnswer = quizBrain.getCorrectAnswer();

    setState(() {
      //TODO: Step 4 - Use IF/ELSE to check if we've reached the end of the quiz. If so,
      //On the next line, you can also use if (quizBrain.isFinished()) {}, it does the same thing.
      if (quizBrain.isFinished() == true) {
        //TODO Step 4 Part A - show an alert using rFlutter_alert,

        //This is the code for the basic alert from the docs for rFlutter Alert:
        //Alert(context: context, title: &quot;RFLUTTER&quot;, desc: &quot;Flutter is awesome.&quot;).show();

        //Modified for our purposes:
        Alert(
          context: context,
          title: 'Finished!',
          desc: 'You\'ve reached the end of the quiz.',
        ).show();

        //TODO Step 4 Part C - reset the questionNumber,
        quizBrain.reset();

        //TODO Step 4 Part D - empty out the scoreKeeper.
        scoreKeeper = [];
      }

      //TODO: Step 6 - If we've not reached the end, ELSE do the answer checking steps below  
      else {
        if (userPickedAnswer == correctAnswer) {
          scoreKeeper.add(Icon(
            Icons.check,
            color: Colors.green,
          ));
        } else {
          scoreKeeper.add(Icon(
            Icons.close,
            color: Colors.red,
          ));
        }
        quizBrain.nextQuestion();
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      crossAxisAlignment: CrossAxisAlignment.stretch,
      children: &amp;lt;Widget&amp;gt;[
        Expanded(
          flex: 5,
          child: Padding(
            padding: EdgeInsets.all(10.0),
            child: Center(
              child: Text(
                quizBrain.getQuestionText(),
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: 25.0,
                  color: Colors.white,
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              textColor: Colors.white,
              color: Colors.green,
              child: Text(
                'True',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 20.0,
                ),
              ),
              onPressed: () {
                //The user picked true.
                checkAnswer(true);
              },
            ),
          ),
        ),
        Expanded(
          child: Padding(
            padding: EdgeInsets.all(15.0),
            child: FlatButton(
              color: Colors.red,
              child: Text(
                'False',
                style: TextStyle(
                  fontSize: 20.0,
                  color: Colors.white,
                ),
              ),
              onPressed: () {
                //The user picked false.
                checkAnswer(false);
              },
            ),
          ),
        ),
        Row(
          children: scoreKeeper,
        )
      ],
    );
  }
}

/*
question1: 'You can lead a cow down stairs but not up stairs.', false,
question2: 'Approximately one quarter of human bones are in the feet.', true,
question3: 'A slug\'s blood is green.', true,
*/&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;398&quot; data-origin-height=&quot;757&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYYgMO/btrhTRNsvFQ/YsOSaJz3JcDx2pzziVk91k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYYgMO/btrhTRNsvFQ/YsOSaJz3JcDx2pzziVk91k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYYgMO/btrhTRNsvFQ/YsOSaJz3JcDx2pzziVk91k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYYgMO%2FbtrhTRNsvFQ%2FYsOSaJz3JcDx2pzziVk91k%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;398&quot; height=&quot;757&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;757&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;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;032&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이상 섹션 10 강의를 학습완료했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[다음강의]&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/632&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/632&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1634383329347&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 11 학습 (학습중...) (섹션 11: Boss Level Challenge 2 - Destini)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/624 [Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode) [이전학습] https://youngest-programming.t..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/632&quot; data-og-url=&quot;https://youngest-programming.tistory.com/632&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bNiomc/hyLYv04Js2/Wf2rzX6Ol42CoUfPpJzcF1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/cLBoFE/hyLZN6TCkc/UKnQOeeEBlHzuQKCgIToX1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/ssPo3/hyLZQCwVVa/iF8CCoQbh4lUjNUmuQ5341/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/632&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/632&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bNiomc/hyLYv04Js2/Wf2rzX6Ol42CoUfPpJzcF1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/cLBoFE/hyLZN6TCkc/UKnQOeeEBlHzuQKCgIToX1/img.png?width=623&amp;amp;height=259&amp;amp;face=0_0_623_259,https://scrap.kakaocdn.net/dn/ssPo3/hyLZQCwVVa/iF8CCoQbh4lUjNUmuQ5341/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 11 학습 (학습중...) (섹션 11: Boss Level Challenge 2 - Destini)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/624 [Flutter] Udemy 플러터 강의 섹션 10 학습 (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode) [이전학습] https://youngest-programming.t..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;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>플러터(Flutter) &amp;amp; Dart</category>
      <category>flutter class object</category>
      <category>flutter if else</category>
      <category>udemy anglea Quizzler -Modularising &amp;amp; Organising FlutterCode</category>
      <category>막내의막무가내 flutter</category>
      <category>섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode</category>
      <category>플러터 if else</category>
      <category>플러터 조건문</category>
      <category>플러터 클래스 객체</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/624</guid>
      <comments>https://youngest-programming.tistory.com/624#entry624comment</comments>
      <pubDate>Sun, 26 Sep 2021 11:20:00 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development)</title>
      <link>https://youngest-programming.tistory.com/623</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;&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-origin-width=&quot;628&quot; data-origin-height=&quot;261&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wbdqm/btrfPB5Jt43/2Q0jbi9JWgXsKwXEEWzeUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wbdqm/btrfPB5Jt43/2Q0jbi9JWgXsKwXEEWzeUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wbdqm/btrfPB5Jt43/2Q0jbi9JWgXsKwXEEWzeUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwbdqm%2FbtrfPB5Jt43%2F2Q0jbi9JWgXsKwXEEWzeUk%2Fimg.png&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;261&quot; data-ke-mobilestyle=&quot;widthOrigin&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 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;&lt;a href=&quot;https://youngest-programming.tistory.com/621&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/621&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632397396461&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 8 학습 (학습중..) (Boss Level Challenge 1 - Magic 8 Ball)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/617 [Flutter] Udemy 플러터 강의 섹션 7 학습 (Dicee - Building Apps with State) 플러터에 대해 조금씩 학습하고 있습니다. 최근에는 연수때문에 시간이..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/621&quot; data-og-url=&quot;https://youngest-programming.tistory.com/621&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g0cn8/hyLHLCGFs0/xL7rX9e19UypJHhqjBgA5K/img.png?width=627&amp;amp;height=263&amp;amp;face=0_0_627_263,https://scrap.kakaocdn.net/dn/bJaQHd/hyLI1qm2bz/qnES3k5wMYd99N92gyfcvK/img.png?width=627&amp;amp;height=263&amp;amp;face=0_0_627_263,https://scrap.kakaocdn.net/dn/bBzx4e/hyLHN8k9Jy/UZLluuM52p7IA5fNbbo81k/img.png?width=850&amp;amp;height=894&amp;amp;face=0_0_850_894&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/621&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/621&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g0cn8/hyLHLCGFs0/xL7rX9e19UypJHhqjBgA5K/img.png?width=627&amp;amp;height=263&amp;amp;face=0_0_627_263,https://scrap.kakaocdn.net/dn/bJaQHd/hyLI1qm2bz/qnES3k5wMYd99N92gyfcvK/img.png?width=627&amp;amp;height=263&amp;amp;face=0_0_627_263,https://scrap.kakaocdn.net/dn/bBzx4e/hyLHN8k9Jy/UZLluuM52p7IA5fNbbo81k/img.png?width=850&amp;amp;height=894&amp;amp;face=0_0_850_894');&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] Udemy 플러터 강의 섹션 8 학습 (학습중..) (Boss Level Challenge 1 - Magic 8 Ball)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/617 [Flutter] Udemy 플러터 강의 섹션 7 학습 (Dicee - Building Apps with State) 플러터에 대해 조금씩 학습하고 있습니다. 최근에는 연수때문에 시간이..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;[참고]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;https://www.udemy.com/course/flutter-bootcamp-with-dart/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632397387295&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;udemy_com:course&quot; data-og-title=&quot;The Complete 2021 Flutter Development Bootcamp with Dart&quot; data-og-description=&quot;Officially created in collaboration with the Google Flutter team.&quot; data-og-host=&quot;www.udemy.com&quot; data-og-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot; data-source-url=&quot;https://www.udemy.com/course/flutter-bootcamp-with-dart/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cKPSTd/hyLgycAdJD/12HSIqIGV2kt3H74iKYgH0/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135,https://scrap.kakaocdn.net/dn/yFlAb/hyLgyDB6q2/P1qeCKDYorQyudkrbyvgs1/img.jpg?width=480&amp;amp;height=270&amp;amp;face=243_45_325_135');&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;The Complete 2021 Flutter Development Bootcamp with Dart&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Officially created in collaboration with the Google Flutter team.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.udemy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;https://github.com/mtjin/flutter-practice&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632397387296&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&quot; data-og-description=&quot;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-url=&quot;https://github.com/mtjin/flutter-practice&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/mtjin/flutter-practice&quot; data-source-url=&quot;https://github.com/mtjin/flutter-practice&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/voMRi/hyLgGVVBSi/JNWkfkkXRkP66XfkbbBcHK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - mtjin/flutter-practice: Learning About Flutter (플러터 공부)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learning About Flutter (플러터 공부). Contribute to mtjin/flutter-practice development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;74. Xylophone - A Simple Musical Instrument App&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;75. What are Flutter &amp;amp; Dart Packages?&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://pub.dev/flutter/packages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/flutter/packages&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632573366378&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;Page 1 | Top Flutter packages&quot; data-og-description=&quot;Pub is the package manager for the Dart programming language, containing reusable libraries &amp;amp; packages for Flutter, AngularDart, and general Dart programs.&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/flutter/packages&quot; data-og-url=&quot;https://pub.dev/flutter/packages&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bGrNLl/hyLIYCeclg/v8I5vDVJovh9fYBRrwVvPk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/YM6RI/hyLI4bk6nQ/jZ7r9wqmR7RID69kdffmEK/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/flutter/packages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/flutter/packages&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bGrNLl/hyLIYCeclg/v8I5vDVJovh9fYBRrwVvPk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/YM6RI/hyLI4bk6nQ/jZ7r9wqmR7RID69kdffmEK/img.png?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;Page 1 | Top Flutter packages&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Pub is the package manager for the Dart programming language, containing reusable libraries &amp;amp; packages for Flutter, AngularDart, and general Dart programs.&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;english_words 패키지를 검색하여 pubspec.yml 파일에 추가해주었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1632573915854&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: xylophone
description: A new Flutter application.

version: 1.0.0+1

environment:
  sdk: &quot;&amp;gt;=2.1.0 &amp;lt;3.0.0&quot;

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  english_words : ^3.1.5

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true

  assets:
    - assets/&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;패키지를 추가했으면 다음과 같이 import 하여 사용이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nouns 에서 가장 마지막 단어를 볼 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1632574015012&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:english_words/english_words.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Text(nouns.last),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;655&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yQE35/btrfU3hC5n9/ts3tAlFtWt5HMHn0A1QojK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yQE35/btrfU3hC5n9/ts3tAlFtWt5HMHn0A1QojK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yQE35/btrfU3hC5n9/ts3tAlFtWt5HMHn0A1QojK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyQE35%2FbtrfU3hC5n9%2Fts3tAlFtWt5HMHn0A1QojK%2Fimg.png&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;655&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;76. How to Play Sound Across Platforms&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;이전에 추가한 패키지는 지우고 이번 섹션의 본프로젝트인 오디오 관련 패키지를 추가하고 이 패키지에서 제공하는 기능을 통해 assets 폴더에 있는 wav음악파일을 재생시키는 코드를 작성해봤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 internet이 아닌 assets에 프로젝트 내부 음악을 재생시키는거라 audioplayers 패키지의 audio_cache.dart만 사용한것을 볼 수 있습니다. (+이 패키지에서는 인터넷에서 음악 가져오는 기능도 제공합니다.)&lt;/p&gt;
&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/audioplayers/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pub.dev/packages/audioplayers/install&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632576039541&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;audioplayers | Flutter Package&quot; data-og-description=&quot;A Flutter plugin to play multiple audio files simultaneously&quot; data-og-host=&quot;pub.dev&quot; data-og-source-url=&quot;https://pub.dev/packages/audioplayers/install&quot; data-og-url=&quot;https://pub.dev/packages/audioplayers/install&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/9AZPp/hyLKriugt1/mUpcKZt6lPWz3xtQVfFigk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bJuNzp/hyLI5g4gVJ/ko9RD2JAKXNBEHrBsyJk30/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://pub.dev/packages/audioplayers/install&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://pub.dev/packages/audioplayers/install&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/9AZPp/hyLKriugt1/mUpcKZt6lPWz3xtQVfFigk/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/bJuNzp/hyLI5g4gVJ/ko9RD2JAKXNBEHrBsyJk30/img.png?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;audioplayers | Flutter Package&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A Flutter plugin to play multiple audio files simultaneously&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;pre id=&quot;code_1632576231534&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name: xylophone
description: A new Flutter application.

version: 1.0.0+1

environment:
  sdk: &quot;&amp;gt;=2.1.0 &amp;lt;3.0.0&quot;

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  audioplayers: ^0.10.0

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:

  uses-material-design: true

  assets:
    - assets/&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1632576238592&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Center(
            child: FlatButton(
              onPressed: () {
                final player = AudioCache();
                player.play('note1.wav');
              },
              child: Text('Click Me'),
            ),
          ),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;663&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3RuFN/btrfUOdXID3/xgFgbrK9RmiqibZnn7K1Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3RuFN/btrfUOdXID3/xgFgbrK9RmiqibZnn7K1Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3RuFN/btrfUOdXID3/xgFgbrK9RmiqibZnn7K1Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3RuFN%2FbtrfUOdXID3%2FxgFgbrK9RmiqibZnn7K1Ik%2Fimg.png&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;663&quot; data-ke-mobilestyle=&quot;widthOrigin&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;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;746&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C3Dts/btrfUO57iQ5/ujCgD951rHE2kaYzaLtVFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C3Dts/btrfUO57iQ5/ujCgD951rHE2kaYzaLtVFk/img.png&quot; data-alt=&quot;클릭하면 오디오가 재생됩니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C3Dts/btrfUO57iQ5/ujCgD951rHE2kaYzaLtVFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC3Dts%2FbtrfUO57iQ5%2FujCgD951rHE2kaYzaLtVFk%2Fimg.png&quot; data-origin-width=&quot;398&quot; data-origin-height=&quot;746&quot; data-ke-mobilestyle=&quot;widthOrigin&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;figcaption&gt;클릭하면 오디오가 재생됩니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;77. How to Play Multiple Sounds&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수를 사용하여 모듈화했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1632620420052&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            children: &amp;lt;Widget&amp;gt;[
              FlatButton(
                color: Colors.red,
                onPressed: () {
                  playSound(1);
                },
              ),
              FlatButton(
                color: Colors.orange,
                onPressed: () {
                  playSound(2);
                },
              ),
              FlatButton(
                color: Colors.yellow,
                onPressed: () {
                  playSound(3);
                },
              ),
              FlatButton(
                color: Colors.green,
                onPressed: () {
                  playSound(4);
                },
              ),
              FlatButton(
                color: Colors.teal,
                onPressed: () {
                  playSound(5);
                },
              ),
              FlatButton(
                color: Colors.blue,
                onPressed: () {
                  playSound(6);
                },
              ),
              FlatButton(
                color: Colors.purple,
                onPressed: () {
                  playSound(7);
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;746&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnSzd8/btrfU2QJXFC/DPV2HP0qtDe4LEn2mDqL8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnSzd8/btrfU2QJXFC/DPV2HP0qtDe4LEn2mDqL8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnSzd8/btrfU2QJXFC/DPV2HP0qtDe4LEn2mDqL8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnSzd8%2FbtrfU2QJXFC%2FDPV2HP0qtDe4LEn2mDqL8K%2Fimg.png&quot; data-origin-width=&quot;393&quot; data-origin-height=&quot;746&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;78. [Dart] Functions - Part 2&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수란 무엇인가에 대해 배웠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바와 코틀린에서의 함수와 큰 차이점은 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;79. Updating the UI of Our App&lt;/span&gt;]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Expanded 위젯과 crossAxixAligment 정렬을 통해 UI를 업데이트하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 buildKey()로 UI그리는것을 모듈화 하였는데 아직 미완성단계입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1632621064560&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  void buildKey() {
    Expanded(
      child: FlatButton(
        color: Colors.red,
        onPressed: () {
          playSound(1);
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              buildKey(),
              buildKey(),
              buildKey(),
              buildKey(),
              buildKey(),
              buildKey(),
              buildKey(),
            ],
          ),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;758&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oCehl/btrfTKJwtMf/oZ7MekoSxoCwTWdkvcekv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oCehl/btrfTKJwtMf/oZ7MekoSxoCwTWdkvcekv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oCehl/btrfTKJwtMf/oZ7MekoSxoCwTWdkvcekv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoCehl%2FbtrfTKJwtMf%2FoZ7MekoSxoCwTWdkvcekv1%2Fimg.png&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;758&quot; data-ke-mobilestyle=&quot;widthOrigin&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;80. [Dart] Functions - Part 3&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;78에서 함수강의에 이어지는 함수강의 파트3입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수의 리턴에 대해 배웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특이한점은 인자값을 넘겨줄때 매개변수명을 이용하여 인자값을 넘겨줄때는 매개변수를 {} 로 감싸야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 예시는 다음 81 강의 코드를 참고하면 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;82. Refactoring Our App&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;79강의에서 미완성한 부분을 80에서 다트 함수에 대해 배우고 이를 적용하여 구현을 완료했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1632622158245&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  // 매개변수명으로 인자를 넘길때는 {} 로 매개변수를 감싸줘야함
  Expanded buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(
        color: color,
        onPressed: () {
          playSound(soundNumber);
        },
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              buildKey(color: Colors.red, soundNumber: 1),
              buildKey(color: Colors.purple, soundNumber: 1),
              buildKey(color: Colors.yellow, soundNumber: 1),
              buildKey(color: Colors.green, soundNumber: 1),
              buildKey(color: Colors.teal, soundNumber: 1),
              buildKey(color: Colors.blue, soundNumber: 1),
              buildKey(color: Colors.purple, soundNumber: 1),
            ],
          ),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;span style=&quot;background-color: #d1d7dc; color: #1c1d1f;&quot;&gt;83. [Dart] Arrow Functions&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;다트의 Arrow Functions 에 대해 간략히 배웠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;배운 내용을 바탕으로 buildKey()에 적용해봤습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1632622408297&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(XylophoneApp());

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  // 매개변수명으로 인자를 넘길때는 {} 로 매개변수를 감싸줘야함
  // Arrow Function 적용
  Expanded buildKey({Color color, int soundNumber}) =&amp;gt; Expanded(
        child: FlatButton(
          color: color,
          onPressed: () {
            playSound(soundNumber);
          },
        ),
      );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: &amp;lt;Widget&amp;gt;[
              buildKey(color: Colors.red, soundNumber: 1),
              buildKey(color: Colors.purple, soundNumber: 1),
              buildKey(color: Colors.yellow, soundNumber: 1),
              buildKey(color: Colors.green, soundNumber: 1),
              buildKey(color: Colors.teal, soundNumber: 1),
              buildKey(color: Colors.blue, soundNumber: 1),
              buildKey(color: Colors.purple, soundNumber: 1),
            ],
          ),
        ),
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;007&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상 섹션 9 학습을 완료했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[다음강의]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/624&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://youngest-programming.tistory.com/624&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632622837357&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] Udemy 플러터 강의 섹션 10 학습 (학습중...) (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode)&quot; data-og-description=&quot;[이전학습] https://youngest-programming.tistory.com/623 [Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development) [이전학습] https://youngest-prog..&quot; data-og-host=&quot;youngest-programming.tistory.com&quot; data-og-source-url=&quot;https://youngest-programming.tistory.com/624&quot; data-og-url=&quot;https://youngest-programming.tistory.com/624&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/g1dtl/hyLI7TGGhM/NpMFp1Cvu8QeLUk3lYEq91/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/t7o4i/hyLIXpYnno/rkKNMx7ukCJyfQh042yCR0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/yUWPq/hyLKlv1VJO/qUIDbR8g4Px99AbqmfzNwK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245&quot;&gt;&lt;a href=&quot;https://youngest-programming.tistory.com/624&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://youngest-programming.tistory.com/624&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/g1dtl/hyLI7TGGhM/NpMFp1Cvu8QeLUk3lYEq91/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/t7o4i/hyLIXpYnno/rkKNMx7ukCJyfQh042yCR0/img.png?width=621&amp;amp;height=258&amp;amp;face=0_0_621_258,https://scrap.kakaocdn.net/dn/yUWPq/hyLKlv1VJO/qUIDbR8g4Px99AbqmfzNwK/img.jpg?width=700&amp;amp;height=1245&amp;amp;face=0_0_700_1245');&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] Udemy 플러터 강의 섹션 10 학습 (학습중...) (섹션 10: Quizzler -Modularising &amp;amp; Organising FlutterCode)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[이전학습] https://youngest-programming.tistory.com/623 [Flutter] Udemy 플러터 강의 섹션 9 학습 (Xylophone - Using Flutter and Dart Packages toSpeed Up Development) [이전학습] https://youngest-prog..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;youngest-programming.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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>플러터(Flutter) &amp;amp; Dart</category>
      <category>anglea udemy flutter practice</category>
      <category>flutter arrow functions</category>
      <category>flutter audioplayers package</category>
      <category>flutter functions</category>
      <category>Xylophone - Using Flutter and Dart Packages toSpeed Up Development</category>
      <category>안젤라 유데미 플러터 강의 학습</category>
      <category>플러터 audioplayers</category>
      <category>플러터 음악 재생</category>
      <category>플러터 함수 function</category>
      <author>막무가내막내</author>
      <guid isPermaLink="true">https://youngest-programming.tistory.com/623</guid>
      <comments>https://youngest-programming.tistory.com/623#entry623comment</comments>
      <pubDate>Thu, 23 Sep 2021 20:44:11 +0900</pubDate>
    </item>
  </channel>
</rss>