<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>짱득이의 앱 개발 일기</title>
    <link>https://timradder.tistory.com/</link>
    <description>안녕하세요. 짱득입니다.
네트워크 전공자이고, 현재는 앱 개발 취준생입니다.</description>
    <language>ko</language>
    <pubDate>Sun, 28 Jun 2026 17:10:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>짱득이</managingEditor>
    <image>
      <title>짱득이의 앱 개발 일기</title>
      <url>https://tistory1.daumcdn.net/tistory/4319236/attach/833007fa7d264efa98cdee8ec98cf58d</url>
      <link>https://timradder.tistory.com</link>
    </image>
    <item>
      <title>[Android : Kotlin] 안드로이드 버튼 background drawable(shape) 적용 안되는 이유</title>
      <link>https://timradder.tistory.com/47</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1Hj5M/btrAwGsxRt9/JkvrNRkKyPYfAbRy9TKXlk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1Hj5M/btrAwGsxRt9/JkvrNRkKyPYfAbRy9TKXlk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1Hj5M/btrAwGsxRt9/JkvrNRkKyPYfAbRy9TKXlk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b1Hj5M/btrAwGsxRt9/JkvrNRkKyPYfAbRy9TKXlk/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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &amp;zwj;  Android Button background drawable 적용이 되지 않을 때 대처 방법&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Android Button Customizing을 하기 위하여 drawable 폴더에 shape를 만들고, Button 태그에서 background에 적용시켜줄 때 적용이 되지 않고 default button 모양이 그대로 보여질 때가 있다. 이 경우에 어떻게 대처해야 하는지를 다루었다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;shape&lt;/b&gt;를 아래 코드와 같이 만들어 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650960577361&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&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;shape xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;&amp;gt;
    &amp;lt;solid
        android:color=&quot;#FFFFFF&quot;
        /&amp;gt;

    &amp;lt;corners
        android:bottomLeftRadius=&quot;20dp&quot;
        android:topLeftRadius=&quot;20dp&quot;
        /&amp;gt;


&amp;lt;/shape&amp;gt;&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;495&quot; data-origin-height=&quot;781&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/re4vG/btrAtKJhJdW/ncjaQI6F62vhQk8HqLRCE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/re4vG/btrAtKJhJdW/ncjaQI6F62vhQk8HqLRCE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/re4vG/btrAtKJhJdW/ncjaQI6F62vhQk8HqLRCE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fre4vG%2FbtrAtKJhJdW%2FncjaQI6F62vhQk8HqLRCE0%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;302&quot; height=&quot;477&quot; data-origin-width=&quot;495&quot; data-origin-height=&quot;781&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;위와 같은 모양을 나타내기 위해 &lt;b&gt;shape&lt;/b&gt; 코드를 작성 해 주었고, 아래와 같이 &lt;b&gt;Button&lt;/b&gt;에 적용 해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650960688415&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;Button
        android:id=&quot;@+id/addressSearchButton&quot;
        android:layout_width=&quot;wrap_content&quot;
        android:layout_height=&quot;wrap_content&quot;
        android:adjustViewBounds=&quot;true&quot;
        android:scaleType=&quot;centerInside&quot;
        android:drawableLeft=&quot;@drawable/address_search_button&quot;
        android:text=&quot;주소로 방 찾기&quot;
        android:textColor=&quot;@color/black&quot;
        android:textSize=&quot;14sp&quot;
        android:textStyle=&quot;bold&quot;
        app:layout_constraintStart_toStartOf=&quot;parent&quot;
        app:layout_constraintEnd_toEndOf=&quot;@id/guideline2&quot;
        app:layout_constraintTop_toTopOf=&quot;parent&quot;
        app:layout_constraintBottom_toBottomOf=&quot;parent&quot;
        android:layout_marginBottom=&quot;480dp&quot;
        android:layout_marginEnd=&quot;-39dp&quot;
        android:background=&quot;@drawable/search_form_LeftButton&quot;
        /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그랬더니 처음 버튼을 추가하면 나오는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Default Button&lt;/b&gt;&lt;/span&gt; 이 나와버린다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이런 경우, &lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;&amp;lt;Button ... /&amp;gt; 을 &amp;lt;android.widget.Button /&amp;gt; 또는 &amp;lt;androidx.appcompat.widget.AppCompatButton /&amp;gt; 으로 바꿔주면 해결된다.&lt;/b&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; &amp;zwj;  적용이 되지 않았던 원인은 ?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;res/values/themes/themes.xml&lt;/b&gt; 을 살펴보자. 아래와 같은 코드를 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;343&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAKrbd/btrAwDil2mN/K6tk3uB2wOG3L3paucfpp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAKrbd/btrAwDil2mN/K6tk3uB2wOG3L3paucfpp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAKrbd/btrAwDil2mN/K6tk3uB2wOG3L3paucfpp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAKrbd%2FbtrAwDil2mN%2FK6tk3uB2wOG3L3paucfpp0%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;852&quot; height=&quot;343&quot; data-origin-width=&quot;852&quot; data-origin-height=&quot;343&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3번 라인을 살펴보자.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650960866539&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    &amp;lt;style name=&quot;Theme.HomeMark&quot; parent=&quot;Theme.MaterialComponents.DayNight.DarkActionBar&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;바로 이 부분 때문인데, MaterialComponents 디자인을 상속받고 있기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #f89009;&quot;&gt;MaterialComponents 디자인은 아예 background 속성을 자체적으로 갖고 있어버리기 때문에 변경되지 않는 것이다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그렇기 때문에 이 부분을 parent='Theme.AppCompat.Light'로 바꿔주기만 해도 문제가 해결되긴 하지만, 해당 style을 적용하고 있는 Activity나 프로젝트 적체의 theme도 변경될 수 있으니 주의하여야 하고, 표준으로 사용하고 있는 것 같기 때문에 그냥 그때그때 Button의 태그만 바꿔서 사용하는게 좋을 것 같다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;참고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/52743190/when-using-theme-materialcomponents-light-noactionbar-style-setting-button-back/52751122&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/52743190/when-using-theme-materialcomponents-light-noactionbar-style-setting-button-back/52751122&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velmurugan-murugesan.medium.com/material-button-in-android-e4391a243b17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velmurugan-murugesan.medium.com/material-button-in-android-e4391a243b17&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;&amp;nbsp;#알고리즘 #Algorithm #문풀이 #앱개발 #&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Kotlin</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/47</guid>
      <comments>https://timradder.tistory.com/47#entry47comment</comments>
      <pubDate>Tue, 26 Apr 2022 17:18:07 +0900</pubDate>
    </item>
    <item>
      <title>[Android : Kotlin] 코틀린에서 문자열을 쪼개는 2가지 방법 (Split과 StringTokenizer의 차이)</title>
      <link>https://timradder.tistory.com/46</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr8Acc/btrzS2WGVXp/joOk6qkE6b3Dw4TtFAaNYk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr8Acc/btrzS2WGVXp/joOk6qkE6b3Dw4TtFAaNYk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr8Acc/btrzS2WGVXp/joOk6qkE6b3Dw4TtFAaNYk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dr8Acc/btrzS2WGVXp/joOk6qkE6b3Dw4TtFAaNYk/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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&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;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; &amp;zwj;  Android Call-Back Pattern&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;대부분의 언어는 아래와 같이 split() 함수를 통해서 문자열을 쪼갠다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650422913270&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;### Python3
StringVal = &quot;대 한 민 국&quot;

print(StringVal.split(&quot; &quot;) #['대', '한', '민', '국'] 출력


print(StringVal.split(&quot; &quot;)[0]) # '대' 출력
print(StringVal.split(&quot; &quot;)[1]) # '한' 출력
print(StringVal.split(&quot; &quot;)[2]) # '민' 출력
print(StringVal.split(&quot; &quot;)[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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그리고 자바에서는 split() 뿐만 아니라 StringTokenizer를 통해서도 쪼갤 수 있는데, 이것이 다행히도 코틀린에서도 가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650423305068&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.*

fun main() {
    val str = &quot;대 한 민 국&quot;
    val sttk = StringTokenizer(str)
        // 문자열을 쪼갬. 미지정시 공백을 기준으로 쪼갬.

    val stsplit = str.split(&quot; &quot;)
        // 문자열을 쪼갬. 공백을 기준으로 지정
    
    println(&quot;원본 : &quot; + stsplit) # 원본 : 대한민국
    
    println() // 그냥 개행
    
    println(stsplit[0]) # 대
    println(stsplit[1]) # 한
    println(stsplit[2]) # 민
    println(stsplit[3]) # 국
    
    println() // 그냥 개행
    
    println(sttk.nextToken().toString()) # 대
    println(sttk.nextToken().toString()) # 한
    println(sttk.nextToken().toString()) # 민
    println(sttk.nextToken().toString()) # 국
}&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;201&quot; data-origin-height=&quot;239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w4iVB/btrzUhzHHvR/kTiNL71ljRk94PAD0kgVr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w4iVB/btrzUhzHHvR/kTiNL71ljRk94PAD0kgVr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w4iVB/btrzUhzHHvR/kTiNL71ljRk94PAD0kgVr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw4iVB%2FbtrzUhzHHvR%2FkTiNL71ljRk94PAD0kgVr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;201&quot; height=&quot;239&quot; data-origin-width=&quot;201&quot; data-origin-height=&quot;239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이와 같이 문자열을 쪼갤 수 있다. 당연히 공백뿐만 아니라 다양한 문자도 쪼갤 수 있지만, 규칙성이 필요하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;&amp;nbsp;#알고리즘 #Algorithm #문제풀이 #앱개발 #&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Kotlin</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/46</guid>
      <comments>https://timradder.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 20 Apr 2022 11:57:32 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 11021번 : A+B-7 - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/45</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;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ks9hK/btrzQIetV5i/FbnZteqwD0ikMn0KfDrrkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ks9hK/btrzQIetV5i/FbnZteqwD0ikMn0KfDrrkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ks9hK/btrzQIetV5i/FbnZteqwD0ikMn0KfDrrkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKs9hK%2FbtrzQIetV5i%2FFbnZteqwD0ikMn0KfDrrkK%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;문제&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1650421947072&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;11021번: A+B - 7&quot; data-og-description=&quot;각 테스트 케이스마다 &amp;quot;Case #x: &amp;quot;를 출력한 다음,&amp;nbsp;A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/11021&quot; data-og-url=&quot;https://www.acmicpc.net/problem/11021&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oJH7A/hyN64yIdhe/QV2eKQ6EUCTpEMi5nHDmHk/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/11021&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/11021&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oJH7A/hyN64yIdhe/QV2eKQ6EUCTpEMi5nHDmHk/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;11021번: A+B - 7&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;각 테스트 케이스마다 &quot;Case #x: &quot;를 출력한 다음,&amp;nbsp;A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.&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;1152&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R8wiK/btrzRVjQHtg/JK1irGU2EAUBRtZ0zOl3p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R8wiK/btrzRVjQHtg/JK1irGU2EAUBRtZ0zOl3p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R8wiK/btrzRVjQHtg/JK1irGU2EAUBRtZ0zOl3p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR8wiK%2FbtrzRVjQHtg%2FJK1irGU2EAUBRtZ0zOl3p0%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;1152&quot; height=&quot;875&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;875&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;테스트 케이스의 개수 T를 입력받는다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;다음 줄에서 각각의 정수 A와 B를 입력받는다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;A와 B의 +연산을 하고, 각 테스트 케이스마다 출력 해 준다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1650422225504&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.*
import java.util.*

fun main() : Unit {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    var TC : Int = 1
    
    repeat(br.readLine().toInt()) {
        val token = StringTokenizer(br.readLine())
        val sum = (token.nextToken().toInt() + token.nextToken().toInt())
        
        bw.write(&quot;Case #${TC}: ${sum}\n&quot;)
        TC++
    }    
    bw.flush()
    bw.close()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;* import에서 생략된 부분&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import java.io.BufferedReader&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import java.io.BufferedWriter&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import java.io.InputStreamReader&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import java.io.OutputStreamWriter&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; java.io.* 로 통합&lt;/span&gt;&lt;/b&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: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;import java.util.StringTokenizer&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt; java.util.* 로 통합&lt;/span&gt;&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;생각한 알고리즘대로 Reader인 br 변수와 Writer인 bw 변수를 선언했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그리고 테스트 케이스의 번호를 매겨 줄 TC 변수를 선언하고, 1로 저장 해두었다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;repeat구간에서 첫번째 줄에 있는 TestCase를 받기 위해 br.readLine().toInt()를 사용했고, Int형으로 변환하여 TestCase를 받았으므로, 예제 입력대로 5가 들어간다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그 다음 줄부터는 token 형식으로 연산한다. (공백문자 쪼개서 받기)&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;sum 변수에서는 받아온 token을 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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;한개의 케이스가 끝날 때 마다 지정된 출력 예제의 형식처럼 bw.write를 통해 출력 해 주고, TestCase의 번호를 ++해주어 출력하기 편하도록 바꿔준다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;모든 repeat 문이 종료되면 bw.flush()하여 메모리상에 있던 bw를 출력해주고, bw.close()하여 시스템을 안전하게 종료해준다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EdHR5/btrzQY2uovr/OVTBQ6q2khiHJcDU7WrOlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EdHR5/btrzQY2uovr/OVTBQ6q2khiHJcDU7WrOlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EdHR5/btrzQY2uovr/OVTBQ6q2khiHJcDU7WrOlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEdHR5%2FbtrzQY2uovr%2FOVTBQ6q2khiHJcDU7WrOlk%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;1156&quot; height=&quot;178&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;오타가 한번 나서 컴파일 에러가 떴다. 오타 조심 ㅠㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#알고리즘 #Algorithm #문제풀이&lt;/span&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/45</guid>
      <comments>https://timradder.tistory.com/45#entry45comment</comments>
      <pubDate>Wed, 20 Apr 2022 11:42:01 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2741번 : N찍기  - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/44</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IdsgZ/btrzKJ4y8OV/er4lK3JRsoGml7LvX2MAbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IdsgZ/btrzKJ4y8OV/er4lK3JRsoGml7LvX2MAbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IdsgZ/btrzKJ4y8OV/er4lK3JRsoGml7LvX2MAbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIdsgZ%2FbtrzKJ4y8OV%2Fer4lK3JRsoGml7LvX2MAbk%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;문제 (2741번 : N 찍기 - Kotlin[코틀린])&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1650337953778&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;2741번: N 찍기&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/2741&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2741&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b7XfGO/hyN5BdaF1K/SlNwtuY51OUd8AyjE9Xh71/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/2741&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2741&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b7XfGO/hyN5BdaF1K/SlNwtuY51OUd8AyjE9Xh71/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;2741번: N 찍기&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;825&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOBI3r/btrzLwYNR69/kbkiD1tnS9wIBanyAbSjQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOBI3r/btrzLwYNR69/kbkiD1tnS9wIBanyAbSjQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOBI3r/btrzLwYNR69/kbkiD1tnS9wIBanyAbSjQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOBI3r%2FbtrzLwYNR69%2FkbkiD1tnS9wIBanyAbSjQK%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;1159&quot; height=&quot;825&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;825&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;자연수 N을 입력받고, for 반복문을 이용하여 1부터 N까지 반복 출력한다. 단, 출력 한번당 한번의 개행이 있어야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #9feec3;&quot;&gt;&lt;b&gt;- 1번 풀이 (java.util.Scanner를 이용한 풀이)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650338044721&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() : Unit = with(Scanner(System.`in`)) {
    val N = nextInt()
    
    for(i in 1..N) println(&quot;${i}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Scanner를 import 해준 뒤, N을 nextInt()로 입력받고,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;for 문을 이용하여 1부터 N까지 단순히 출력해 준 코드이다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;코드는 간단하고 접근도 편리하지만, 백준에서의 의도한건지 N의 크기가 0 &amp;lt; N &amp;lt; 100,000 이다 보니 크기가 커질수록 메모리의 부담이 커질 것 같다.&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #9feec3;&quot;&gt;&lt;b&gt;- 2번 풀이 (BufferedReader를 이용한 풀이)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650338165466&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.StringTokenizer
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.io.BufferedReader
import java.io.BufferedWriter

fun main() : Unit {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    for(i in 1..br.readLine().toInt()) bw.write(&quot;${i} \n&quot;)
    
    bw.flush()
    bw.close()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1번의 풀이가 메모리의 부담이 있을 것 같아서 BufferedReader와 BufferedWriter를 활용하여 메모리 부담을 최대한 줄여 보았다. 단순한 출력이기 때문에 풀이는 비슷한것을 볼 수 있다. 단지 사용방법만 다를 뿐이다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLvS8b/btrzOIcUJrF/PscEEnUJ448zSFBR8okjK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLvS8b/btrzOIcUJrF/PscEEnUJ448zSFBR8okjK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLvS8b/btrzOIcUJrF/PscEEnUJ448zSFBR8okjK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLvS8b%2FbtrzOIcUJrF%2FPscEEnUJ448zSFBR8okjK1%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;1151&quot; height=&quot;195&quot; data-origin-width=&quot;1151&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;확실히 메모리 크기가 차이나는 만큼, 풀이 시간이 확연히 차이가 난다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1540ms와 224ms&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;게다가 두 코드 모두 한번에 성공한게 너무 뿌듯하다.. 나날이 발전하는게 보이는구만!!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-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: #ffffff;&quot;&gt;#Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#알고리즘 #Algorithm #문제풀이&lt;/span&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/44</guid>
      <comments>https://timradder.tistory.com/44#entry44comment</comments>
      <pubDate>Tue, 19 Apr 2022 12:19:31 +0900</pubDate>
    </item>
    <item>
      <title>[Android : Kotlin] 안드로이드 콜백과 리스너에 대하여</title>
      <link>https://timradder.tistory.com/43</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7thjj/btrzNA7bJFX/H1WvceeWskcNy9NzO5xTAK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7thjj/btrzNA7bJFX/H1WvceeWskcNy9NzO5xTAK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7thjj/btrzNA7bJFX/H1WvceeWskcNy9NzO5xTAK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/7thjj/btrzNA7bJFX/H1WvceeWskcNy9NzO5xTAK/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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&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;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; &amp;zwj;  Android Call-Back Pattern&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;사전 정의) Callback : 답신 전화 (다시 전화), 회신, 재통보 등..&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그렇다면, &lt;b&gt;Android에서 Callback&lt;/b&gt;의 의미는 무엇을 의미할까?&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;Callback Method&lt;/span&gt;란, 다른 함수에 인수로 전달되는 함수이며, 일종의 이벤트 후에 실행 될 것으로 예상된다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;콜백 메소드의 목적은 다른 클래스에서 일부 작업이 완료된 경우 클래스 Sync/Async에 알리는 것이다. 이는 비동기 작업을 할 때 매우 유용하다. Button을 누르거나 인터넷에서 데이터를 가져온 후 일부 작업을 수행하거나, 컨텐츠를 표시하는 등의 일상적인 작업을 수행하려 한다고 가정한다. 콜백 기능을 통해 버튼을 누르면 알림을 받으므로 이벤트 처리에 사용된다. &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;이 유형의 디자인 패턴은 관찰자 디자인 패턴(Observer Design Pattern)에 사용&lt;/b&gt;&lt;/span&gt;된다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;출처 : &lt;a href=&quot;https://www.geeksforgeeks.org/asynchronous-synchronous-callbacks-java/&quot;&gt;https://www.geeksforgeeks.org/asynchronous-synchronous-callbacks-java/&lt;/a&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;콜백 : 이벤트가 발생하면 특정 메소드를 호출하여 알려준다. (1개)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;일반적인 함수 호출(Call)은 호출하는 함수인 호출자, 호출되는 함수인 피호출자로 구분되고, 호출자가 피호출자를 Call 하여 함수의 기능을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;반면 &lt;b&gt;콜백(Callback)은 호출(call)을 거꾸로(back)하는 것 이다. 즉, 피호출자가 호출자를 부르는 것&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이러한 콜백의 장점은 특정 조건이 만족됐을 때 지정한 기능을 수행하는 경우, 조건을 확인하기 위해 계속해서 조건을 만족하는지 확인하는 과정 없이 조건이 만족됐을 때 기능을 호출하기 때문에 효율적으로 기능을 수행할 수 있다는 것이다. 비동기로 조건에 대한 작업을 수행할 수 있게 되기 때문이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #9feec3;&quot;&gt;&lt;b&gt;=&amp;gt; 대부분 on으로 시작하는 함수들이 콜백인 경우가 많으며, 버튼 클릭 등 이벤트가 발생하면 이에 맞는 작업을 수행하기 위해 코드를 작성한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #f89009;&quot;&gt;리스너 (Listener) : 이벤트가 발생하면 연결된 리스너(Handler)들에게 이벤트를 전달한다. (n개)&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;콜백과 달리 n개를 전달한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;리스너란, &lt;b&gt;특정 이벤트를 처리하는 Interface에 해당하며 이벤트 발생 여부를 기다리다가 이벤트 발생시 해당 이벤트에 맞는 처리를 수행하는 객체&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이벤트 리스너로 예를 들었을 때, 이벤트 리스너란 뷰 클래스 안에 있는 일종의 Interface로 이 안에 하나의 콜백 메소드가 들어있다. 이 메소드는 리스너가 등록된 뷰가 UI안의 항목과 사용자의 상호작용으로 인해 Trigger됐을 때 안드로이드 프레임워크가 호출된다. 이벤트 리스너 인터페이스 안에 포함된 콜백 메소드는 onClick(), onLongClick(), onFocusChange() 등이 있다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;사용자와의 상호작용 이벤트를 예시로 표현하면 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. Focus가 변하는 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. Focus를 맞추면서 하드웨어 키를 누르는 경우 (또는 터치)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;nbsp;=&amp;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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;여기에서 옵저버와 조금 헷갈릴 수 있는데, 리스너와 옵저버는 아래와 같은 차이를 두고있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;nbsp;- Listener (리스너) : 이벤트 발생 시 사용하는 개념&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&amp;nbsp;- Observer (옵저버) : 변경을 감지하기 위해 사용하는 개념&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;=&amp;gt; 추상 메소드인 onTouch()를 받아 실행하며, 이벤트 핸들러라고도 한다. 사용자와 상호작용하는 이벤트 발생 시 안드로이드 프레임워크의 인터페이스를 호출한다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Kotlin</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/43</guid>
      <comments>https://timradder.tistory.com/43#entry43comment</comments>
      <pubDate>Tue, 19 Apr 2022 12:03:57 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 15552번 : 빠른 A+B - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/42</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d57rwX/btrzvKJGX5m/o1vTg3GzVOaTnW7lYxUbr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d57rwX/btrzvKJGX5m/o1vTg3GzVOaTnW7lYxUbr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d57rwX/btrzvKJGX5m/o1vTg3GzVOaTnW7lYxUbr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd57rwX%2FbtrzvKJGX5m%2Fo1vTg3GzVOaTnW7lYxUbr1%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;문제&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1650020580739&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;15552번: 빠른 A+B&quot; data-og-description=&quot;첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/15552&quot; data-og-url=&quot;https://www.acmicpc.net/problem/15552&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vkM4q/hyN3632hfk/IlYHVxEYdnAVTzkL6MiHT0/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/15552&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/15552&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vkM4q/hyN3632hfk/IlYHVxEYdnAVTzkL6MiHT0/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;15552번: 빠른 A+B&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,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;1215&quot; data-origin-height=&quot;1267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnkUJb/btrzvw5Ub9x/ckWRLNtqUTr1WlVvXfHjJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnkUJb/btrzvw5Ub9x/ckWRLNtqUTr1WlVvXfHjJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnkUJb/btrzvw5Ub9x/ckWRLNtqUTr1WlVvXfHjJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnkUJb%2Fbtrzvw5Ub9x%2FckWRLNtqUTr1WlVvXfHjJ1%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;1215&quot; height=&quot;1267&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;1267&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;BufferedReader 와 BufferedWriter를 사용하여 각 입력 값들의 덧셈을 하여 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;풀이&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;먼저 여태까지의 모든 문제 풀이들은 비교적 사용이 간편한 Scanner와 단순한 println 을 사용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그러나, 이런 풀이 방법은 내부적으로 많은 공정이 이루어지기 때문에 심각한 비효율적 검사가 발생하고, 당연히 처리 속도가 굉장히 느려진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;그렇기 때문에 BufferedReader와 BufferedWriter를 사용하여 본 문제를 풀 수 있도록 의도한 것 같다.&lt;/span&gt;&lt;/b&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;- 내가 쓴 풀이&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650021061163&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner

fun main() : Unit = with(Scanner(System`in`)) {
    val T = nextInt()
    
    for(i in 1..T) {
        println(&quot;${nextInt() + nextInt()}&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;위와 같이 실행했을 때, 시간 초과가 나지 않는 InputStream 이었다면 당연히 가능한 코드였을테지만, 출제자의 의도대로 나는 함정에 빠졌고 시간 초과가 발생하였다.&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;&amp;nbsp;- 참고한 풀이&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650021119387&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.StringTokenizer

fun main() : Unit {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    repeat(br.readLine().toInt()) {
        val token = StringTokenizer(br.readLine())
        val sum = (token.nextToken().toInt() + token.nextToken().toInt())
                    .toString()
                // token 입력 받은 후 +연산 하고, 전체를 String으로 변환
        
        bw.write(sum + &quot;\n&quot;)
    }
    bw.flush()
    bw.close()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;한 줄씩 설명 하자면&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;BufferedReader 객체를 생성하여 br 변수에 주소지를 할당 해 준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;마찬가지로 bw 변수에도 BufferedWriter 객체를 할당 해 준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;문제에서 제시한 TestCase의 개수 T를 받기 위해 br.readLine() 메서드를 통해 버퍼에서 입력을 받고, Int 형으로 변환하여 repeat 메서드로 TestCase를 반복할 수 있게 해준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;br.readLine()을 통해 정수 2개를 입력 받고, StringTokenizer에 넘겨주면 공백을 기준으로 Token으로써 String을 split 해 준다. (여기서 사실 정수가 아니라 String으로 입력 받게 되는거라서 .toInt() 해 주어야 함.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2개의 토큰을 받아 각각 Int형으로 변환 후 + 연산을 해 준다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2개의 토큰에 대해 다시 String으로 변환하여 변수 sum 에 대입 해 준다. (이런 과정을 거치는 이유는 뒤에 사용 할 BufferedWriter(bw)의 write() 함수가 Int형 파라미터를 &lt;b&gt;'숫자'&lt;/b&gt;가 아닌 &lt;b&gt;'아스키 코드' 값 (10진수 인코딩 값)&lt;/b&gt;으로 처리하여 정상적인 값이 출력되지 않기 때문이다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;sum 문자열과 개행을 bw.write() 메서드를 통해 Output Buffer에 올려놓는다. &lt;b&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;(여기서 중요한 점은, 콘솔에 출력 되는것이 아니라 버퍼에 올라가만 있는 상태다.)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이렇게 repeat을 돌며 Buffer에 올라간 문자열들을 나중에 한번에 bw.flush() 메서드를 통해 내뿜기 해 준다. (출력) repeat 메서드 안에 flush를 두지 않는 이유는 그때 그때 출력 해주게 되면 백준에서 타임아웃이 뜨기 때문이었다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Buffer는 사용 후 반드시 꼭 close()를 해 주는 습관을 가져야 한다. (문제는 없지만, 안전성을 위해...)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chtbP7/btrzvcNpYtC/z5jx4JYaz0rlp6Op0IIKn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chtbP7/btrzvcNpYtC/z5jx4JYaz0rlp6Op0IIKn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chtbP7/btrzvcNpYtC/z5jx4JYaz0rlp6Op0IIKn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchtbP7%2FbtrzvcNpYtC%2Fz5jx4JYaz0rlp6Op0IIKn0%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;1131&quot; height=&quot;274&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;맨 아래는 1차원적으로 풀었을 때 이고... 몇번의 시도 끝에 어색한 BufferedReader의 사용법을 숙지했다...ㅎ&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;참고한 링크&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1650021537110&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;  [Kotlin]  빠른 입출력(I/O) - BufferedReader, BufferedWriter (예제 : BOJ 15552)&quot; data-og-description=&quot;Java에는 Scanner.next()와 System.out.println()의 기본적인 입출력 함수들이 존재합니다. 마찬가지로, Kotlin에는 readLine()과 println()의 기본적인 입출력 함수들이 존재합니다. (물론, Kotlin에서 스캐너와..&quot; data-og-host=&quot;meoru-tech.tistory.com&quot; data-og-source-url=&quot;https://meoru-tech.tistory.com/57&quot; data-og-url=&quot;https://meoru-tech.tistory.com/57&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bONmlU/hyN2GTqykk/kGyUlnupTuWmmamg3wppiK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bymVf4/hyN2LNYuYG/62VkudmcF3ScP0naRklDTk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://meoru-tech.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://meoru-tech.tistory.com/57&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bONmlU/hyN2GTqykk/kGyUlnupTuWmmamg3wppiK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bymVf4/hyN2LNYuYG/62VkudmcF3ScP0naRklDTk/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;  [Kotlin] 빠른 입출력(I/O) - BufferedReader, BufferedWriter (예제 : BOJ 15552)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Java에는 Scanner.next()와 System.out.println()의 기본적인 입출력 함수들이 존재합니다. 마찬가지로, Kotlin에는 readLine()과 println()의 기본적인 입출력 함수들이 존재합니다. (물론, Kotlin에서 스캐너와..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;meoru-tech.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;figure id=&quot;og_1650021537491&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;JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]&quot; data-og-description=&quot;이 글을 지금 이 시점에 써야 할까 고민을 많이 했다. 사실 자바를 그냥 다룰 줄만 아는 것에 목표를 둔다면 이 글이 무의미할 수도 있다. 그러나 자바에 대해 조금이라도 관심이 있고 더 배우고 &quot; data-og-host=&quot;st-lab.tistory.com&quot; data-og-source-url=&quot;https://st-lab.tistory.com/41&quot; data-og-url=&quot;https://st-lab.tistory.com/41&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZ6lf6/hyN3YroSEs/MPbclsyBuYaOk8o2s03Ns0/img.png?width=800&amp;amp;height=667&amp;amp;face=0_0_800_667,https://scrap.kakaocdn.net/dn/cPFw0G/hyN2F73HTa/Y6RStnKiG5gMFdTJimMmlK/img.png?width=800&amp;amp;height=667&amp;amp;face=0_0_800_667,https://scrap.kakaocdn.net/dn/MWtxi/hyN3TDC9eu/IGuUydtX7Ykt8CDgPJt8Q0/img.png?width=1424&amp;amp;height=614&amp;amp;face=0_0_1424_614&quot;&gt;&lt;a href=&quot;https://st-lab.tistory.com/41&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://st-lab.tistory.com/41&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZ6lf6/hyN3YroSEs/MPbclsyBuYaOk8o2s03Ns0/img.png?width=800&amp;amp;height=667&amp;amp;face=0_0_800_667,https://scrap.kakaocdn.net/dn/cPFw0G/hyN2F73HTa/Y6RStnKiG5gMFdTJimMmlK/img.png?width=800&amp;amp;height=667&amp;amp;face=0_0_800_667,https://scrap.kakaocdn.net/dn/MWtxi/hyN3TDC9eu/IGuUydtX7Ykt8CDgPJt8Q0/img.png?width=1424&amp;amp;height=614&amp;amp;face=0_0_1424_614');&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;JAVA [자바] - 입력 뜯어보기 [Scanner, InputStream, BufferedReader]&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;st-lab.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;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#Kotlin #Android #Develop #코틀린 #안드로이드 #개발 #AppDevelop #앱개발&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#baekjoon #github #백준 #깃헙 #깃허브 #프로그래밍 #앱개발자 #개발자 #취준 #취준생&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #ffffff;&quot;&gt;#알고리즘 #Algorithm #문제풀이&lt;/span&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/42</guid>
      <comments>https://timradder.tistory.com/42#entry42comment</comments>
      <pubDate>Fri, 15 Apr 2022 20:20:12 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2480번 : 주사위 세개 - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/41</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;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcOf6K/btrzvKpemSS/3KQQHnoC7OgiBS8a0kiOyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcOf6K/btrzvKpemSS/3KQQHnoC7OgiBS8a0kiOyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcOf6K/btrzvKpemSS/3KQQHnoC7OgiBS8a0kiOyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcOf6K%2FbtrzvKpemSS%2F3KQQHnoC7OgiBS8a0kiOyk%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;문제&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1650019039543&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;2480번: 주사위 세개&quot; data-og-description=&quot;1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.&amp;nbsp; 같은 눈이 3개가 나오면 10,000원+(같은 눈)&amp;times;1,000원의 상금을 받게 된다.&amp;nbsp; 같은 눈이 2개&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2480&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2480&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YGqDj/hyN2MS1Y7i/fqlfckuBuWxNSZfH1KM3CK/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/2480&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2480&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YGqDj/hyN2MS1Y7i/fqlfckuBuWxNSZfH1KM3CK/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;2480번: 주사위 세개&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.&amp;nbsp; 같은 눈이 3개가 나오면 10,000원+(같은 눈)&amp;times;1,000원의 상금을 받게 된다.&amp;nbsp; 같은 눈이 2개&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;1185&quot; data-origin-height=&quot;1257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nORHV/btrzvb1Xmx3/eup1SImzPwLtIv9CqhmmBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nORHV/btrzvb1Xmx3/eup1SImzPwLtIv9CqhmmBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nORHV/btrzvb1Xmx3/eup1SImzPwLtIv9CqhmmBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnORHV%2Fbtrzvb1Xmx3%2Feup1SImzPwLtIv9CqhmmBk%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;1185&quot; height=&quot;1257&quot; data-origin-width=&quot;1185&quot; data-origin-height=&quot;1257&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 같은 눈이 3개인 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;연산 : 10000 + (같은 눈) * 1000&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. 같은 눈이 2개인 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;연산 : 1000 + (같은 눈) * 100&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. 모든 눈이 다른 경우&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;연산 : (같은 눈) * 100&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;풀이&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 내가 작성한 코드&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650018393024&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.Scanner
import java.util.Random
import java.util.Collections
// import java.util.*

fun main() = with(Scanner(System.`in`)) {
    val a = nextInt()
    val b = nextInt()
    val c = nextInt()
    
    val nums=listOf(a, b, c)
    
    if(a==b &amp;amp;&amp;amp; b==c) {
        println(&quot;${10000+(a*1000)}&quot;)
    } else if (a==b &amp;amp;&amp;amp; b!=c) {
        println(&quot;${1000+(a*100)}&quot;)
    } else if (a!=b &amp;amp;&amp;amp; b==c) {
        println(&quot;${1000+(c*100)}&quot;)
    } else if (a==c &amp;amp;&amp;amp; b!=c) {
        println(&quot;${1000+(c*100)}&quot;)
    } else if (a!=b &amp;amp;&amp;amp; b!=c &amp;amp;&amp;amp; a!=c) {
        println(&quot;${Collections.max(nums)*100}&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그냥 1차원적으로 생각한 풀이이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;주어진 3개 수를 nextInt( )로 받았고, 조건 그대로 if 조건문을 작성하여 조건에 맞게 연산 해 주었을 뿐이다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;맨 아래 조건문에서는 3개 수가 모두 다를 때의 연산인데, 값중에서 가장 큰 값을 뽑아야해서 Kotlin에서도 사용이 가능한 Colletcion을 사용하여 .max( ) 를 뽑아내었다. 중요한건 listOf로 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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;사실 이렇게 안하고 아래처럼 해도 될 듯 하다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1650018568768&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.math.*

fun main() : Unit {
	val nums=listOf(a, b, c)
    
    if(a!=b &amp;amp;&amp;amp; b!=c &amp;amp;&amp;amp; c!=a) {
    	println(&quot;${max(nums)*100}&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;콜렉션을 사용하지 않고 math 클래스에서 가져온 max( )이다. 뭐.. 그냥 편한대로 기억 나는대로 사용하면 될 듯 하다 ㅎㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WrX94/btrzw0R82Ky/F6bMKrehyNBlknK1vkkOV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WrX94/btrzw0R82Ky/F6bMKrehyNBlknK1vkkOV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WrX94/btrzw0R82Ky/F6bMKrehyNBlknK1vkkOV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWrX94%2Fbtrzw0R82Ky%2FF6bMKrehyNBlknK1vkkOV0%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;1140&quot; height=&quot;93&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;이게 무슨일이당가.. 드디어 처음으로 원테이크에 간단하게 끝냈다.. 너무 즐겁구만 ㅎㅎ&lt;/span&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/41</guid>
      <comments>https://timradder.tistory.com/41#entry41comment</comments>
      <pubDate>Fri, 15 Apr 2022 19:39:17 +0900</pubDate>
    </item>
    <item>
      <title>[2022.04.14] 앱 개발 기획하기</title>
      <link>https://timradder.tistory.com/39</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;사실 오늘이 1일차는 아니지만, 뒤늦게 일기를 써본다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그래서 영상을 보자마자 곧 바로 실행에 옮겼다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 요구사항 정의 작성하기 (앱 개발 계획하기)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;965&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JtOec/btrzldlMJMA/HZ2SukZlPpCRcavPKgd2Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JtOec/btrzldlMJMA/HZ2SukZlPpCRcavPKgd2Z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JtOec/btrzldlMJMA/HZ2SukZlPpCRcavPKgd2Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtOec%2FbtrzldlMJMA%2FHZ2SukZlPpCRcavPKgd2Z1%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;738&quot; height=&quot;684&quot; data-origin-width=&quot;1041&quot; data-origin-height=&quot;965&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;주요 기능의 이름과 주요 기능을 상세하게 어떻게 동작시킬건지 적어주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. DB 테이블 작성하기 (ERDCloud 이용)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;973&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg2JdR/btrzpa2qWij/OZlW5tBJYuQk2m4AZhHN20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg2JdR/btrzpa2qWij/OZlW5tBJYuQk2m4AZhHN20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg2JdR/btrzpa2qWij/OZlW5tBJYuQk2m4AZhHN20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg2JdR%2Fbtrzpa2qWij%2FOZlW5tBJYuQk2m4AZhHN20%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;779&quot; height=&quot;973&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;973&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;일단.. 사실 내가 사용 할 DB를 정말 직접 구성 해 보는게 처음이다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;대학교 커리큘럼상 DB 과목을 배우긴 했지만 학교가.. 많이 적극적이거나 교육과정이 잘 편성되어있는 편이 아니었어서 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그런지 단 한번의 실습 조차도 해 본적이 없고, 나도 자연스레 허송세월 보내다가 이제서야 이렇게 필요한 DB를 구성 해 보게 되었다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그래서 공용키나 외래키 등 어떤식으로 구성을 해 주는게 효율적인지, 중복되는 데이터 등은 없는지를 판단하는게 너무 오래걸리고, 무엇보다 Name을 만드는게 정말 정말 어려웠다 ㅋㅋㅋㅋㅋ 변수명 만드는 느낌이었다..&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;물론 위 DB는 아직 완성본이 아니고, 해당 테이블에서 반드시 필요한 데이터는 무엇이 있는지만 먼저 나열식으로 작성한지라, 많이 더러운 상태다.. ㅎㅎ;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. APP IA 만들기 (Information Architecture)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;856&quot; data-origin-height=&quot;992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgcMGb/btrzoOk2vmT/StGVhdCqyEHVMkXQRIVAl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgcMGb/btrzoOk2vmT/StGVhdCqyEHVMkXQRIVAl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgcMGb/btrzoOk2vmT/StGVhdCqyEHVMkXQRIVAl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgcMGb%2FbtrzoOk2vmT%2FStGVhdCqyEHVMkXQRIVAl1%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;856&quot; height=&quot;992&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;말은 IA이긴 한데.. 사실 거의 Menu Tree 수준이다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;요구사항 정의를 만들고 이렇게 IA를 짜고 나니, 이제 앱을 어떻게 만들면 되겠구나! 하고 드디어 조금 보이는 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;(물론 이때는 몰랐다, 앱 UI를 직접 만들어서 MVP아닌 MVP를 만들어 보는게 이렇게 오래 걸릴줄이야..)&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;참고로 해당 IA는 처음에 어떻게 만드는게 좋을지 잘 모르겠어서 만들다 보니 3번이나 갈아엎었다.. ㅠㅠ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. APP UI 배치 만들기 (Figma 활용)&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;951&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H9EJe/btrzlekGA6O/JutW0uQIlp6DZlscqbzMOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H9EJe/btrzlekGA6O/JutW0uQIlp6DZlscqbzMOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H9EJe/btrzlekGA6O/JutW0uQIlp6DZlscqbzMOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH9EJe%2FbtrzlekGA6O%2FJutW0uQIlp6DZlscqbzMOK%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;673&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;951&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;워낙 성격이 꼼꼼한 편이고, 아직 Kotlin을 이용한 앱 개발 실력이 형편이 없다고 느껴서 그런가..&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;일단 MVP 모델을 빨리 만들어보고 싶은데.. 당장 MVP를 만드는 것 보다 Figma로 UI 먼저 만들어 보는게 더 간단할 것 같아서 한번.. 노력 해 보는 중이다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;그리고 Figma 로 UI를 완벽하게 만들어 두면 나중에 앱 개발 하면서도 헷갈릴 부분이 많이 없을 것 같아서&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;나름대로 더 신경쓰고 있는것도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; background-color: #9feec3;&quot;&gt;&lt;b&gt;얼른 최소한 한개의 포트폴리오를 완성하기 위해 열심히 달려야겠따..&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>Daily IT &amp;amp; 성장 일기</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/39</guid>
      <comments>https://timradder.tistory.com/39#entry39comment</comments>
      <pubDate>Thu, 14 Apr 2022 18:22:43 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2884번 : 알람 시계 - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/38</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/babdqc/btry65Ugs2v/LKhI6Svcwf4Ah1PWBc8Kwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/babdqc/btry65Ugs2v/LKhI6Svcwf4Ah1PWBc8Kwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/babdqc/btry65Ugs2v/LKhI6Svcwf4Ah1PWBc8Kwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbabdqc%2Fbtry65Ugs2v%2FLKhI6Svcwf4Ah1PWBc8Kwk%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문제&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;1197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV63Dt/btry1OGy1KX/dUwXaDkwJU0Q68FFKxhF6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV63Dt/btry1OGy1KX/dUwXaDkwJU0Q68FFKxhF6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV63Dt/btry1OGy1KX/dUwXaDkwJU0Q68FFKxhF6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV63Dt%2Fbtry1OGy1KX%2FdUwXaDkwJU0Q68FFKxhF6K%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;1164&quot; height=&quot;1197&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;1197&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;1164&quot; data-origin-height=&quot;151&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAe7CB/btryZJdEkHP/khMkMjmlOEgMf6BdiNNM4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAe7CB/btryZJdEkHP/khMkMjmlOEgMf6BdiNNM4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAe7CB/btryZJdEkHP/khMkMjmlOEgMf6BdiNNM4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAe7CB%2FbtryZJdEkHP%2FkhMkMjmlOEgMf6BdiNNM4k%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;1164&quot; height=&quot;151&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;151&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;알고리즘&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 상근이가 설정한 알람시간을 45분 앞당겨 출력한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. Scanner로부터 입력받은 Minute가 45보다 작으면 Hour - 1을 하고, Minute는 60-(45-minute)하여 계산하라.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;3. Minute가 45보다 크다면 그대로 Minute-45를 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;4. Hour가 0보다 작다면 H=23하여 23시로 설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;풀이&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;- 1번 방법 (가장 일반적인 방법)&lt;/b&gt;&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_1649657343512&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() : Unit = with(Scanner(System.`in`)) {
    var H = nextInt()
    var M = nextInt()

    if(M&amp;lt;45) {
        H--
        M = 60-(45-M)
        
        if(H&amp;lt;0) {
            H=23
        }
        println(&quot;${H} ${M}&quot;)
    } else {
        println(&quot;${H} ${M}&quot;)
    }
    
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;가장 보편적으로 사용 했을듯한 단순한 방법으로, 조건문 if else만을 사용하여 나타내었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;계산하기 편하도록 M을 정수에서도 양수 범위 내로 표현하려고 노력하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;M을 계산하고, H가 -- 될 경우 H는 23시로 설정하였고, 그대로 출력만 해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;&lt;b&gt;- 2번 방법&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649657490849&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.time.LocalTime
import java.util.*

fun main() = with(Scanner(System.`in`)) {
	val H = nextInt()
    val M = nextInt()
    
    val time = Local.Time.of(H, M).minusMinutes(45)
    
    println(&quot;${time.H} ${time.M}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;시간(시, 분, 초)를 다루기에 아주 유용한 &lt;span style=&quot;color: #ee2323;&quot;&gt;JAVA의 LocalTime 클래스를 사용한 방법&lt;/span&gt;이다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;클래스를 사용하기 위해 객체로 time을 생성 해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;시간은 입력받은 H와 M을 그대로 넣어 주었고, LocalTime 클래스의 메소드인 minusMinutes를 이용하여 -45분 해 주었다. (역으로 plusMinutes 또는 minusHours, plusHours 등도 가능.)&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;계산된 값을 println으로 시간과 분을 Split하여 출력하였다.&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;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;출처 : &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #006dd7;&quot; href=&quot;https://shrimp-burger.tistory.com/123&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://shrimp-burger.tistory.com/123&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;제출 결과 및 정리&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xxZgr/btry6DDOaGz/76x5sXRDzwQta38qnJGmgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xxZgr/btry6DDOaGz/76x5sXRDzwQta38qnJGmgk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xxZgr/btry6DDOaGz/76x5sXRDzwQta38qnJGmgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxxZgr%2Fbtry6DDOaGz%2F76x5sXRDzwQta38qnJGmgk%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;1143&quot; height=&quot;355&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처참하다..ㅎ&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/38</guid>
      <comments>https://timradder.tistory.com/38#entry38comment</comments>
      <pubDate>Mon, 11 Apr 2022 15:16:44 +0900</pubDate>
    </item>
    <item>
      <title>[백준] 2588번 : 곱셈 - Kotlin [코틀린]</title>
      <link>https://timradder.tistory.com/37</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8suM5/btryzZVPedN/SXVPoq06l8mbNIkKCcE2f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8suM5/btryzZVPedN/SXVPoq06l8mbNIkKCcE2f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8suM5/btryzZVPedN/SXVPoq06l8mbNIkKCcE2f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8suM5%2FbtryzZVPedN%2FSXVPoq06l8mbNIkKCcE2f1%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;524&quot; height=&quot;120&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;120&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;figure id=&quot;og_1649230916535&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;2588번: 곱셈&quot; data-og-description=&quot;첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.&quot; data-og-host=&quot;www.acmicpc.net&quot; data-og-source-url=&quot;https://www.acmicpc.net/problem/2588&quot; data-og-url=&quot;https://www.acmicpc.net/problem/2588&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JQb3W/hyNXjvNxke/1fBxO1TuLi17jlxPVVte0k/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/2588&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.acmicpc.net/problem/2588&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JQb3W/hyNXjvNxke/1fBxO1TuLi17jlxPVVte0k/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;2588번: 곱셈&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;문제&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;893&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMoKsM/btryDRB07cI/NKBlhpShKsA6sKCgE0yRq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMoKsM/btryDRB07cI/NKBlhpShKsA6sKCgE0yRq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMoKsM/btryDRB07cI/NKBlhpShKsA6sKCgE0yRq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMoKsM%2FbtryDRB07cI%2FNKBlhpShKsA6sKCgE0yRq1%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;1157&quot; height=&quot;893&quot; data-origin-width=&quot;1157&quot; data-origin-height=&quot;893&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;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;알고리즘&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;(1)과 (2)의 곱셈을 진행하는 문제이고, (3), (4), (5)는 각각 (2)의 자릿수에 따른 곱셈 과정이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;(3)은 472*5의 과정이고, (4)는 472*5, (5)는 472*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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;1. 수학적으로 접근하여 각각의 자리수를 나누어 출력하고, 맨 마지막 결과는 (1)과 (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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;2. (2)를 문자열로 받아서 JAVA에서의 charAt( )과 같이 한문자식 .toInt( ) 로 변환하여 (1)과 곱해서 출력하는 방법이 있는 것 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;풀이&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 1번 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1649231431668&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;) : Unit = with(Scanner(System.`in`)) {
    val a = nextInt()
    val b = nextInt()
    
    val b_1 = (b%10)
    val b_10 = ((b%100)/10)
    val b_100 = (b/100)
    
    println(&quot;${b_1*a}&quot;)
    println(&quot;${b_10*a}&quot;)
    println(&quot;${b_100*a}&quot;)
    println(&quot;${a*b}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;대부분 흔히 사용하는 풀이 방법이었지 싶다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Scanner를 이용하여 a와 b를 Int 형식으로 받아주고, b에서 파생된 각각의 변수에 b의 자리수를 나눠 줄 값들을 저장한다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;b%10 =&amp;gt; 나머지로 1의자리수가 생성 =&amp;gt; 5 출력&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;((b%100)/10) =&amp;gt; 나머지의 몫으로 10의 자리수가 생성 =&amp;gt; 8 출력&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;(b/100) =&amp;gt; 몫으로 100의 자리수가 생성 =&amp;gt; 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;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;이렇게 계산하여 간단히 출력만 해 주었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;- 2번 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;Char 형식의 문자를 Int형으로 변환할 때 생기는 문제에 대하여 다루었고, 풀이 방법을 알게되었다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://timradder.tistory.com/36&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;바로 ASCII 코드와 겹치는 경우, 변환하였을 때 우리가 기대한 Int 값이 아닌 ASCII에 해당하는 값이 출력된다는 것이다.&lt;/a&gt;&lt;/b&gt;&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_1649231670264&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(args : Array&amp;lt;String&amp;gt;) : Unit {
    val a = readLine()!!.toInt()
    val b = readLine()!!

    println(&quot;${a*Character.getNumericValue(b[2])}&quot;)
    println(&quot;${a*Character.getNumericValue(b[1])}&quot;)
    println(&quot;${a*Character.getNumericValue(b[0])}&quot;)
    println(&quot;${a*b.toInt()}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;a에는 (1)의 값이, b에는 (2)의 값이 들어갈 수 있도록 readLine( ) 으로 불러와 주었다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;a의 경우 바로 .toInt( ) 로 변환하였고, ASCII코드에 해당하는 값이 없었다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;b의 경우에는 한 문자씩 .toInt( ) 로 읽어와야 했었기 때문에 각각의 값이 기대한 값과 다르게 ASCII 문자에 해당하는 값이 출력되어버렸다.&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;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그에 대한 해결 방법으로 간단하게 위와 같이&lt;/span&gt; &lt;a href=&quot;https://blog.jdriven.com/2019/10/converting-char-to-int-in-kotlin/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;Character.getNumericValue( ) 함수&lt;/b&gt;&lt;/a&gt;를&lt;span style=&quot;color: #000000;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;제출 결과 및 정리&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FArtM/btryEt1ZF2a/mc46oZNIk2Pa1dPPFuyJT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FArtM/btryEt1ZF2a/mc46oZNIk2Pa1dPPFuyJT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FArtM/btryEt1ZF2a/mc46oZNIk2Pa1dPPFuyJT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFArtM%2FbtryEt1ZF2a%2Fmc46oZNIk2Pa1dPPFuyJT0%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;1123&quot; height=&quot;330&quot; data-origin-width=&quot;1123&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000;&quot;&gt;지금 시점이 아직 백준 알고리즘을 시작한지 얼마 되지 않은 코린이라서 참.. 한 문제 푸는데도 컴파일 에러, 오답이 많이 나오는 것 같은데.. 에러 없이도 완벽한 클린코드를 작성할 수 있는 날이 되고싶다 ㅠㅠ&lt;/span&gt;&lt;/p&gt;</description>
      <category>코딩 (독학)/★ Algorithm</category>
      <author>짱득이</author>
      <guid isPermaLink="true">https://timradder.tistory.com/37</guid>
      <comments>https://timradder.tistory.com/37#entry37comment</comments>
      <pubDate>Wed, 6 Apr 2022 17:03:57 +0900</pubDate>
    </item>
  </channel>
</rss>