<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>XD Diary</title>
    <link>https://xd-jaewon.tistory.com/</link>
    <description>대학생활의 이모저모를 기록하는 공간</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 14:16:16 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>마미블루</managingEditor>
    <image>
      <title>XD Diary</title>
      <url>https://tistory1.daumcdn.net/tistory/3199816/attach/cc89a5c2645b4f8ba26c7a9e138f253b</url>
      <link>https://xd-jaewon.tistory.com</link>
    </image>
    <item>
      <title>[부스트코스|코틀린] 3단원 5장. 프로그램의 흐름을 제어해 보자 (2)</title>
      <link>https://xd-jaewon.tistory.com/216</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dol5KB/btqW8G5pfjm/Bxk42ZkhhNrkhNJ1AECWok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dol5KB/btqW8G5pfjm/Bxk42ZkhhNrkhNJ1AECWok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dol5KB/btqW8G5pfjm/Bxk42ZkhhNrkhNJ1AECWok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdol5KB%2FbtqW8G5pfjm%2FBxk42ZkhhNrkhNJ1AECWok%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 &lt;u&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/u&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;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-3. 흐름의 중단과 반환 (1)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&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;nbsp;할&amp;nbsp;필요가&amp;nbsp;있습니다.&amp;nbsp;이때&amp;nbsp;return,&amp;nbsp;break,&amp;nbsp;continue문을&amp;nbsp;사용하게&amp;nbsp;되는데&amp;nbsp;하나씩&amp;nbsp;자세히&amp;nbsp;살펴보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;return&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;break&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;라벨 표기 (label@)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 흐름 제어 관련 요약&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;흐름 제어문&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- return : 함수에서 결괏값을 반환하거나 지정된 라벨로 이동&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- break : for이나 while의 조건식에 상관없이 반복문을 끝냄&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- continue : for이나 while의 반복문의 본문을 모두 수행하지 않고 다시 조건으로 넘어감&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;예외 처리문&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- try { ... } catch { ... } : try 블록의 본문을 수행하는 도중 예외가 발생하면 catch 블록의 본문을 실행&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- try { ... } catch { ... } finally { ... } : 예외가 발생해도 finally 블록 본문은 항상 실행&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) return의 사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;보통 return문은 함수 등에서 값을 반환하는데 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613360593476&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun add(a : Int, b: Int): Int {
     return a+b
     println(&quot;이 코드는 실행되지 않습니다.&quot;) //여기에 도달하지 않음
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1613360678532&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Unit을 명시적으로 반환
fun hello(name : String): Unit {
     println(name)
     return Unit
}

// Unit 이름을 생략한 반환
fun hello(name : String): Unit {
     println(name)
     return
}

// return문 자체를 생략
fun hello(name : String): Unit {
     println(name)
     return Unit
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;하지만 코드의 흐름을 중단하고 함수등을 빠져 나가기 위해서도 return문을 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 람다식에서의 return&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613360927519&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {

    retFunc()
}

inline fun inlineLambda(a: Int, b: Int, out: (Int, Int) -&amp;gt; Unit) {
    out(a, b)
}

fun retFunc() {
    println(&quot;start of retFunc&quot;) // 1
    inlineLambda(13, 3) { a, b -&amp;gt; // 2
        val result = a + b
        if(result &amp;gt; 10) return // 3 : 10보다 크면 이 함수를 빠져 나감
        println(&quot;result: $result&quot;) // 4 : 10보다 크면 이 문장에 도달하지 못함
    }
    println(&quot;end of retFunc&quot;) // 5
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4) 라벨을 사용한 리턴&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;인라인(&lt;span style=&quot;border: none;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;inline&lt;/span&gt;&lt;/span&gt;)으로 선언되지 않은 람다식 함수에서&amp;nbsp;&lt;span style=&quot;border: none;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;return&lt;/span&gt;&lt;/span&gt;을 사용할 때는 그냥 사용할 수 없다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;return@label&lt;/span&gt;&lt;/span&gt;과 같이 라벨(&lt;span style=&quot;border: none;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;label&lt;/span&gt;&lt;/span&gt;)&amp;nbsp;표기와 함께 사용해야 하는데,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;라벨이란 코드에서 특정한 위치를 임의로 표시한 것으로,&amp;nbsp;&lt;span style=&quot;border: none;&quot;&gt;&lt;span style=&quot;border: none;&quot;&gt;@&lt;/span&gt;&lt;/span&gt;&amp;nbsp;기호를 뒤에 붙이는 것으로 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613360980604&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;람다식 함수명 라벨이름@ {
    ...
    return@라벨이름
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1613361157150&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {

    retFunc()
}

inline fun inlineLambda(a: Int, b: Int, out: (Int, Int) -&amp;gt; Unit) {
    out(a, b)
}

fun retFunc() {
    println(&quot;start of retFunc&quot;) 
    inlineLambda(a: 12, b: 3) lit@{ a, b 
        val result = a + b
        if(result &amp;gt; 10) return@lit 
        println(&quot;result: $result&quot;) 
    }
    println(&quot;end of retFunc&quot;) 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-3. 흐름의 중단과 반환 (2)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;계속&amp;nbsp;이어서&amp;nbsp;암묵적&amp;nbsp;라벨&amp;nbsp;표현방법이나&amp;nbsp;익명함수에서&amp;nbsp;반환&amp;nbsp;하는&amp;nbsp;방법과&amp;nbsp;break,&amp;nbsp;continue&amp;nbsp;대해서&amp;nbsp;살펴봅니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;암묵적 라벨&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;익명 함수를 사용한 반환&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;break&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;continue&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 암묵적 라벨&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식 표현식 블록에 직접 라벨을 쓰는 것이 아닌 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식 함수의 명칭을 그대로 라벨처럼 사용할 수 있는데 이를 암묵적 라벨이라고 부른다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613361317037&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
fun retFunc() {
    println(&quot;start of retFunc&quot;)
    inlineLambda(13, 3) { a, b -&amp;gt; 
        val result = a + b
        if(result &amp;gt; 10) return@inlineLambda 
        println(&quot;result: $result&quot;)
    } 
    println(&quot;end of retFunc&quot;) 
}
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 코드처럼 람다식 함수의 이름을 직접 라벨처럼 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;결과는 라벨을 사용한 예제와 동일하게 inlineLambda()로 빠져나간다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 익명함수를 사용한 반환&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;물론 람다식 함수 표현식 대신에 익명 함수를 넣을 수도 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613361452782&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun retFunc() {
    println(&quot;start of retFunc&quot;)
    inlineLambda(13, 3, fun(a, b) {
        val result = a + b
        if(result &amp;gt; 10) return 
        println(&quot;result: $result&quot;)
    )} //inlineLambda()함수의 끝 
    println(&quot;end of retFunc&quot;) 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이때는 익명함수 내부에서 라벨을 사용하지 않고 단순히 return만 사용하더라도 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;비지역 반환이 일어나지 않기에 일반 함수의 반환처럼 편하게 사용할 수 있다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 람다식 함수 vs 익명 함수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 람다식 방법&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613361609099&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
    val getMessage = lambda@ { num: Int -&amp;gt;
        if(num !in 1..100){
            return@lambda &quot;Error&quot; // 레이블을 통한 반환
        }
        &quot;Sucess&quot; //마지막 식이 반환
    }
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 익명함수 방법&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613361663144&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
    val getMessage = fun(num:Int): String{
        if(num !in 1..100){
            return &quot;Error&quot; 
        }
        return &quot;Sucess&quot; 
    }
...

val result = getMessage(99)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4) break와 continue&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btnA4O/btqW8G5ULuM/YBUkEtKN0EH8ciMKgSX350/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btnA4O/btqW8G5ULuM/YBUkEtKN0EH8ciMKgSX350/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/59984&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btnA4O/btqW8G5ULuM/YBUkEtKN0EH8ciMKgSX350/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtnA4O%2FbtqW8G5ULuM%2FYBUkEtKN0EH8ciMKgSX350%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/59984&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613361971303&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun maun() {
    for(i in 1..5) {
        if ( i == 3 ) break
        print(i)
    }
    println() //개행 문자
    println(&quot;outside&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;12&lt;br /&gt;outside&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1613361997722&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun maun() {
    for(i in 1..5) {
        if ( i == 3 ) continue
        print(i)
    }
    println() //개행 문자
    println(&quot;outside&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1245&lt;br /&gt;outside&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;5) break와 라벨 함께 사용하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;break와 함께 라벨을 사용하여 중단되는 위치를 바꿀 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613362048835&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun labelBreak() {
    println(&quot;labelBreak&quot;)
    for(i in 1..5) {
        second@ for (j in 1..5) {
            if (j == 3) break
            println(&quot;i:$i, j:$j&quot;)
        }
        println(&quot;after for j&quot;)
    }
    println(&quot;after for i&quot;)
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;단순히 break를 사용한 경우 중첩되어 있는 두 번째 for문이 중단되어 첫 번째 for문의 조건으로 돌아간다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613362078605&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun labelBreak() {
    println(&quot;labelBreak&quot;)
    first@ for(i in 1..5) {
        second@ for (j in 1..5) {
            if (j == 3) break@first
            println(&quot;i:$i, j:$j&quot;)
        }
        println(&quot;after for j&quot;)
    }
    println(&quot;after for i&quot;)
} &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;break@first와 같이 라벨을 사용할 때는 첫 번째 for문 first@ for의 블록 자체를 빠져나가게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-4. 예외가 발생했어요!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&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;nbsp;예외&amp;nbsp;처리&amp;nbsp;블록을&amp;nbsp;구성해야&amp;nbsp;합니다.&amp;nbsp;한번&amp;nbsp;알아봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;try~catch&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;finally&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Exception&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;throw Exception&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 예외란&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;프로그램 코드를 작성하다 보면 해당 코드가 제대로 작동하지 못하고 중단되는 현상이 발생할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이것을 예외라 하며, 대부분의 에러는 코드를 작성하는 도중 컴파일러가 캐치할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;하지만 메모리 부족이나 파일이 손상되는 등 실행 도중의 잠재적인 오류까지 검사할 수 없기 때문에&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;비정상적으로 프로그램이 종료될 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;운영체제의 문제 (잘못된 시스템 호출의 문제)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;입력값의 문제 (존재하지 않는 파일, 숫자 입력란에 문자 입력 등)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;받아들일 수 있는 연산 (0으로 나누기 등)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;메모리의 할당 실패 및 부족&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;컴퓨터 기계 자체의 문제 (전원 문제, 망가진 기억 장치 등)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 예외구문 사용법&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613363822145&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;try {
    예외 발생 가능성 있는 문장
} catch (e: 예외처리 클래스명) {
    예외를 처리하기 위한 문장
} finally {
   반드시 실행되어야 하는 문장
}
보통 try블록 내에&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;보통 try블록 내에 예외를 발생할 수 있는 코드를 작성하고 catch 블록에서 인자는 예외를 위한 클래스를 작성한다다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;만일 일치하는 catch 예외가 없어 처리할 수 없으면 프로그램이 중단된다. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;finally 블록은 try블록의 예외 발생 여부에 상관없이 반드시 처리되어야 하는 문장을 작성한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613364015797&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; fun main() {
     val a = 6
     val b = 0
     va c: Int
     
     try {
         c = a / b
     } catch (e: Exception) {
         println(&quot;Exception&quot;)
     } finally {
         println(&quot;Finally&quot;)
     }
}&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;Exception&lt;br /&gt;Finally&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 특정 예외처리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;산술 연산에 대한 예외를 따로 특정해서 잡을때&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613364101777&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
} catch (e: ArithemeticException){
    println(&quot;Exception in handled. ${e.message}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;
&lt;p&gt;Exception in handled. / by zero&lt;/p&gt;
&lt;p&gt;! finally 블록은 반드시 항상 실행됨&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;스택의 추적&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613364190649&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
} catch (e: Exception){
    e.printStackTrace()
}
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4) 예외 발생시키기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;예외를 의도적으로 발생 시키기 위해서 throw 키워드를 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613364228674&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;throw Exception(message: String)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1613364351718&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {

    val amount = 600
    
    try{
        amout -= 100
        checkAmount(amount)
    } catch(e : Exception) {
        println(e.message)
    }
    println(&quot;amount: $amount&quot;)
}

fun checkAmount(amount: Int){
    if(amount &amp;lt; 1000)
        thorw Exception(&quot;잔고가 $amount 으로 1000 이하입니다.&quot;)

}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/216</guid>
      <comments>https://xd-jaewon.tistory.com/216#entry216comment</comments>
      <pubDate>Tue, 23 Feb 2021 14:46:02 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 3단원 5장. 프로그램의 흐름을 제어해 보자 (1)</title>
      <link>https://xd-jaewon.tistory.com/215</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JJpmQ/btqW4icmXZ8/TKfKKeUtfVmsdYMREhHTw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JJpmQ/btqW4icmXZ8/TKfKKeUtfVmsdYMREhHTw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JJpmQ/btqW4icmXZ8/TKfKKeUtfVmsdYMREhHTw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJJpmQ%2FbtqW4icmXZ8%2FTKfKKeUtfVmsdYMREhHTw0%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (2).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 &lt;u&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/u&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;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-1&amp;nbsp;조건문을&amp;nbsp;통한&amp;nbsp;분기&amp;nbsp;(1)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;프로그램의 흐름을 제어하기 위해 가장 기본적으로 조건에 따라 분기할 수 있도록 하는 것입니다. 여기서는 if문을 활용해 다양한 분기 방법을 학습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;if ~ else&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;else if&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;in 연산자 .. 범위 연산자&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) if문과 if~else문&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613281916029&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (조건식) { 
    수행할 문장 // 조건식이 참인 경우에만 수행
} else { 
    수행할 문장 // 조건식이 거짓인 경우에 수행
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;if는 주어진 조건에 따라서 프로그램이 코드를 선택하여 실행할 수 있는 분기를 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282087234&quot; class=&quot;kotlin&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val a = 12
    val b = 7
    
    //블록과 함께 사용
    val max = if ( a &amp;gt; b ){
        printlan(&quot;a 선택&quot;)
        a // 마지막 식인 a가 반환되어 max에 할당
    }
    else {
        println(&quot;b 선택&quot;)
        b
    }
    println(max)
 }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;수행할 문장이 한 줄로 간단할 경우 아래와 같이 표현할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613281959565&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val max = if (a &amp;gt; b) a else b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) else if 다중 조건&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여러 가지 조건을 사용할 경우 else if문을 중첩하여 사용할 수 있다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282128734&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val number = 0 
val result = if (number &amp;gt; 0) 
        &quot;양수 값&quot; 
    else if (number &amp;lt; 0) 
        &quot;음수 값&quot; 
    else 
        &quot;0&quot; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) in 연산자와 범위 연산자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;비교연산자와 와 논리 연산자의 복합으로 조건식을 간략하게 만들 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 비교 연산자 : &amp;gt;= , &amp;lt;=&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 논리 연산자 : &amp;amp;&amp;amp;, ||, !&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;또한 코틀린에서는 포함 여부 확인을 위한 in 연산자와 두개의 점 으로 된 범위 연산자를 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;범위 연산자&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 변수명 in 시작값..마지막값&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282389500&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
     println(&quot;Enter this score: &quot;)
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     if(score &amp;gt;= 90.0) {
     	grade = 'A'
     } else if (score in 80.0..89.9){
     	grade = 'B'
     } else if (score in 70.0..79.9){
     	grade = 'C'
     }
     println(&quot;score: $score, grade: $grade&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-1&amp;nbsp;조건문을&amp;nbsp;통한&amp;nbsp;분기&amp;nbsp;(2)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;코틀린에서 제공하는 when은 기존의 여러 언어가 제공하던 switch~case문을 대체하면서 조건에서 더 유연한 처리가 가능합니다. 한번 알아봅시다!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;when (인자)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;when&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) when문을 사용한 다양한 조건 처리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;주어진 인자에 대해 다양한 조건을 만들거나 &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;인자 없이 여러개의 조건을 구성할 수도 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282440327&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when (인자) {
  인자에 일치하는 값 혹은 표현식 -&amp;gt; 수행할 문장
  인자에 일치하는 범위 -&amp;gt; 수행할 문장
  ...
  else -&amp;gt; 문장
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;화살표(-&amp;gt;) 왼쪽에는 일치하는 값, 표현식, 범위를 사용할 수 있고 &lt;/span&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;오른쪽에는 수행할 문장을 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt; 조건과 일치하는 값이 없으면 else문 다음에 작성한 문장을 실행한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282482358&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when (x) {
    1 -&amp;gt; print(&quot;x == 1&quot;)
    2 -&amp;gt; print(&quot;x == 2&quot;)
    else -&amp;gt; { // 블록 구문 사용 가능
        print(&quot;x는 1, 2가 아닙니다.&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;화살표&amp;nbsp;오른쪽에&amp;nbsp;사용한&amp;nbsp;수행&amp;nbsp;문장에서는&amp;nbsp;한줄인&amp;nbsp;경우에는&amp;nbsp;중괄호가&amp;nbsp;필요하지&amp;nbsp;않으며&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;또 switch~case에서 사용하던 break문을 사용하지 않아도 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) when과 일치되는 여러조건과 함수사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 일치되는 여러 조건&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282562666&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when (x) {
	0, 1 -&amp;gt; println(&quot;x == 0 or x == 1&quot;)
	else -&amp;gt; println(&quot;기타&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 함수의 반환값 아용하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282609419&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when (x) {
	parseInt(s) -&amp;gt; println(&quot;일치함!&quot;)
	else -&amp;gt; println(&quot;기타&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) when과 in, is 연산자 사용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- in 연산자와 범위 지정자 사용&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282700959&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when (x){
    in 1..10 -&amp;gt; println(&quot;x는 1 이상 10 이하입니다.&quot;)
    !in 10..20 -&amp;gt; println(&quot;x는 10 이상 20 이하의 범위에 포함되지 않습니다.&quot;)
    else -&amp;gt; print(&quot;x는 어떤 범위에도 없습니다.&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- is 키워드 함께 사용하기&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613282743435&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val str = &quot;안녕하세요.&quot;
val result = when (str){
    is String -&amp;gt; &quot;문자열입니다.&quot;
    else -&amp;gt; false
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613282905861&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
     println(&quot;Enter this score: &quot;)
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     when(score) {
     	in 90.0..100.0 -&amp;gt; grade = 'A'
        in 80.0..89.9 -&amp;gt; grade = 'B'
        in 70.0..79.9 -&amp;gt; grade = 'C'
        else -&amp;gt; grade = 'F'
     }
     
     println(&quot;score: $score, grade: $grade&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4) 인자가 없는 when&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;when에 인자가 주어지지 않으면 else if처럼 각각의 조건을 실행할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613282783716&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;when {
  조건[혹은 표현식] -&amp;gt; 실행문
  ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1613282961415&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
     println(&quot;Enter this score: &quot;)
     val score = readLine()!!.toDouble()
     var grade: Char = 'F'
     
     //인수 없는 when의 사용
     when(score) {
     	score &amp;gt;= 90.0 -&amp;gt; grade = 'A'
        score in 80.0..89.9 -&amp;gt; grade = 'B'
        score in 70.0..79.9 -&amp;gt; grade = 'C'
        score &amp;lt; 70.0 -&amp;gt; grade = 'F'
     }
     
     println(&quot;score: $score, grade: $grade&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#5-2 반복문으로 여러번!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;반복문은 반복문 안에 있는 코드를 반복하여 실행할 수 있는 명령문입니다. 기본적으로 for, while, do ~ while문으로 반복을 처리합니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;for&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;while&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;do { ... } while ( )&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;in 및 범위 연산자&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;상행 및 하행 (DownTo)&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Step&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1) for문의 선언 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;for문은 조건식에 따라 반복하게 된다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;조건식은 대부분 in연산자와 컬렉션, 범위 연산자를 사용해 반복 조건을 구성되는데, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;범위 연산을 이용할 경우 기본적으로 상행 형태로 증가하고 감소하기 위해서는 downTo를 사용한다.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;! 컬렉션이란 코틀린이 사용하는 Array, List, Map 등의 여러 데이터를 다루는 요소를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613283022567&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (요소 변수 in 컬렉션 혹은 범위) { 반복할 본문 }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;반복할 본문이 하나 뿐이 없다면 중괄호는 생략할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613283043047&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (x in 1..5) { // 코틀린의 in과 범위 지정을 활용한 루프
  println(x) // 본문
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613283100372&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val sum = 0
    
    for (x in 1..10) sum += x
    
    println(&quot;sum = $sum&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;2) 하행, 상행 및 다양한 반복 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1에서 10으로 값이 증가할때는 기본값이면서 하나씩 증가하며 반복되었는데,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이와 같은 반복을 상행 반복이라고 칭한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;반대의 경우는 하행 반복이라고 부르고 downTo와 같은 키워드를 사용해 구성할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613283144998&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (i in 5 downTo 1) print(i)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드를 실행하면 5, 4, 3, 2, 1과 같이 숫자가 하행으로 반복하면서 변수 i의 값을 출력한다.&lt;/p&gt;
&lt;p&gt;출력하고자 하는 숫자의 단계가 1이 아닌 다른 수를 사용하고자 하는 경우에는 step을 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613283200886&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;for (i in 1..5 step 2) print(i)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613283269764&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val total = 0
    
    for (x in0..99 step2) { //짝수합 
    	total += x
    }
    
    println(&quot;total = $total&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3) whie문 선언 방법&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;while문은&amp;nbsp;조건식이&amp;nbsp;true을&amp;nbsp;만족하는&amp;nbsp;경우&amp;nbsp;while의&amp;nbsp;블록을&amp;nbsp;무한히&amp;nbsp;반복된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;조건식이 false가 되면 실행문이 중단되어 while 루프(반복)를 빠져 나간다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;만약 조건식이 false가 되지 않는다면, 반복이 끝나지 않고 무한 Loop에 빠지기 때문에 유의하여야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613283322710&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while (조건식) { // 조건식이 true인 동안 본문의 무한 반복
    본문
    ....
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613283408889&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){

    println(&quot;Enter the number: &quot;)
    var number = readLine()!!.toInt()
    var factorial: Long = 1
    
    while(number &amp;gt; 0){
        factorial *= number
        --number
    }
    
    pritnln(&quot;Factorial: $factorial&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4) do ~ while 문&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;앞에서 배운 while문에서는 조건식을 먼저 검사한 후 반복을 진행하기 때문에,&lt;/p&gt;
&lt;p&gt;처음부터 조건식이 false인 경우 작업이 한 번도 실행되지 않는다.&lt;/p&gt;
&lt;p&gt;그러나 do~while문의 경우 일단 do 블록에 작성한 본문을 한 번은 실행한 다음&lt;/p&gt;
&lt;p&gt;마지막에 조건식을 검사해서 true가 나오면 작업을 반복한다.&lt;/p&gt;
&lt;pre id=&quot;code_1613283447443&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;do {
  본문
} while (조건식)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1613283579217&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun maun(){

    do {
    	println(&quot;Enter the number: &quot;)
        val input = readLine()!!.toInt()
        
        //for(i in 0..(input-1)){
        for(i in 0 until input){
            
            //for(j in 0..(input-1)){
        	for(j in 0 until input){
            	print((i + j)% input +1)
            }
            
            println()
        }
    } while (input != 0)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;! until in Kotiln&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613283656317&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;until - Kotlin Programming Language&quot; data-og-description=&quot; &quot; data-og-host=&quot;kotlinlang.org&quot; data-og-source-url=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html&quot; data-og-url=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hScf8/hyJgi3sLuh/7p3XxAQ95JB3OhlW0QmWEk/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250&quot;&gt;&lt;a href=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.ranges/until.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hScf8/hyJgi3sLuh/7p3XxAQ95JB3OhlW0QmWEk/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;until - Kotlin Programming Language&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;kotlinlang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/215</guid>
      <comments>https://xd-jaewon.tistory.com/215#entry215comment</comments>
      <pubDate>Thu, 18 Feb 2021 16:22:36 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 2단원 4장. 요술상자, 함수 가지고 놀기 (2)</title>
      <link>https://xd-jaewon.tistory.com/214</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boabyU/btqWVRTPOdQ/OEMsJElXgoNmQmzxo8SKfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boabyU/btqWVRTPOdQ/OEMsJElXgoNmQmzxo8SKfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boabyU/btqWVRTPOdQ/OEMsJElXgoNmQmzxo8SKfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboabyU%2FbtqWVRTPOdQ%2FOEMsJElXgoNmQmzxo8SKfK%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#4-3. 다양한 함수의 출격1! (익명함수, 인라인 함수)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이제 다양한 함수의 종류와 선언, 사용 방법에 대해 살펴볼 시간입니다. 이 때도 언제든 람다식이 이용될 수 있으므로 다양한 모습의 함수에 익숙해져야 합니다. 그럼 시작해봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;익명 함수(anonymous functions)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;인라인 함수&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비지역 반환(non-local return)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;inline&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 익명 함수란&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212040268&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun(x: Int, y: Int): Int = x + y // 함수 이름이 생략된 익명 함수&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;익명 함수란 일반 함수이지만 이름이 없는 함수를 일컫는다.&lt;/p&gt;
&lt;p&gt;람다식 함수가 이에 해당되며 일반 함수의 이름을 생략하고 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;람다식 함수에서는 return이나 break, continue처럼 제어문을 사용하기 어렵기 때문에&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;함수 본문에 조건식에 따라 함수를 중단하고 반환해야 하는 경우에 일반 익명 함수로 표현할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 인라인 함수의 개념&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212096485&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    // 인라인 함수 shortFunc의 내용이 복사되어 들어감
    shortFunc(3) { println(&quot;First call: $it&quot;) }
    shortFunc(5) { println(&quot;Second call: $it&quot;) }
}

inline fun shortFunc(a: Int, out: (Int) -&amp;gt; Unit) {
    println(&quot;Before calling out()&quot;)
    out(a)
    println(&quot;After calling out()&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;인라인 함수는 함수가 호출되는 곳에 내용을 모두 복사해 넣는 함수로써,&lt;/p&gt;
&lt;p&gt;함수의 분기 없이 처리되기 때문에 코드의 성능을 높일 수 있다.&lt;/p&gt;
&lt;p&gt;대게 짧은 코드로 작성되며 람다식 매개변수를 가지고 있는 일반 함수 형태를 권장한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#4-3. 다양한 함수의 출격2! (인라인 함수, 확장 함수)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이제 다양한 함수의 종류와 선언, 사용 방법에 대해 살펴볼 시간입니다. 이 때도 언제든 람다식이 이용될 수 있으므로 다양한 모습의 함수에 익숙해져야 합니다. 그럼 시작해봅시다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;인라인 함수의 제한 - noinline&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비지역 반환의 금지 - crossinline&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;확장 함수(extension function)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 인라인 함수의 제한과 금지&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212186064&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;inline fun sub(out1: () -&amp;gt; Unit, noinline out2: () -&amp;gt; Unit) {
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;noinline 키워드를 람다식 함수 매개변수 정의에서 사용하면&lt;/p&gt;
&lt;p&gt;기본적으로 람다식 함수를 매개변수로 가진 함수가 inline으로 정의되어 있다 하더라도&lt;/p&gt;
&lt;p&gt;사용할 때 람다식 함수를 inline으로 처리하지 않는다.&lt;/p&gt;
&lt;p&gt;즉, nolinle이 있는 람다식 함수는 인라인으로 처리되지 않고 분기하여 호출된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;! 비지역 반환이란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;코틀린에서 익명 함수를 종료하기 위해 return을 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;이 때, 특정 반환값 없이 return만을 사용하여야 한다.&lt;/p&gt;
&lt;p&gt;그렇다면 람다식 함수를 빠져나오는 데에는 어떻게 해야할지 의문이 생길 수 있다.&lt;/p&gt;
&lt;p&gt;람다식 함수를 인자로 사용하는 함수는 의도하지 않게,&lt;/p&gt;
&lt;p&gt;람다식 함수 바깥에 있는 함수가 같이 반한되어 버리는 데 이를 비지역 반환이라 한다.&lt;/p&gt;
&lt;p&gt;이런 비지역 반환을 금지하려면 crossinline이라는 키워드를 람다식 함수 앞에 사용하여&lt;/p&gt;
&lt;p&gt;본문 블록에서 return이 사용되는 것을 금지할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613212381236&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    shortFunc(3) {
        println(&quot;First call: $it&quot;)
        return // ①
    }
}

inline fun shortFunc(a: Int, out: (Int) -&amp;gt; Unit) {
    println(&quot;Before calling out()&quot;)
    out(a)
    println(&quot;After calling out()&quot;) // ②
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;crossinline 키워드는 비지역 반환을 금지해야 하는 람다식에 사용하여야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212398223&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;inline fun shortFunc(a: Int, crossinline out: (Int) -&amp;gt; Unit) {
    println(&quot;Before calling out()&quot;)
    nestedFunc { out(a) }
    println(&quot;After calling out()&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 확장 함수의 개념과 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;클래스에는 다양한 함수가 정의되어 있는데, 이를 클래스의 멤버 메서드라고도 부른다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt; 그런데 기존 멤버 메서드는 아니지만 내가 원하는 함수를 하나 더 포함시켜 확장하고 싶을 때가 있을 수 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;코틀린에서는 이처럼 클래스처럼 필요로 하는 대상에 함수를 더 추가할 수 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;확장 함수&lt;span style=&quot;color: #666666;&quot;&gt;를 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212445849&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val source = &quot;Hello World!&quot;
    val target = &quot;Kotlin&quot;
    println(source.getLongString(target))
}

// String을 확장해 getLongString 추가
fun String.getLongString(target: String): String =
        if (this.length &amp;gt; target.length) this  else target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;확장 함수를 만들 때 &lt;span style=&quot;color: #666666;&quot;&gt;만일 확장하려는 대상에 동일한 이름의 멤버 함수 혹은 메서드가 존재한다면 &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;항상 확장 함수보다 멤버 메서드가 우선으로 호출된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#4-3. 다양한 함수의 출격3! (중위 함수, 꼬리재귀 함수)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;연산자를 구현할 때 자주 사용되는 중위 함수와 자기 자신을 호출하는 재귀 함수에 대해 이야기 해 봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;중위 함수 (infix function) - infix&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;재귀 함수 (recursion function)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;꼬리 재귀 함수 (tail recursive function) - tailrec&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 중위 함수의 개념과 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;중위 표현법이란 클래스의 멤버 호출 시 사용하는 점(.)을 생략하고 함수 이름 뒤에 소괄호를 붙이지 않는 표현법이다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;즉, 중위 함수란 일종의 연산자를 구현할 수 있는 함수를 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;중위 함수는 주로 비트 연산자에서 사용된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212526787&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
    // 중위 표현법
    val multi = 3 multiply 10
...

// Int를 확장해서 multiply() 함수가 하나 더 추가되었음
infix fun Int.multiply(x: Int): Int {  // infix로 선언되므로 중위 함수
    return this * x
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 재귀의 개념과 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;재귀란 자기 자신을 다시 참조하는 방법이다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;자기 자신을 지속적으로 참조하면 무한하게 대상을 생성할 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt; 재귀 함수는 자기 자신을 계속 호출하는 특징이 있기에 재귀 함수는 반드시 아래의 조건에 맞게 설계해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;무한 호출에 빠지지 않도록 탈출 조건을 만들어 둔다.&lt;/li&gt;
&lt;li&gt;스택 영역을 이용하므로 호출 횟수를 무리하게 많이 지정해 연산하지 않는다.&lt;/li&gt;
&lt;li&gt;코드를 복잡하지 않게 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이를 고려하지 않는다면 Stack Overflow에 빠질 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613212672494&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val number = 4
    val result: Long
    
    result = factorial(number)
    println(&quot;Factorial: $number -&amp;gt; $result&quot;)
}

fun factorial(n: Int): Long {
    return if(n == 1) n.toLong() else n * factorial(n-1)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 꼬리 재귀 함수의 개념과 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;또 코틀린에서는 꼬리 재귀 함수를 통해 슥 오버플로를 예방할 수 있다.&lt;/p&gt;
&lt;p&gt;이것은 스택에 계속 쌓이는 방식이 아닌 꼬리를 무는 형태로 반복되는 함수를 말한다.&lt;/p&gt;
&lt;p&gt;이것을 사용하기 위해 tailrec 키워드를 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613212730364&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val number = 5
    println(&quot;Factorial: $number -&amp;gt; ${factorial(number)}&quot;)
}

tailrec fun factorial(n: Int, run: Int = 1): Long {
    return if (n == 1) run.toLong() else factorial(n-1, run*n)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;꼬리 재귀를 사용하면 팩토리얼의 값을 그때 그때 계산하므로 스택 공간을 낭비하지 않기에&lt;/p&gt;
&lt;p&gt;일반 재귀함수보다 안전한 코드를 만들 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;! 스텍오버플로란?&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1613212781027&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;스택 오버플로 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%83%9D_%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;스택 오버플로 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#4-4) 함수와 변수의 범위(Scope)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;함수는 실행 블록({ })을 가지고 있습니다. 함수의 시작을 알리는 중괄호 시작 기호 ({)에서 함수가 실행되며 중괄호가 끝나는 지점(})에서 함수가 종료되면서 가지고 있는 지역 변수를 삭제합니다. 지역 변수란 블록 내에서만 사용하는 변수입니다. 이와 마찬가지로 블록 내에 또 다른 함수를 정의해 넣었을 때는 지역 함수가 됩니다. 이 지역 함수를 사용하려고 할 때는 항상 선언이 먼저 되어 있어야 합니다. 이 지역 함수도 마찬가지로 블록이 끝나면 같이 삭제됩니다. 이번 절에서는 이러한 함수와 변수의 범위에 대해 알아봅시다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;지역 변수 (local variable)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;전역 변수 (global variable)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;최상위 레벨 함수 (top-level function)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;지역 함수 (local function)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 함수와 변수의 실행 범위&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613212821713&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() { // 최상위 레벨의 함수
    ...
    fun secondFunc(a: Int) { // 지역 함수 선언
        ... 
    }
    userFunc(4) // 사용자 함수 사용 - 선언부의 위치에 상관 없이 사용
    secondFunc(2) // 지역 함수 사용 - 선언부가 먼저 나와야 사용 가능
}

fun userFunc(counts: Int) { // 사용자가 만든 최상위 레벨의 함수 선언
    ...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 함수와 실행범위 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- 최상위 및 지역 함수의 사용 범위&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;지역 함수들은 최상위 함수와 다르게 선언 순서에 따라 영향을 받는다.&lt;/p&gt;
&lt;p&gt;아직 선언되지 않은 함수를 사용하려고 하면 'unresolved reference' 오류를 내는데,&lt;/p&gt;
&lt;p&gt;컴파일러 입장에서 함수의 이름을 아직 모르기 때문이다.&lt;/p&gt;
&lt;p&gt;반면에 최상위 함수는 메모리에 고정되어 있어 어느 함수 어떤 위치든 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 12pt;&quot;&gt;&lt;b&gt;- 지역 변수와 전역 변수&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;보통 우리가 사용할 수 있는 변수는 사용 범위에 따라&lt;span&gt;&amp;nbsp;&lt;/span&gt;지역 변수와 전역 변수로 나눌 수 있다.&lt;/p&gt;
&lt;p&gt;특정 코드 블록 내에 사용할 때 우리는 지역 변수라고 하며 블록을 벗어나면&lt;/p&gt;
&lt;p&gt;해당 변수는 프로그램 메모리에서 더 이상 사용되지 않고 삭제된다.&lt;/p&gt;
&lt;p&gt;전역 변수는 최상위에 있는 변수로 프로그램이 실행되는 동안 삭제되지 않고 메모리에 유지된다.&lt;/p&gt;
&lt;p&gt;값이 유지되므로 편리하지만 코드가 길어지면 여러 요소가 동시에 접근하는 경우에 잘못된 동작을 유발할 수 있다.&lt;/p&gt;
&lt;p&gt;자주 사용되지 않는 전역 변수는 메모리 자원 낭비를 불러오기에,&lt;/p&gt;
&lt;p&gt;전역 변수를 너무 많이 사용하는 것은 지양하는 것이 좋다.&lt;/p&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/214</guid>
      <comments>https://xd-jaewon.tistory.com/214#entry214comment</comments>
      <pubDate>Tue, 16 Feb 2021 20:42:00 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 2단원 4장. 요술상자, 함수 가지고 놀기 (1)</title>
      <link>https://xd-jaewon.tistory.com/213</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chNuAV/btqWXaSPKzT/9xpitMxhqDWZthT1zUeDYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chNuAV/btqWXaSPKzT/9xpitMxhqDWZthT1zUeDYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chNuAV/btqWXaSPKzT/9xpitMxhqDWZthT1zUeDYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchNuAV%2FbtqWXaSPKzT%2F9xpitMxhqDWZthT1zUeDYk%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#4-1. 이름없는 함수의 또 다른 형태, 람다(Lambda)!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;람다식에 대한 선언 방법을 좀 더 자세히 알아볼까요? 변수에 할당해 이름 있는 함수처럼 있습니다! 시작해 봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;람다 함수 혹은 람다식&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;람다식의 축약식 표현법&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;화살표 표현법&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;반환 자료형이 없을때 Unit&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 람다식을 변수에 넣어보기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613023020392&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {

    var result: Int
    
    val multi = {x: Int, y: Int -&amp;gt; x * y}
    
    result = multi(10, 20)
    println(result)   
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;일반 변수에 람다식을 할당할 수 있으며,&lt;/p&gt;
&lt;p&gt;람다식이 할다된 변수는 함수처럼 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;아래와 같이 표현식이 2줄 이상일 때는 마지막 표현식이 반환된다.&lt;/p&gt;
&lt;pre id=&quot;code_1613023261346&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val multi2: (Int, Int) -&amp;gt; Imt = { x:Int, y:Int -&amp;gt;
    println(&quot;x * y&quot;)
    x * y // 마지막 표현식
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또한 람다식은 자료형을 생략하여 표현할 수 있다.&lt;/p&gt;
&lt;p&gt;따라서 아래의 세 줄은 모두 같은 동작을 수행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1613023341181&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val multi:(Int, Int) -&amp;gt; Int = {x: Int, y: Int -&amp;gt; x * y}
val multi = {x: Int, y: Int -&amp;gt; x * y}
val multi:(Int, Int) -&amp;gt; Int = {x, y -&amp;gt; x * y}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 변환 자료형이 없는 표현&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;반환 자료형이 없을 경우에는 람다 표현식에 Unit을 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613023409537&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val greet : ()-&amp;gt;Unit = { println(&quot;Hello World!&quot;) }&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;인자가 없는 경우에도 위와같이 소괄호의 부분을 비워놓을 수 있다.&lt;/p&gt;
&lt;p&gt;우항에서 화살표 기호가 없는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 람다식 안에 라다식&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;람다식 역시 함수이기에 람다식 안에 람다식이 존재할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613023518932&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val nestedLambda : () -&amp;gt; () -&amp;gt; Unit = {{ println(&quot;nested&quot;) }}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 자료형 생략&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자료형이 추론가능할 경우에 자료형을 생략할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613023603286&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val greet = { println(&quot;Hello World!&quot;) } // 추론 가능
val square = { x : Int -&amp;gt; x * x } // 선언 부분을 생략하려면 x의 자료형을 명시하여야 함
val nestedLamda = {{ println(&quot;nested&quot;) }} // 추론 가능&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#4-2. 고차함수와 람다식의 이해 (1)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;고차 함수는 인자나 반환값으로 함수를 사용합니다. 이때 함수는 일반적으로 이름이 있는 함수일 수도 있고 이름이 없는 함수일 수도 있습니다. 다양한 함수 형태를 통해 람다식을 호출 원리를 더 깊이 이해해 봅시다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;고차 함수&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;함수의 인자나 반환값으로 함수 사용하기&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;값의 의한 호출&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;이름에 의한 호출&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;참조에 의한 호출&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 함수의 인자로 함수 사용해보기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613026287005&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int) = a + b

fun mul(a: Int, b: Int): Int{
    return a * b
}

fun main(){
    val result1 = sum(a: 10, b: 10);
    val result2 = mul(sum(a: 10, b: 5), b: 10)
    
    println($result1, $result2)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 함수의 반환값으로 함수 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613026359175&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int) = a + b

fun funcFunc(a: Int, b: Int) = sum(a, b)

fun main(){
    val result3 = funcFunc(a: 2, b: 3)
    
    println($result3)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 고차함수 - 람다식 함수를 매개변수와 인자로 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613026394229&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var result: Int

    // 람다식을 매개변수와 인자로 사용한 함수
    result = highOrder({x, y -&amp;gt; x + y}, 10, 20)
    println(result)
}

fun highOrder(sum: (Int, Int) -&amp;gt; Int, a: Int, b: Int): Int {
    return sum(a,b)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brRhkX/btqWX5jssz8/Rk4TgZAE6jXxHkPKPGanTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brRhkX/btqWX5jssz8/Rk4TgZAE6jXxHkPKPGanTK/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/59976&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brRhkX/btqWX5jssz8/Rk4TgZAE6jXxHkPKPGanTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrRhkX%2FbtqWX5jssz8%2FRk4TgZAE6jXxHkPKPGanTK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/59976&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 값에 의한 호출 방법 - 단순 람다식 함수의 인자 전달&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;!. 함수가 인자로 전달될 경우&lt;/p&gt;
&lt;p&gt;람다식 함수는 값으로 처리되며 그 즉시 함수가 수행된 후 값을 전달&lt;/p&gt;
&lt;pre id=&quot;code_1613026527157&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val result = callByValue(lambda())  // 람다식 함수를 호출
    println(result)
}

fun callByValue(b: Boolean): Boolean {  // 일반 변수 자료형으로 선언된 매개변수
    println(&quot;callByValue function&quot;)
    return b
}

val lambda: () -&amp;gt; Boolean = {  // 람다 표현식이 두 줄이다
    println(&quot;lambda function&quot;)
    true  // 마지막 표현식 문장의 결과가 반환
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8EYHQ/btqWVSSHdx4/5UNWj7Uq50rbkjkvcyTD3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8EYHQ/btqWVSSHdx4/5UNWj7Uq50rbkjkvcyTD3k/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/59976&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8EYHQ/btqWVSSHdx4/5UNWj7Uq50rbkjkvcyTD3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8EYHQ%2FbtqWVSSHdx4%2F5UNWj7Uq50rbkjkvcyTD3k%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/59976&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 이름에 의한 호출 - 람다식 선언 및 이름의 호출&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;!. 함수가 이름으로 호출된 경우&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식 내용물이 결과가 아니라 통째로 할당된다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613026610678&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val result = callByName(otherLambda)  // 람다식 이름으로 호출
    println(result)
}

fun callByName(b: () -&amp;gt; Boolean): Boolean {  // 람다식 함수 자료형으로 선언된 매개변수
    println(&quot;callByName function&quot;)
    return b()
}

val otherLambda: () -&amp;gt; Boolean = {
    println(&quot;otherLambda function&quot;)
    true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEoKuh/btqWXbqHiE1/K5BqjGxEItCkHI15Iv5Jjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEoKuh/btqWXbqHiE1/K5BqjGxEItCkHI15Iv5Jjk/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/59976&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEoKuh/btqWXbqHiE1/K5BqjGxEItCkHI15Iv5Jjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEoKuh%2FbtqWXbqHiE1%2FK5BqjGxEItCkHI15Iv5Jjk%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/59976&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6) 다른 함수의 참조에 의한 호출&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;!. 함수가 참조에 의해 호출된 경우&lt;/p&gt;
&lt;p&gt;일반함수의 내용물이 람다식에 존재하는 매개변수와 반환 값에 완벽히 일치하는 경우&lt;/p&gt;
&lt;p&gt;참조로 호출할 수 있으며, 참조로 호출한 경우&lt;/p&gt;
&lt;p&gt;내부적으로 람다식에 매치해서 내용물에 가져오게 된다.&lt;/p&gt;
&lt;p&gt;단, 참조로 호출할 경우 콜론 두개를 함수 이름 앞에 선언하여야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1613026756643&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(x: Int, y: Int) = x + y

funcParam(3, 2, sum)  // 오류! sum은 람다식이 아님

...

fun funcParam(a: Int, b: Int, c: (Int, Int) -&amp;gt; Int): Int {
	return c(a, b)
}

funcParam(3, 2, ::sum)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#4-2. 고차함수와 람다식의 이해 (2)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;람다식에 대한 선언 방법을 좀 더 자세히 알아볼까요? 변수에 할당해 이름 있는 함수처럼 있습니다! 시작해 봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;람다 함수 혹은 람다식&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;람다식의 축약식 표현법&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;화살표 표현법&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;반환 자료형이 없을때 Unit&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 람다식 함수의 매개변수 - 매개변수가 없는 경우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613027211404&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    // 매개변수 없는 람다식 함수
    noParam({ &quot;Hello World!&quot; })
    noParam {&quot;Hello World!&quot;}  // 위와 동일 결과, 소괄호 생략 가능
}

// 매개변수가 없는 람다식 함수가 noParam 함수의 매개변수 out으로 지정됨
fun noParam (out: () -&amp;gt; String) = println(out())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 람다식 함수의 매개변수 - 매개변수가 한개인 경우&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;매개변수가 한 개인 경우는 이를 it으로 대체할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1613027232861&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    // 매개변수 없는 람다식 함수
...
    // 매개변수가 하나 있는 람다식 함수
    oneParam({ a -&amp;gt; &quot;Hello World! $a&quot; })
    oneParam { a -&amp;gt; &quot;Hello World! $a&quot; } // 위와 동일 결과, 소괄호 생략 가능
    oneParam { &quot;Hello World! $it&quot; }  // 위와 동일 결과, it으로 대체 가능
}
...
// 매개변수가 하나 있는 람다식 함수가 oneParam함수의 매개변수 out으로 지정됨
fun oneParam(out: (String) -&amp;gt; String) {
    println(out(&quot;OneParam&quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 람다식 함수의 매개변수 - 매개변수가 두 개 이상인 경우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613027243049&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
...
    // 매개변수가 두 개 있는 람다식 함수
    moreParam { a, b -&amp;gt; &quot;Hello World! $a $b&quot;} // 매개변수명 생략 불가
...
}
// 매개변수가 두 개 있는 람다식 함수가 moreParam 함수의 매개변수로 지정됨
fun moreParam(out: (String, String) -&amp;gt; String) {
    println(out(&quot;OneParam&quot;, &quot;TwoParam&quot;))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 람다식 함수의 매개변수 - 매개변수를 생략하는 경우&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613027253886&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moreParam { _, b -&amp;gt; &quot;Hello World! $b&quot; }  // 첫 번째 문자열은 사용하지 않고 생략&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 일반 매개변수와 매개변수의 사용&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613027414760&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
fun main(){
...
    //인자와 함께 사용하는 경우
    withArgs(&quot;Arg1&quot;, &quot;Arg2&quot;, {a, b -&amp;gt; &quot;Hello World! $a $b }) // case #1
    //withArgs()의 마지막 인자가 람다식인 경우 소괄호 바깥으로 분리 할 수 있다.
    withArgs(&quot;Arg1&quot;, &quot;Arg2&quot;) {a, b -&amp;gt; &quot;Hello World! $a $b }) // case #2
}
...
//withArgs 함수는 일반 매개변수를 2개를 포함, 람다식 함수를 마지막 매개변수로 가진다.
fun withArgs(a: String, b: String, out : (String, String) -&amp;gt; String){
    println(out(a, b))
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6) 두 개의 람다식 매개변수를 가진 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1613027426665&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    twoLambda({a, b -&amp;gt; &quot;First $a $b&quot;}, {&quot;Second $it&quot;})
    twoLambda({a, b -&amp;gt; &quot;First $a $b&quot;}) {&quot;Second $it&quot;}  // 위와 동일
}

fun twoLambda(first: (String, String) -&amp;gt; String, second: (String) -&amp;gt; String) {
    println(first(&quot;OneParam&quot;, &quot;TwoParam&quot;))
    println(second(&quot;OneParam&quot;))
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/213</guid>
      <comments>https://xd-jaewon.tistory.com/213#entry213comment</comments>
      <pubDate>Thu, 11 Feb 2021 16:10:38 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 2단원 3장. 마법의 요술상자, 함수의 기본 (2)</title>
      <link>https://xd-jaewon.tistory.com/212</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddDnh1/btqWUMkMHDb/L0qAkxMNzIu1ZSoaHZw4g1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddDnh1/btqWUMkMHDb/L0qAkxMNzIu1ZSoaHZw4g1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddDnh1/btqWUMkMHDb/L0qAkxMNzIu1ZSoaHZw4g1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddDnh1%2FbtqWUMkMHDb%2FL0qAkxMNzIu1ZSoaHZw4g1%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본 게시글은 &lt;u&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/u&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;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#3-3. 함수형 프로그래밍 패러다임! (1)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;코틀린은 함수형 프로그래밍(FP: Functional Programming)과 객체 지향 프로그래밍(OOP: Object-Oriented Programming)을 모두 지원하는 다중 패러다임 언어입니다. 함수형, 객체 지향 프로그래밍 기법의 장점은 코드를 간략하게 만들 수 있다는 것입니다. 먼저 함수형 프로그래밍은 코드가 간략화, 테스트나 재사용성이 더 좋아지면서 개발 생산성이 늘어나게 됩니다. 이제 함수형 프로그래밍의 개념을 차근차근 공부해 봅시다!&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수형 프로그래밍(FP)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;순수 함수 (Pure Function)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식 (Lambda Expression)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일급 객체 (First-class)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;고차 함수 (Higher-Order Function)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 함수형 프로그래밍이란&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;코틀린 : 함수형 프로그래밍 + 객체 지향 프로그래밍&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수형 프로그래밍&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 코드를 간략화하여 테스트나 재사용성을 증가&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 람다식, 고차 함수를 사용해 구성할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;- 순수 함수&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 순수함수의 개념&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;조건 : 부작용이 없는 함수&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt; 동일한 입력 인자에 대해서는 같은 결과를 출력 혹은 반환 해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;즉, 순수 함수를 사용할 때에는 반드시 값이 예측가능하여야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612967899020&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int): Int{
    return a + b
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;가령 위와 같은 식은 인자로 2와 3을 대입한다면,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;몇 번을 수행하든 5를 반환할 것이기 때문에 순수함수라 할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;순수 함수의 조건은 아래와 같다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;같은 인자에 대하여 항상 같은 값을 반환&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수 외부의 어떤 상태도 바꾸지 않는다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1612968054259&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun check(){
    val test = User.grade()
    if (test != null) process(test)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위와 같은 함수는 check 함수 내부에 정의되어 있지 않은 외부의 User 객체를 사용할 뿐더러&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;User.grade에 따라 check 함수의 동작이 달라지게 됨으로 순수함수라 할 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612968131314&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun noPureFunction(a : Int, b: Int): Int{
    return a + b + global
}&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위와 같은 경우에도 입력값과 무관하게 외부의 변수인 global을 사용하기 때문에,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;global의 값에 따라 동일한 인자를 넣었음에도 수행동작이 달라질 수 있기에 순수함수라 할 수 없다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;! 왜 순수함수를 사용할까?&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;입력과 내용을 분리하고 모듈화 하므로 재사용성이 높아진다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여러가지 함수들과 조합해도 부작용이 없다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;특정 상태에 영향을 주지 않으므로 병향 작업 시 안전하다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수의 값을 추적하고 예측 할 수 있게 때문에 테스트, 디버깅 등이 유리하다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이를 함수형 프로그래밍에 적용한다면,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수를 매개변수의 인자 반환값에 적용할 수 있고, (이를 고차함수라 한다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수를 변수나 데이터 구조에 저장할 수 있기 때문에 유연한 프로그래밍을 할 수 있게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 람다식의 개념&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;익명 함수의 하나의 형태로 이름 없이 사용 및 실행이 가능한 식을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612968370996&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{ x , y -&amp;gt; x + y }&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식은 ` -&amp;gt; ` 기호로 사용할 수 있고,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;화살표를 기준으로 좌항이 인자이고 우항이 결과이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식 역시 이름이 없는 함수이기 때문에 다른 함수의 인자로 사용될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;4) 일급 객체란&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일급 객체는 함수의 인자로 전달할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일급 객체는 함수의 반환값에 사용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;일급 객체는 변수에 담을 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;코틀린에서 함수는 일급객체로 취급한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;5) 고차 함수란&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612968566466&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    println(highFunc({x, y -&amp;gt; x + y}, 10, 20)) // 람다식 함수를 인자로 넘김
}

fun highFunc(sum: (Int, Int) -&amp;gt; Int, a: Int, b: Int): Int = sum(a, b)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 코드에서 highFunc를 살펴보면, 인자로 람다식과 a, b를 요구하고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그래서 sum(a, b)는 람다식의 표현문에 따라 결국 a+b의 정수값 결과를 반환하게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이렇게 함수의 인자 혹은 반환값에 또 다른 함수를 사용하여 만들어진 함수를 고차함수라 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;#3-3. 함수형 프로그래밍 패러다임! (2)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;간단한 실습을 통해서 함수형 프로그래밍의 묘미를 느껴볼까요!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식, 익명 함수&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;고차 함수&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 실습 : 고차함수와 람다식의 간단한 예&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612968945068&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun highFunc(sum: (Int, Int) -&amp;gt; Int, a: Int, b: Int): Int {
    return sum(a, b)
}

fun main() {
    val result = highFunc({x, y -&amp;gt; x + y}, 1, 3)
    println(result)
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1612968959522&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun highFunc(a: Int, b: Int, sum: (Int, Int) -&amp;gt; Int): Int {
    return sum(a, b)
}

fun main() {
    val result = highFunc(1, 3) {x, y -&amp;gt;
        x + y
    }
    println(result)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 함수형 프포그래밍의 개념 요약&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수형 프로그래밍 사용 이유&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-ke-size=&quot;size14&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;프로그램을 모듈화해 디버깅하거나 테스트가 쉬움&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-ke-size=&quot;size14&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;간략한 표현식을 사용해 생산성이 높음&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li data-ke-size=&quot;size14&quot;&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;람다식과 고차함수를 사용하면서 다양한 함수 조합을 사용할 수 있음&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;함수형 프로그래밍은 순수 함수를 조합해 상태 데이터 변경이나 부작용이 없는 루틴을 만들어 내며 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이름 없는 함수 형태의 하나인 람다식을 이용해 함수를 변수처럼 매개변수, 인자, 반환값 등에 활용하는 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;고차 함수를 구성해 생산성을 높인 프로그래밍 방법이다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/212</guid>
      <comments>https://xd-jaewon.tistory.com/212#entry212comment</comments>
      <pubDate>Wed, 10 Feb 2021 23:57:47 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 2단원 3장. 마법의 요술상자, 함수의 기본 (1)</title>
      <link>https://xd-jaewon.tistory.com/210</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqV2V5/btqV36jKoDB/kbnaHKIZKDtpSh4Udw9ClK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqV2V5/btqV36jKoDB/kbnaHKIZKDtpSh4Udw9ClK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqV2V5/btqV36jKoDB/kbnaHKIZKDtpSh4Udw9ClK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqV2V5%2FbtqV36jKoDB%2FkbnaHKIZKDtpSh4Udw9ClK%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE (1).png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#3-1&amp;nbsp;함수를&amp;nbsp;선언하고&amp;nbsp;호출해&amp;nbsp;보기&amp;nbsp;(1)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;프로그래밍을 하다 보면 반복 입력하는 코드가 생기기 마련입니다. 이런 경우 반복되는 부분만 따로 떼어 함수로 정의하면 코드를 재사용할 수 있어 유용합니다. 또, 함수를 잘 이용하면 프로그램을 구조적으로 만들 수도 있습니다. 현대 언어의 특징을 많이 가지고 있는 코틀린은 함수를 다양한 형태로 사용할 수 있도록 지원합니다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;먼저 함수의 선언 방법에 대해서 공부해 봅시다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;fun&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;반환 자료형, Unit&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;최상위 함수(Top-level function)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;지역 함수(Local function), 지역 변수(Local variable)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;스택(stack)과 스택 프레임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 함수의 정의&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;함수란 특정 기능 역할을 하는 Box를 연상해볼 수 있는데,&lt;/p&gt;
&lt;p&gt;입력에 따라서 우리가 원하는 동작을 수행한 후 결과를 출력하거나 동작만을 수행하는 도구를 말한다.&lt;/p&gt;
&lt;pre id=&quot;code_1612683124400&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int): Int{
    var sum = a+b
    return sum
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;코틀린에서 함수는 ` fun ` 이라는 키워드를 통해서 선언할 수 있다.&lt;/p&gt;
&lt;p&gt;또한 함수의 매개변수 콜론 옆 혹은 함수의 매개변수 콜론 옆에는,&lt;/p&gt;
&lt;p&gt;각각 매개변수의 타입 혹은 반환 타입을 명시하여야 한다.&lt;/p&gt;
&lt;p&gt;만약 함수가 자료를 반환하지 않는 경우에는 그 자료명으로 ` unit `을 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 함수의 간략화된 표현&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612683275461&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int):Int = a + b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;코틀린에서 함수를 위와 같이 간략화하여 표현할 수 있다.&lt;/p&gt;
&lt;p&gt;또한, 파라미터로 넘겨주는 자료형 a, b가 모두 Int이기 때문에,&lt;/p&gt;
&lt;p&gt;return되는 변수의 자료형 역시 추론가능하다. 이 역시 생략하여 아래와 같이 표현할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1612683358015&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a: Int, b: Int) = a + b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;* Top-level(최상위) 함수와 지역 함수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Top-level 함수는 정의의 순서와 상관없이 그 함수의 이름을 읽을 수 있으나,&lt;/p&gt;
&lt;p&gt;함수 내부에 선언되는 지역 함수의 경우는 함수가 사용되기 이전에 정의되어 있어야 한다.&lt;/p&gt;
&lt;p&gt;아래의 케이스들을 살펴보자.&lt;/p&gt;
&lt;p&gt;True&lt;/p&gt;
&lt;pre id=&quot;code_1612683687133&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a : Int, b : Int): Int {
    return a + b
}

fun main(){
    val result1 = sum(2, 3)
    println(result1)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;True&lt;/p&gt;
&lt;pre id=&quot;code_1612683696149&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val result1 = sum(2, 3)
    println(result1)
}

fun sum(a : Int, b : Int): Int {
    return a + b
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;False&lt;/p&gt;
&lt;pre id=&quot;code_1612683729267&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val result1 = sum(2, 3)
    
    fun sum(a : Int, b : Int): Int {
        return a + b
    }
    
    println(result1)
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;True&lt;/p&gt;
&lt;pre id=&quot;code_1612683744615&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    
    fun sum(a : Int, b : Int): Int {
        return a + b
    }
    
    val result1 = sum(2, 3)    
    println(result1)
}

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#3-1 함수를 선언하고 호출해 보기 (2)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이번에는 함수 매개변수의 기본값과 이름을 사용하는 방법에 대해서 이야기 합니다. 마지막에는 함수의 호출 원리에 대해서 이야기해 볼까요?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- 핵심 키워드&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;fun (변수명: 자료형 = 기본값...)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;매개변수의 기본값&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;이름있는 인자&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;함수 호출의 원리&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;스택 프레임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 판단문이 포함된 max() 함수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;판단문을 활용하여 a와 b중 큰 수를 반환하는 함수 max를 구현하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612683920592&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun max(a: Int, b: Int): Int{
    return if (a &amp;gt; b) a else b
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이와 같은 형태로 함수의 return과 판단문을 결합하여 응용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 반환값이 없는 unit 함수&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612684059502&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun outfunc(name: String): Unit{
    println(&quot;Name: $name&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 함수가 return값 없이 출력만을 담당하는 같은 경우는 unit을 선언하여 구현할 수 있다.&lt;/p&gt;
&lt;p&gt;C/C++ 혹은 JAVA에서의 void와 유사한 동작을 수행한다고 이해하면 된다.&lt;/p&gt;
&lt;p&gt;차이점으로는 Unit같은 경우는 &lt;span style=&quot;color: #333333;&quot;&gt;return Unit 구문이 생략되어 있는 형태로 unit이 반환된다는 점이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #333333;&quot;&gt;마찬가지로 아래와 같이 함수의 자료형 역시 생략할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612684201932&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun outfunc(name: String){
    println(&quot;Name: $name&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이때까지 우리가 선언한 함수들 역시 아래와 같이 축약된 형태로 선언할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1612684333311&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun sum(a : Int, b : Int) = a + b
fun max(a: Int, b: Int) = if (a &amp;gt; b) a else b
fun outfunc(name: String) = println(&quot;Name: $name&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 가변 인자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;함수의 인자가 결정되지 않고, 매번 바뀌는 경우는 어떻게 구현할 수 있을까?&lt;/p&gt;
&lt;p&gt;인자의 개수에 따라 함수를 모두 만드는 것은 매우 비효율 적일 것이다.&lt;/p&gt;
&lt;p&gt;여기서 활용할 수 있는게 코틀린의 ` 가변 변수 ` 이다.&lt;/p&gt;
&lt;p&gt;그것을 위한 키워드가 ` vararg `이고 vararg로 선언된 변수는 하나 이상의 인자들 받아들일 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1612684543030&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun normalVarargs(vararg a : Int){
    for(num in a){
        println(num)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드 같은 경우는 인자 a는 vararg로 선언되어 여러개의 인자를 받을 수 있다.&lt;/p&gt;
&lt;p&gt;따라서 반복문을 통해 a로 들어온 모든 인자를 출력하는 동작을 수행함으로써 vararg의 동작을 확인하고자 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1612684638010&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun normalVarargs(vararg a : Int){
    for(num in a){
        println(num)
    }
}

fun main(){
	normalVarargs(...a: 1, 2, 3, 4)
 }&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/what-happens-when-we-call-a-function/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;What happens when we call a Function&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612688060759&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;What happens when we call a Function - GeeksforGeeks&quot; data-og-description=&quot;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&quot; data-og-host=&quot;www.geeksforgeeks.org&quot; data-og-source-url=&quot;https://www.geeksforgeeks.org/what-happens-when-we-call-a-function/&quot; data-og-url=&quot;https://www.geeksforgeeks.org/what-happens-when-we-call-a-function/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gevXe/hyJcQLHBIQ/dPTbewOeSXDdOR4V2sxOmk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/hOCaK/hyJcS3Qduo/Dmoj7NprEMcA27OgPIgvWk/img.png?width=626&amp;amp;height=481&amp;amp;face=0_0_626_481,https://scrap.kakaocdn.net/dn/buPika/hyJboDhaFJ/zkRHSWSpULi6v1thKOhSl1/img.png?width=626&amp;amp;height=481&amp;amp;face=0_0_626_481&quot;&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/what-happens-when-we-call-a-function/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.geeksforgeeks.org/what-happens-when-we-call-a-function/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gevXe/hyJcQLHBIQ/dPTbewOeSXDdOR4V2sxOmk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/hOCaK/hyJcS3Qduo/Dmoj7NprEMcA27OgPIgvWk/img.png?width=626&amp;amp;height=481&amp;amp;face=0_0_626_481,https://scrap.kakaocdn.net/dn/buPika/hyJboDhaFJ/zkRHSWSpULi6v1thKOhSl1/img.png?width=626&amp;amp;height=481&amp;amp;face=0_0_626_481');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;What happens when we call a Function - GeeksforGeeks&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.geeksforgeeks.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://www.baeldung.com/java-stack-heap&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Stack Memory and Heap Space in Java&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1612688083593&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Stack Memory and Heap Space in Java | Baeldung&quot; data-og-description=&quot;Explore how Stack Memory and Heap Space works and when to use them for developing better Java programs.&quot; data-og-host=&quot;www.baeldung.com&quot; data-og-source-url=&quot;https://www.baeldung.com/java-stack-heap&quot; data-og-url=&quot;https://www.baeldung.com/stack-memory-and-heap-space-in-java/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/6UGji/hyJcT2JuBY/8GrEOkk1DlKzqMpIbptkhK/img.jpg?width=952&amp;amp;height=498&amp;amp;face=0_0_952_498,https://scrap.kakaocdn.net/dn/l1RNM/hyJcRcMlAF/kgWSq8OPnbkV3ihEcAuFdk/img.jpg?width=952&amp;amp;height=498&amp;amp;face=0_0_952_498,https://scrap.kakaocdn.net/dn/DApE0/hyJbkOqwhw/YTMmhIJgzeNfqTzXSIMWTK/img.png?width=2826&amp;amp;height=1590&amp;amp;face=0_0_2826_1590&quot;&gt;&lt;a href=&quot;https://www.baeldung.com/java-stack-heap&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.baeldung.com/java-stack-heap&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/6UGji/hyJcT2JuBY/8GrEOkk1DlKzqMpIbptkhK/img.jpg?width=952&amp;amp;height=498&amp;amp;face=0_0_952_498,https://scrap.kakaocdn.net/dn/l1RNM/hyJcRcMlAF/kgWSq8OPnbkV3ihEcAuFdk/img.jpg?width=952&amp;amp;height=498&amp;amp;face=0_0_952_498,https://scrap.kakaocdn.net/dn/DApE0/hyJbkOqwhw/YTMmhIJgzeNfqTzXSIMWTK/img.png?width=2826&amp;amp;height=1590&amp;amp;face=0_0_2826_1590');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Stack Memory and Heap Space in Java | Baeldung&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Explore how Stack Memory and Heap Space works and when to use them for developing better Java programs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.baeldung.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;함수가 호출되었을 때 Stack과 Heap의 동작을 알고 싶다면, 위 두 게시글을 참조하면 좋을 것 같다.&lt;/p&gt;
&lt;p&gt;코틀린 역시 Stack Frame의 경우 Java 혹은 다른 언어와 유사하게 동작한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#3-2&amp;nbsp;함수를&amp;nbsp;활용한&amp;nbsp;예제&amp;nbsp;만들기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;들어가기 전에&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이제까지 배운 함수를 이용해 간단한 예제를 만들어 볼까요?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;예제 : 평균 구하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;목표:&amp;nbsp;하나 이상의 실수를 받아서 모든 실수의 합의 평균을 구하고 출력 하려고 합니다.&lt;/p&gt;
&lt;p style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;다음 조건을 만족하는 함수를 구현해 보세요!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;초기값을 위한 인자는 Float형&lt;/li&gt;
&lt;li&gt;초기값은 두번째 부터 나열된 인자의 최종 평균 결과에 더함&lt;/li&gt;
&lt;li&gt;초기값에 아무런 인자를 입력하지 않으면 0을 기본 사용&lt;/li&gt;
&lt;li&gt;두번째부터 받아들일 인자는 가변형 인자로 모두 실수형 Float&lt;/li&gt;
&lt;li&gt;반환값은 모든 인자의 평균값으로 마찬가지로 실수형 Double&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 :&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612688112158&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun avgFunc(initial: ____(1)______, _____(2)_____ numbers: Float): Double {
    var result = 0f
    for (num in numbers) {
        ________(3)_________
    }
    println(&quot;result: $result, numbers.size: ${numbers.size}&quot;)
    val avg = __________(4)____________
    return ________(5)_________
}

fun main() {
    val result = avgFunc(5f, 100f, 90f, 80f)  // 첫번째 인자: 초기값, 이후 인자는 가변인자
    println(&quot;avg result: $result&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;정답 :&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612688198685&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun avgFunc(initial: Float=0f, vararg numbers: Float): Double {
    var result = 0f
    for (num in numbers) {
        result += num
    }
    println(&quot;result: $result, numbers.size: ${numbers.size}&quot;)
    val avg = result/numbers.size
            return (avg+initial).toDouble()
}

fun main() {
    val result = avgFunc(5f, 100f, 90f, 80f)  // 첫번째 인자: 초기값, 이후 인자는 가변인자
    println(&quot;avg result: $result&quot;)
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/210</guid>
      <comments>https://xd-jaewon.tistory.com/210#entry210comment</comments>
      <pubDate>Sun, 7 Feb 2021 17:56:48 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 1단원 2장. 변수와 자료형 (3)</title>
      <link>https://xd-jaewon.tistory.com/209</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZSVqX/btqVta8m31d/KGf72ZaYT5Kr3KZhoiTsTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZSVqX/btqVta8m31d/KGf72ZaYT5Kr3KZhoiTsTK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZSVqX/btqVta8m31d/KGf72ZaYT5Kr3KZhoiTsTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZSVqX%2FbtqVta8m31d%2FKGf72ZaYT5Kr3KZhoiTsTK%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#2-4. 연산자를 조합해 다양한 식 만들기 (1) 기본 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;코틀린의 기본 연산자는 산술, 대입, 증가, 감소, 비교, 논리 연산자 등의 종류가 있습니다. 수학이나 많은 언어에서 거의동일한 방법으로 사용하고 있으니 정리하는 정도로 살펴보도록 하겠습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;산술 연산자 (+, -, /, *, %)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;대입 연산자 (=, +=, -=, /=, %=)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;증감 연산자 (++, --)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비교 연산자 (&amp;lt;, &amp;gt;, &amp;lt;= ...==, ===)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;논리 연산자 (&amp;amp;&amp;amp;, ||, ! )&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 산술 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;사칙연산에 사용되는 사칙연산자와 나머지 연산자를 산술 연산자라 칭한다&lt;/p&gt;
&lt;p&gt;+ : 덧셈, - : 뺄셈, * : 곱셈, / : 나눗셈, % : 나머지셈&lt;/p&gt;
&lt;pre id=&quot;code_1612250470997&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    if ((n % 2) == 1) { // 홀수
        println(&quot;n is an Odd number&quot;)
    }
    if ((n % 2) == 0) { // 짝수
        println(&quot;n is an Even number&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 대입 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;대입 연산자는 변수에 값을 할당하는 연산자를 말한다.&lt;/p&gt;
&lt;p&gt;대입 여난자는 이항 연산자 중 우선 순위가 가장 낮은데,&lt;/p&gt;
&lt;p&gt;이 말은 즉 모든 연산이 끝난 이후 가장 마지막에 동작한다는 의미이다.&lt;/p&gt;
&lt;pre id=&quot;code_1612250572375&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val numOfApple = 12  // 변수가 대입 연산자에 의해 할당
val result = numOfApple - 2 // 표현식이 대입 연산자에 의해 결괏값 할당&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;어떤 변수에 저장된 값으로 연산을 수행한 다음 그 결과값을 다시 변수에 할당할 땐 아래와 같이 사용할 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1612250618857&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;num = num + 2 // 산술 연산자와 대입 연산자를 함께 사용하는 경우
num += 2 // 이렇게 간략하게 표현&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;비단 이는 덧셈뿐 아니라 나머지 산술연산에도 동일한 방식으로 적용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 증감 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;증가 연산자와 감소 연산자는 항이 1개인 단항 연산자이다.&lt;/p&gt;
&lt;p&gt;항의 앞이나 뒤에 붙어 사용하며 1을 더하거나 빼는 연산을 수행한다,&lt;/p&gt;
&lt;p&gt;항이 앞에 붙는 경우와 뒤에 붙는 경우 연산 결과가 다르므로 주의하여야 하는데,&lt;/p&gt;
&lt;p&gt;항 앞에 붙은 경우는 증감 연산자를 수행하고 값을 대입하며,&lt;/p&gt;
&lt;p&gt;항 뒤에 붙은 경우에는 값을 대입하고 증감 연산자를 수행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1612250723077&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var num1 = 10
    var num2 = 10
    val result1 = ++num1 // num 값 증가 후 대입
    val result2 = num2++ // 먼저 num 값 대입 후 증가

    println(&quot;result1: $result1&quot;)
    println(&quot;result2: $result2&quot;)
    println(&quot;num1: $num1&quot;)
    println(&quot;num2: $num2&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 비교 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;비교 연산자는 두 개의 항의 값을 비교하기 위해 사용한다.&lt;/p&gt;
&lt;p&gt;모든 비교 연산자는 비교 결과가 참이면 true를, 거짓이면 false를 반환한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 180px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;연산자&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;의미&lt;br /&gt;(아니면 fasle)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;&amp;gt;&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;좌항이 크면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;&amp;lt;&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;&amp;nbsp;좌항이 작으면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;&amp;gt;=&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;좌항이 크거나 같으면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;&amp;lt;=&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;좌항이 작거나 같으면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;==&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;두 항의 값이 같으면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;!=&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;두 항의 값이 다르면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;===&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;두 항의 참조가 같으면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 413px; height: 20px; text-align: center;&quot;&gt;!==&lt;/td&gt;
&lt;td style=&quot;width: 412px; height: 20px; text-align: center;&quot;&gt;두 항의 참조가 다르면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 논리 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;논리 연산자에는 논리곱, 논리합, 부정 연산자가 있다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;연산자&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;의미&lt;br /&gt;(아니면 false)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&amp;amp;&amp;amp;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;두 항이 모두 true면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;||&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;두 항 중 하나의 항이라도 true면 true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;!&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;ture를 false로, false를 true로 반환&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;논리 연산자는 비교 연산자와 함께 사용하는 경우가 많다.&lt;/p&gt;
&lt;pre id=&quot;code_1612250993261&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var check = (5&amp;gt;3) &amp;amp;&amp;amp; (5&amp;gt;2)  // 2개의 항((5&amp;gt;3), (5&amp;gt;2))이 모두 참이면 true
check = (5&amp;gt;3) || (2&amp;gt;5)      // 2개 중 1개의 항이 참이면 true
check = !(5&amp;gt;3)              // true는 false로, false는 true로 변경&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#2-4. 연산자를 조합해 다양한 식 만들기 (2) 비트 연산자&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;비트연산은 임베디드 시스템에서 많이 사용되고 있습니다. 우리가 사용하는 10진법은 인간에게 유리한 수의 체계이지만 컴퓨터와 같은 기계는 프로세서가 처리하는 단위는 0과 1로 이루어진 2진법의 체계가 유리합니다. 다만, 사람이 이해하기 힘들기 때문에 16진법을 한자리와 2진법의 4자리 단위가 서로 매치하므로 16진법을 주로 코드에서 사용하고 있습니다.&lt;/p&gt;
&lt;p&gt;여기서는 비트연산에 사용되는 연산자를 살펴보고 간단히 이해하도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 핵심 키워드&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;2진법: 0b0000_0011(2) = 3(10)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;16진법: 0x3F(16) = 0b0011_1111(16) = 1 + 2 + 4 + 8 + 16 + 32 = 63(10)&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비트 왼쪽/오른쪽 쉬프트&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비트의 논리연산&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;비트 뒤집기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 비트 연산의 이해&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;비트 연산자는 기계가 이해할 수 있는 값인 0과 1을 처리하는 데 사용한다.&lt;/p&gt;
&lt;p&gt;변수에 저장되는 값을 비트로 표현할 수 있어야 비트 연산자를 이해할 수 있는데 비트는 2진수로 표현된다.&lt;/p&gt;
&lt;p&gt;2진수로 표현된 비트의 가장 왼쪽에 있는 수(비트)는 양, 음을 판단하는 데 사용한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 비트 연산자의 종류&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 200px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;표현식&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.shi(bits)&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;x를 표현하는 비트를 bits만큼 왼쪽으로 이동 (부호 있음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.ushi(bits)&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;bits만큼 왼쪽으로 이동 (부호 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;.xshr&lt;span style=&quot;color: #333333;&quot;&gt;(bits)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;bits만큼 오른쪽으로 이동 (부호 있음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.ushr&lt;span style=&quot;color: #333333;&quot;&gt;(bits)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;bits만큼 오른쪽으로 이동(부호 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.and(bits)&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트와 bits를 표현하는 비트로 논리곱 연산&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.or(bits)&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트와 bits를 표현하는 비트로 논리합 연산&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.xor(bits)&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;x를 표현하는 비트와 bits를 표현하는 비트의 배타적 연산&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.2791%; height: 20px; text-align: center;&quot;&gt;x.inv()&lt;/td&gt;
&lt;td style=&quot;width: 73.7209%; height: 20px; text-align: center;&quot;&gt;x를 표현하는 비트를 모두 뒤집음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;- 사용&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612252196269&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var x = 4
    var y = 0b0000_1010 // 10진수 10
    var z = 0x0F        // 10진수 15

    println(&quot;x shl 2 -&amp;gt; ${x shl 2}&quot;)    // 16
    println(&quot;x.inv -&amp;gt; ${x.inv}&quot;)    // -5

    println(&quot;y shr 2 -&amp;gt; ${y/4}, ${y shr 2}&quot;)   // 2, 2
    println(&quot;x shl 4 -&amp;gt; ${x*16}, ${x shl 4}&quot;)  // 64, 64
    println(&quot;z shl 4 -&amp;gt; ${z*16}, ${z shl 4}&quot;)  // 240, 240

    x = 64
    println(&quot;x shr 4 -&amp;gt; ${x/4}, ${x shr 2}&quot;)  // 16, 16

}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/209</guid>
      <comments>https://xd-jaewon.tistory.com/209#entry209comment</comments>
      <pubDate>Tue, 2 Feb 2021 16:50:01 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] [1차] 다트 게임</title>
      <link>https://xd-jaewon.tistory.com/208</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;다트 게임&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgkYdF/btqU4CrzcQm/N5h7NkK8O6DSlue2L1KGM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgkYdF/btqU4CrzcQm/N5h7NkK8O6DSlue2L1KGM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgkYdF/btqU4CrzcQm/N5h7NkK8O6DSlue2L1KGM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgkYdF%2FbtqU4CrzcQm%2FN5h7NkK8O6DSlue2L1KGM0%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;다트 게임&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.&lt;br /&gt;갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;다트 게임은 총 3번의 기회로 구성된다.&lt;/li&gt;
&lt;li&gt;각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.&lt;/li&gt;
&lt;li&gt;점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1&lt;span&gt;&amp;nbsp;&lt;/span&gt;, 점수2&lt;span&gt;&amp;nbsp;&lt;/span&gt;, 점수3&lt;span&gt;&amp;nbsp;&lt;/span&gt;)으로 계산된다.&lt;/li&gt;
&lt;li&gt;옵션으로 스타상(*) , 아차상(#)이 존재하며 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 아차상(#) 당첨 시 해당 점수는 마이너스된다.&lt;/li&gt;
&lt;li&gt;스타상(*)은 첫 번째 기회에서도 나올 수 있다. 이 경우 첫 번째 스타상(*)의 점수만 2배가 된다. (예제 4번 참고)&lt;/li&gt;
&lt;li&gt;스타상(*)의 효과는 다른 스타상(*)의 효과와 중첩될 수 있다. 이 경우 중첩된 스타상(*) 점수는 4배가 된다. (예제 4번 참고)&lt;/li&gt;
&lt;li&gt;스타상(*)의 효과는 아차상(#)의 효과와 중첩될 수 있다. 이 경우 중첩된 아차상(#)의 점수는 -2배가 된다. (예제 5번 참고)&lt;/li&gt;
&lt;li&gt;Single(S), Double(D), Triple(T)은 점수마다 하나씩 존재한다.&lt;/li&gt;
&lt;li&gt;스타상(*), 아차상(#)은 점수마다 둘 중 하나만 존재할 수 있으며, 존재하지 않을 수도 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;0~10의 정수와 문자 S, D, T, *, #로 구성된 문자열이 입력될 시 총점수를 반환하는 함수를 작성하라.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;점수|보너스|[옵션]으로 이루어진 문자열 3세트.&lt;br /&gt;예)&lt;span&gt;&amp;nbsp;&lt;/span&gt;1S2D*3T&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;점수는 0에서 10 사이의 정수이다.&lt;/li&gt;
&lt;li&gt;보너스는 S, D, T 중 하나이다.&lt;/li&gt;
&lt;li&gt;옵선은 *이나 # 중 하나이며, 없을 수도 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;예제&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;dartResult&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;answer&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1S2D*3T&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;37&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;11&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 + 22&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 + 33&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1D2S#10S&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 21&lt;span&gt;&amp;nbsp;&lt;/span&gt;* (-1) + 101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1D2S0T&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 21&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 03&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1S*2T*3S&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;11&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 * 2 + 23&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 + 31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1D#2S*3S&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;* (-1) * 2 + 21&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 + 31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1T2D3D#&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;-4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;13&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 22&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 32&lt;span&gt;&amp;nbsp;&lt;/span&gt;* (-1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1D2S3T*&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;59&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;span&gt;&amp;nbsp;&lt;/span&gt;+ 21&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2 + 33&lt;span&gt;&amp;nbsp;&lt;/span&gt;* 2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611912925847&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//보너스
function multiple(array){
    switch(array){
        case 'S':
            return 1;
        case 'D':
            return 2;
        case 'T':
            return 3;
    }
}

//옵션 : 스타상
function star(array, idx){
    if(idx &amp;gt; 0)
        array[idx-1][0] = array[idx-1][0]*2;
    array[idx][0] = array[idx][0]*2;   
}

//옵션 : 아차상
function shop(array, idx){
    array[idx][0] = array[idx][0]*-1; 
}

function solution(dartResult) {
    // 3세트로 split
    var arr = dartResult.split(/(\d?\d\D?\D)/);
    // 공백 제거
    var arr_ = arr.filter((element) =&amp;gt; element != &quot;&quot; &amp;amp;&amp;amp; element != '');
    
    // 점수 | 보너스 | 옵션 으로 split
    var first = arr_[0].split(/(\d(?!\d)|\d\d|\D)/);
    var second = arr_[1].split(/(\d(?!\d)|\d\d|\D)/);
    var third = arr_[2].split(/(\d(?!\d)|\d\d|\D)/);
    
    // 공백 제거
    var first_ = first.filter((element) =&amp;gt; element != &quot;&quot; &amp;amp;&amp;amp; element != '');
    var second_ = second.filter((element) =&amp;gt; element != &quot;&quot; &amp;amp;&amp;amp; element != '');
    var third_ = third.filter((element) =&amp;gt; element != &quot;&quot; &amp;amp;&amp;amp; element != '');

    // 보너스계산
    first_[0] = Math.pow(first_[0], multiple(first_[1]));
    second_[0] = Math.pow(second_[0], multiple(second_[1]));
    third_[0] = Math.pow(third_[0], multiple(third_[1]));
    
    let arr2 = [first_, second_, third_];
    
    //옵션계산
    for(let i = 0; i &amp;lt; arr2.length; i++){
        if(arr2[i].length &amp;gt; 2){
            let ch = arr2[i][2];
            switch(ch){
                case &quot;*&quot;:
                    star(arr2, i);
                    break;
                case &quot;#&quot;:
                    shop(arr2, i);
                    break;
            }
        }
    }
    
    //총합 구하기
    var answer = 0;
    for(let i = 0; i &amp;lt; arr2.length; i++){
        answer += arr2[i][0];
    }

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/208</guid>
      <comments>https://xd-jaewon.tistory.com/208#entry208comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:35:35 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] [1차] 비밀지도</title>
      <link>https://xd-jaewon.tistory.com/207</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;비밀지도&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dybBkn/btqVdeCbwlF/wjeloxLnqraUxpKZ1vEES1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dybBkn/btqVdeCbwlF/wjeloxLnqraUxpKZ1vEES1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dybBkn/btqVdeCbwlF/wjeloxLnqraUxpKZ1vEES1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdybBkn%2FbtqVdeCbwlF%2FwjeloxLnqraUxpKZ1vEES1%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;비밀지도&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;지도는 한 변의 길이가&lt;span&gt;&amp;nbsp;&lt;/span&gt;n인 정사각형 배열 형태로, 각 칸은&lt;span&gt;&amp;nbsp;&lt;/span&gt;공백(&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;) 또는벽(#&quot;) 두 종류로 이루어져 있다.&lt;/li&gt;
&lt;li&gt;전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각&lt;span&gt;&amp;nbsp;&lt;/span&gt;지도 1과&lt;span&gt;&amp;nbsp;&lt;/span&gt;지도 2라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다.&lt;/li&gt;
&lt;li&gt;지도 1과&lt;span&gt;&amp;nbsp;&lt;/span&gt;지도 2는 각각 정수 배열로 암호화되어 있다.&lt;/li&gt;
&lt;li&gt;암호화된 배열은 지도의 각 가로줄에서 벽 부분을&lt;span&gt;&amp;nbsp;&lt;/span&gt;1, 공백 부분을&lt;span&gt;&amp;nbsp;&lt;/span&gt;0으로 부호화했을 때 얻어지는 이진수에 해당하는 값의 배열이다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;네오가 프로도의 비상금을 손에 넣을 수 있도록, 비밀지도의 암호를 해독하는 작업을 도와줄 프로그램을 작성하라.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입력 형식&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;입력으로 지도의 한 변 크기&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;과 2개의 정수 배열&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr1,&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr2가 들어온다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 ≦&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;≦ 16&lt;/li&gt;
&lt;li&gt;arr1,&lt;span&gt;&amp;nbsp;&lt;/span&gt;arr2는 길이&lt;span&gt;&amp;nbsp;&lt;/span&gt;n인 정수 배열로 주어진다.&lt;/li&gt;
&lt;li&gt;정수 배열의 각 원소&lt;span&gt;&amp;nbsp;&lt;/span&gt;x를 이진수로 변환했을 때의 길이는&lt;span&gt;&amp;nbsp;&lt;/span&gt;n&lt;span&gt;&amp;nbsp;&lt;/span&gt;이하이다. 즉, 0 ≦&lt;span&gt;&amp;nbsp;&lt;/span&gt;x&lt;span&gt;&amp;nbsp;&lt;/span&gt;≦ 2n&lt;span&gt;&amp;nbsp;&lt;/span&gt;- 1을 만족한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;출력 형식&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;원래의 비밀지도를 해독하여&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;'#'&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;공백&lt;span&gt;으로 구성된 문자열 배열로 출력하라.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;입출력 예&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;매개변수&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[9, 20, 28, 18, 11]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[30, 1, 21, 17, 28]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;출력&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[&quot;#####&quot;,&quot;# # #&quot;, &quot;### #&quot;, &quot;# ##&quot;, &quot;#####&quot;]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 86px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;매개변수&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;arr1&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;[46, 33, 33 ,22, 31, 50]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;arr2&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;[27 ,56, 19, 14, 14, 10]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;출력&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;[&quot;######&quot;, &quot;### #&quot;, &quot;## ##&quot;, &quot; #### &quot;, &quot; #####&quot;, &quot;### # &quot;]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611912781746&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, arr1, arr2) {
    let num1, num2, s;
    let answer = [];
  
    for (let i=0; i&amp;lt;n; i++){
        num1 = arr1[i];
        num2 = arr2[i];
        s = '';
        for (let j=0; j&amp;lt;n; j++){
            s = (num1%2 + num2%2) ? '#'+s : ' '+s;
            num1 = Math.floor(num1/2);
            num2 = Math.floor(num2/2);
        }
        answer.push(s);
    }    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/207</guid>
      <comments>https://xd-jaewon.tistory.com/207#entry207comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:33:12 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 예산</title>
      <link>https://xd-jaewon.tistory.com/206</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;예산&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BECVO/btqU4YVlW7G/qjrDAJuvPKh61oBdwkbjpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BECVO/btqU4YVlW7G/qjrDAJuvPKh61oBdwkbjpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BECVO/btqU4YVlW7G/qjrDAJuvPKh61oBdwkbjpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBECVO%2FbtqU4YVlW7G%2FqjrDAJuvPKh61oBdwkbjpk%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;예산&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.&lt;/p&gt;
&lt;p&gt;물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.&lt;/p&gt;
&lt;p&gt;부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.&lt;/li&gt;
&lt;li&gt;d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.&lt;/li&gt;
&lt;li&gt;budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;d&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;budget&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,3,2,5,4]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[2,2,3,3]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611912161642&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(d, budget):
    d.sort()
    while budget &amp;lt; sum(d):
        d.pop()
    return len(d)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911972634&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(d, budget) {
    d.sort((a,b) =&amp;gt; a-b);
    let i = 0, j = 0;
    while(i &amp;lt; d.length){
        j += d[i];
        if(j &amp;gt; budget)
            break;
        i++;
    }
    return i;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611912551954&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

int solution(vector&amp;lt;int&amp;gt; d, int budget) {
    sort(d.begin(), d.end());
    
    int i = 0;
    for(i; i&amp;lt;d.size(); i++)
    {
        if(budget - d[i] &amp;gt;= 0)
            budget -= d[i];
        else break;
    }
    
    return i;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/206</guid>
      <comments>https://xd-jaewon.tistory.com/206#entry206comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:29:20 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 직사각형 별찍기</title>
      <link>https://xd-jaewon.tistory.com/205</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;직사각형 별찍기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFppi1/btqU4Z7Tke9/UPc15EZQ0VEOSXIS97MVeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFppi1/btqU4Z7Tke9/UPc15EZQ0VEOSXIS97MVeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFppi1/btqU4Z7Tke9/UPc15EZQ0VEOSXIS97MVeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFppi1%2FbtqU4Z7Tke9%2FUPc15EZQ0VEOSXIS97MVeK%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;직사각형 별찍기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n과 m은 각각 1000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911972634&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;process.stdin.setEncoding('utf8');
process.stdin.on('data', data =&amp;gt; {
    const n = data.split(&quot; &quot;);
    const a = Number(n[0]), b = Number(n[1]);
    let result = &quot;&quot;;
    for(let j = 0; j &amp;lt; b; j++){
        for(let i = 0; i &amp;lt; a; i++)
            result += &quot;*&quot;;
        result += &quot;\n&quot;;
    }
    console.log(result);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/205</guid>
      <comments>https://xd-jaewon.tistory.com/205#entry205comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:20:00 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] x만큼 간격이 있는 n개의 숫자</title>
      <link>https://xd-jaewon.tistory.com/204</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;x만큼 간격이 있는 n개의 숫자&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpYrDZ/btqVcr2PXPl/7z9e8iWPQFcYjLbVmsG8ak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpYrDZ/btqVcr2PXPl/7z9e8iWPQFcYjLbVmsG8ak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpYrDZ/btqVcr2PXPl/7z9e8iWPQFcYjLbVmsG8ak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpYrDZ%2FbtqVcr2PXPl%2F7z9e8iWPQFcYjLbVmsG8ak%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;x만큼 간격이 있는 n개의 숫자&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x는 -10000000 이상, 10000000 이하인 정수입니다.&lt;/li&gt;
&lt;li&gt;n은 1000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;x&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[2,4,6,8,10]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[4,8,12]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;-4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[-4, -8]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911730925&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(x, n):
    if x != 0:
        answer = list(range(x, x*n+x, x))
    else: answer = [0] * n
    return answer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911519129&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(x, n) {
    var answer = [];
    let i = x;
    for(let j = 0; j &amp;lt; n; j++){
        answer.push(i);
        i += x;
    }
       
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911658213&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

vector&amp;lt;long long&amp;gt; solution(int x, int n) {
    vector&amp;lt;long long&amp;gt; answer;
    for(int i = 0; i &amp;lt; n; i++)
        answer.push_back(x * (i + 1));
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/204</guid>
      <comments>https://xd-jaewon.tistory.com/204#entry204comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:17:58 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 행렬의 덧셈</title>
      <link>https://xd-jaewon.tistory.com/203</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;행렬의 덧셈&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/39tgB/btqU7cZSJOQ/qQPdP3BKDkhm2HI58xdSqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/39tgB/btqU7cZSJOQ/qQPdP3BKDkhm2HI58xdSqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/39tgB/btqU7cZSJOQ/qQPdP3BKDkhm2HI58xdSqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F39tgB%2FbtqU7cZSJOQ%2FqQPdP3BKDkhm2HI58xdSqk%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;행렬의 덧셈&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;행렬 arr1, arr2의 행과 열의 길이는 500을 넘지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[1,2],[2,3]]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[3,4],[5,6]]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[4,6],[7,9]]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[1],[2]]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[3],[4]]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[[4],[6]]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911419513&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr1, arr2):
    answer = []
    for i in range(len(arr1)):
        temp = [[]]
        for j in range(len(arr1[0])):        
            temp[0].append(arr1[i][j] + arr2[i][j])
        answer = answer + temp
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910936122&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr1, arr2) {
    var answer = [];
    
    for(let i = 0; i &amp;lt; arr1.length; i++){
        answer[i] = [];
        for(let j = 0; j &amp;lt; arr1[0].length; j++)
            answer[i][j] = arr1[i][j] + arr2[i][j];
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611911219933&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; solution(vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; arr1, vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; arr2) {
    vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; answer;
    vector &amp;lt;int&amp;gt; temp;
    
    for(int i = 0 ; i&amp;lt; arr1.size();i++){
        for(int j = 0; j&amp;lt; arr1[i].size();j++){
            temp.push_back(arr1[i][j]+arr2[i][j]);
        }
        answer.push_back(temp);
        temp.clear();
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/203</guid>
      <comments>https://xd-jaewon.tistory.com/203#entry203comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:10:26 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 핸드폰 번호 가리기</title>
      <link>https://xd-jaewon.tistory.com/202</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;핸드폰 번호 가리기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FSkOD/btqU4BTFBmE/UeCHqhkFe7yZSPgDlw2ThK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FSkOD/btqU4BTFBmE/UeCHqhkFe7yZSPgDlw2ThK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FSkOD/btqU4BTFBmE/UeCHqhkFe7yZSPgDlw2ThK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFSkOD%2FbtqU4BTFBmE%2FUeCHqhkFe7yZSPgDlw2ThK%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;핸드폰 번호 가리기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;*&lt;span&gt;으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;s는 길이 4 이상, 20이하인 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;phone_number&lt;/td&gt;
&lt;td&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;01033334444&lt;/td&gt;
&lt;td&gt;*******4444&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;027778888&lt;/td&gt;
&lt;td&gt;*****8888&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910607749&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(phone_number):
    return (len(phone_number) - 4) * '*' + phone_number[-4:]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910529159&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(phone_number) {
    var num = phone_number.split('');
    for(let i = 0; i &amp;lt; phone_number.length-4; i++)
        num[i] = &quot;*&quot;
    return  num.join('');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910845393&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

string solution(string phone_number) {
    for (int i = 0; i &amp;lt; phone_number.size() - 4; i++ )
        phone_number[i] = '*';
    
    return phone_number;
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/202</guid>
      <comments>https://xd-jaewon.tistory.com/202#entry202comment</comments>
      <pubDate>Sat, 30 Jan 2021 19:01:10 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 하샤드 수</title>
      <link>https://xd-jaewon.tistory.com/201</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;하샤드&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGGdqV/btqVbWPvwTL/rTlnIgUpq24Rp4atn19XC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGGdqV/btqVbWPvwTL/rTlnIgUpq24Rp4atn19XC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGGdqV/btqVbWPvwTL/rTlnIgUpq24Rp4atn19XC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGGdqV%2FbtqVbWPvwTL%2FrTlnIgUpq24Rp4atn19XC1%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;하샤드&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x는 1 이상, 10000 이하인 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910119540&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(x):
    st = str(x)
    a = 0
    for i in range(len(st)):
        a += int(st[i])

    return True if x%a == 0 else False&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910035461&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(x) {
    var num = 0;
    var str = x+&quot;&quot;;
    for(let i = 0; i &amp;lt; str.length; i++)
        num += Number(str[i]);
    return x%num === 0 ? true : false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611910351037&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

bool solution(int x) {
    int n = 0;
    int temp = x;
    while(temp &amp;gt; 0){
        n += temp%10;
        temp = temp/10;
    }
    return  x % n == 0 ? true : false;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/201</guid>
      <comments>https://xd-jaewon.tistory.com/201#entry201comment</comments>
      <pubDate>Sat, 30 Jan 2021 18:52:43 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 평균 구하기</title>
      <link>https://xd-jaewon.tistory.com/199</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;평균 구하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqW7KJ/btqUWtAcjvR/KyjlCzSJvrJzE638jZKutk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqW7KJ/btqUWtAcjvR/KyjlCzSJvrJzE638jZKutk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqW7KJ/btqUWtAcjvR/KyjlCzSJvrJzE638jZKutk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqW7KJ%2FbtqUWtAcjvR%2FKyjlCzSJvrJzE638jZKutk%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;평균 구하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;arr은 길이 1 이상, 100 이하인 배열입니다.&lt;/li&gt;
&lt;li&gt;arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,2,3,4]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2.5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[5,5]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611733265988&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr):
    return (sum(arr) / len(arr))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611733185995&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr) {
    var answer = 0;
    for(let i = 0; i &amp;lt; arr.length; i++)
        answer += arr[i];
    return answer/arr.length;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1611733216938&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr) {
    return arr.reduce((a, b) =&amp;gt; a + b) / arr.length;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stdcxx.apache.org/doc/stdlibref/accumulate.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;C++&amp;nbsp;Standard&amp;nbsp;Library&amp;nbsp;Reference&amp;nbsp;Guide&amp;nbsp;:&amp;nbsp;Numerics&amp;nbsp;-&amp;nbsp;accumulate()&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611733528066&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;accumulate()&quot; data-og-description=&quot;Apache C++ Standard Library Reference Guide accumulate() Library:&amp;nbsp;&amp;nbsp;Numerics Function Local Index No Entries Summary A generalized numeric operation that accumulates all elements within a range into a single value Synopsis #include namespace std { templat&quot; data-og-host=&quot;stdcxx.apache.org&quot; data-og-source-url=&quot;https://stdcxx.apache.org/doc/stdlibref/accumulate.html&quot; data-og-url=&quot;https://stdcxx.apache.org/doc/stdlibref/accumulate.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://stdcxx.apache.org/doc/stdlibref/accumulate.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stdcxx.apache.org/doc/stdlibref/accumulate.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;accumulate()&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Apache C++ Standard Library Reference Guide accumulate() Library:&amp;nbsp;&amp;nbsp;Numerics Function Local Index No Entries Summary A generalized numeric operation that accumulates all elements within a range into a single value Synopsis #include namespace std { templat&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stdcxx.apache.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1611733434620&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;numeric&amp;gt;

using namespace std;

double solution(vector&amp;lt;int&amp;gt; arr) {
    return  static_cast&amp;lt;double&amp;gt;(accumulate(arr.begin(), arr.end(), 0)) / arr.size();
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/199</guid>
      <comments>https://xd-jaewon.tistory.com/199#entry199comment</comments>
      <pubDate>Thu, 28 Jan 2021 17:45:34 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 콜라츠 추측</title>
      <link>https://xd-jaewon.tistory.com/198</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;콜라츠 추측&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bu7Z8R/btqUZvRwkef/7bbiIqMmHkhHR6nqMoub51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bu7Z8R/btqUZvRwkef/7bbiIqMmHkhHR6nqMoub51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bu7Z8R/btqUZvRwkef/7bbiIqMmHkhHR6nqMoub51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbu7Z8R%2FbtqUZvRwkef%2F7bbiIqMmHkhHR6nqMoub51%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;콜라츠 추측&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;입력된 수가 짝수라면 2로 나눕니다.&lt;/li&gt;
&lt;li&gt;입력된 수가 홀수라면 3을 곱하고 1을 더합니다.&lt;/li&gt;
&lt;li&gt;결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;예를 들어, 입력된 수가 6이라면 6&amp;rarr;3&amp;rarr;10&amp;rarr;5&amp;rarr;16&amp;rarr;8&amp;rarr;4&amp;rarr;2&amp;rarr;1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 &amp;ndash;1을 반환해 주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;입력된 수,&lt;span&gt;&amp;nbsp;&lt;/span&gt;num은 1 이상 8000000 미만인 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;626331&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;-1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611732503131&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(num):
    answer = 0
    while(num != 1):
        if answer &amp;gt;= 500 :
            return -1;
        if num%2 == 0 :
            num = num/2
        else :
            num = num*3+1
        answer = answer + 1
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611731683046&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num) {
    var answer = 0;
    while(num != 1){
        if(answer &amp;gt; 500)
            return -1;
        if(num %2 === 0)
            num = num/2;
        else
            num = num*3+1;
        answer++;
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611732255983&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(int num) {
    int answer = 0;
    long number = num;
    while(number!=1) {
        if(answer&amp;gt;=500) {
            return -1;
        }
        if(number%2==0)
            number /= 2;
        else
            number = number * 3 + 1;
        answer++;
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/198</guid>
      <comments>https://xd-jaewon.tistory.com/198#entry198comment</comments>
      <pubDate>Thu, 28 Jan 2021 17:28:29 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 1단원 2장. 변수와 자료형 (2)</title>
      <link>https://xd-jaewon.tistory.com/200</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;변수와 자료형 (2)&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOH32T/btqUYFUBvYt/19ZelYMrb8droWClxnq7PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOH32T/btqUYFUBvYt/19ZelYMrb8droWClxnq7PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOH32T/btqUYFUBvYt/19ZelYMrb8droWClxnq7PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOH32T%2FbtqUYFUBvYt%2F19ZelYMrb8droWClxnq7PK%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;변수와 자료형 (2)&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#2.2. 나를&amp;nbsp;괴롭히는&amp;nbsp;널(Null)!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;코틀린은 변수를 사용할 때 반드시 값이 할당되어 있어야 한다는 원칙이 있습니다. 만약 값이 할당되지 않은 변수를 사용하면 코틀린에서 오류가 발생합니다. 한편 값이 없는 상태는 null이라고 부릅니다. 우리를 괴롭히는 널(null)에 대해 알아봅시다.&lt;/p&gt;
&lt;p&gt;- 핵심 키워드&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Non-null 타입과 nullable 타입 (타입?)&lt;/li&gt;
&lt;li&gt;NPE&lt;/li&gt;
&lt;li&gt;세이프콜(?.)&lt;/li&gt;
&lt;li&gt;넌널 단정 기호(!!.)&lt;/li&gt;
&lt;li&gt;엘비스 연산자 (?:)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 널을 허용하는 변수 선언하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;코틀린은 변수를 사용할 때 반드시 그 값이 할당되어 있어야 한다.&lt;/p&gt;
&lt;p&gt;값이 할당되지 않은 변수를 사용하면 에러가 발생한다.&lt;/p&gt;
&lt;p&gt;이러한 값이 없는 상태를 null이라고 부르며 널 변수 허용을 위해서는 물음표 `?` 기호를 사용하여야 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611741668029&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1 : String = &quot;Hello Kotlin&quot;
    str1 = null  // null을 허용하지 않음(오류 발생)
    println(&quot;str1: $str1&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드를 실행하면 null 값이 할당될 수 없다는 오류 메시지를 마주할 수 있다.&lt;/p&gt;
&lt;p&gt;앞서 명시한 대로 물음표 기호를 사용해 다시 선언해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1611741707214&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1 : String? = &quot;Hello Kotlin&quot;
    str1 = null
    println(&quot;str1: $str1&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;String과 String? 은 서로 다른 자료형임을 확실히 이해해야 할 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;null을 허용한다면, null을 사용할 수 없는 함수에서 사용할 수 없게 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1611741857476&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1 : String? = &quot;Hello Kotlin&quot;
    str1 = null
    println(&quot;str1: $str1 lenghth: ${str1.length}&quot;) // null을 허용하면 length가 실행될 수 없음
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 예제에서 str1 변수에 문자열이 할당되어 있는 상태라면 길이를 구할 수 있겠지만,&lt;/p&gt;
&lt;p&gt;null이 할당되어 있는 상태라면 문자열의 길이를 구할 때 NPE가 발생할 것이다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/null-safety.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is NPE in Kotiln? - Null Safety&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611741977145&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Null Safety - Kotlin Programming Language&quot; data-og-description=&quot; &quot; data-og-host=&quot;kotlinlang.org&quot; data-og-source-url=&quot;https://kotlinlang.org/docs/reference/null-safety.html&quot; data-og-url=&quot;https://kotlinlang.org/docs/reference/null-safety.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/n0oX7/hyI59dIfN7/SksHtOHLpCs9cUuK4IlX91/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250&quot;&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/null-safety.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kotlinlang.org/docs/reference/null-safety.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/n0oX7/hyI59dIfN7/SksHtOHLpCs9cUuK4IlX91/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Null Safety - Kotlin Programming Language&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;kotlinlang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;String? 형에서는 세이프 콜(?.)이나 non-null 단정 기호(!!.)만 허용한다는 팁을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;length의 접근하려면 이 두 기법 중 하나를 사용하여야 할 것이다.&lt;/p&gt;
&lt;pre id=&quot;code_1611742042712&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;println(&quot;str1: $str1 length: ${str1?.length}&quot;)
println(&quot;str1: $str1 length: ${str1!!.length}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;세이프콜의 경우는 변수 str1을 검사한 다음 null이 아니면 멤버 함수에 접근하도록 동작하고,&lt;/p&gt;
&lt;p&gt;non-null 단정기호의 경우 컴파일러가 null이 아님을 알려주어 null 검사를 수행하지 않도록 한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611742117544&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1 : String? = &quot;Hello Kotlin&quot;
    str1 = null
    // 조건식을 통해 null 상태 검사
    val len = if(str1 != null) str1.length else -1 
    println(&quot;str1: $str1 length: ${len}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 처럼 조건식을 통해서도 null을 허용한 변수를 검사할 수 있다.&lt;/p&gt;
&lt;p&gt;위 코드에서는 str1 != null을 통해 str1 변수에 할당된 값이 null이 아닌 경우에만&lt;/p&gt;
&lt;p&gt;length로의 접근을 허용하고 있다.&lt;/p&gt;
&lt;p&gt;(그렇지 않다면 len의 값으로 -1이 호출된다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;null을 허용한 변수를 조금 더 안전하고 간단하게 사용하려면 세이프 콜과 엘비스 연산자를 함께 사용하면 된다.&lt;/p&gt;
&lt;p&gt;엘비스 연산자는 변수가 null인지 아닌지 검사하여 null이 아니라면 왼쪽의 식을 그대로 실행하고,&lt;/p&gt;
&lt;p&gt;null이라면 오른쪽의 식을 실행한다.&lt;/p&gt;
&lt;p&gt;C++나 JavaScript의 삼항 연산자와 유사하다.&lt;/p&gt;
&lt;pre id=&quot;code_1611742282114&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1 : String? = &quot;Hello Kotlin&quot;
    str1 = null
    println(&quot;str1: $str1 length: ${str1?.length ?: -1}&quot;) // 세이프 콜과 엘비스 연산자 활용
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 요약&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kotlin에서는 기본적으로 NotNull이고 Nullable 표현에만 `?`가 사용된다.&lt;/li&gt;
&lt;li&gt;세이프 콜 : ?.&lt;/li&gt;
&lt;li&gt;non-null 단정 기호 : !!.&lt;/li&gt;
&lt;li&gt;if-else를 활용한 null 검사&lt;/li&gt;
&lt;li&gt;엘비스 연산자를 사용한 null 검사&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#2-3. 검사와 자료형을 변환해보기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;코틀린에서는 자료형이 다르면 변환 함수를 사용해야 하지만 자바에서 자료형이 서로 다를 때 자동적으로 변환됩니다. 만일 좀 더 추상적인 상위 자료형을 사용하면 자료형은 해당 할당 값에 따라 스마트 캐스팅 됩니다.&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;box-sizing: border-box; color: #666666; font-family: &amp;amp;quot; 나눔고딕&amp;amp;quot;,nanumgothic,&amp;amp;quot;맑은 고딕&amp;amp;quot;,malgun gothic,&amp;amp;quot;apple sd gothic neo&amp;amp;quot;,&amp;amp;quot;돋움&amp;amp;quot;,dotum,helvetica,arial,sans-serif; font-size: 14px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; orphans: 2; overflow-wrap: break-word; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; -webkit-text-stroke-width: 0px; white-space: normal; word-break: break-all; word-spacing: 0px;&quot;&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;자료형의 변환&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;스마트 캐스팅&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;기본형과 참조형의 비교&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;Number형&lt;/li&gt;
&lt;li style=&quot;box-sizing: border-box; overflow-wrap: break-word; word-break: break-all;&quot;&gt;Any형&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 코틀린 자료형 변환 함수&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;코틀린의 자료형은 모두 참조형으로 선언된다.&lt;/p&gt;
&lt;p&gt;코틀린에서 서로 다른 자료형을 비교하거나 연산하고자 하는 경우에,&lt;/p&gt;
&lt;p&gt;자료형 변환이 이루어지지 않는다면 이를 동작할 수 없다.&lt;/p&gt;
&lt;p&gt;자료형 변환 메서드를 통해 자료형 변환을 수행할 수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;toByte: Byte&lt;/li&gt;
&lt;li&gt;toLong: Long&lt;/li&gt;
&lt;li&gt;toShort: Short&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/li&gt;
&lt;li&gt;toFloat: Float&lt;/li&gt;
&lt;li&gt;toInt: Int&lt;/li&gt;
&lt;li&gt;toDouble: Double&lt;/li&gt;
&lt;li&gt;toChar: Char&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 이중 등호와 삼중 등호&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자료형을 비교할 때는 단순히 값만 비교하는 방법과 참조 주소까지 비교하는 방법이 있다.&lt;/p&gt;
&lt;p&gt;단순히 값만 비교하고자 할 때에는 이중 등호를 사용하고,&lt;/p&gt;
&lt;p&gt;참조 주소를 비교하려면 삼중 등호를 사용하여야 한다.&lt;/p&gt;
&lt;p&gt;이중 등호의 경우 참조에 상관없이 값이 동일하면 true를, 다르면 false를 반환한다.&lt;/p&gt;
&lt;p&gt;삼중 등호는 값과 상관없이 참조가 동일하면 true를, 다르면 fasle를 반환한다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611742670345&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val a: Int = 128
val b: Int = 128
println(a == b) // true
println(a === b) // true

val a: Int = 128
val b: Int? = 128
println(a == b) // true
println(a === b) // false&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;단순히 int형으로 선언한 변수 a와 b는 참조와 값이 모두 같음을 알 수 있다.&lt;/p&gt;
&lt;p&gt;하지만 null을 허용한 변수는 같은 값을 저장해도, 같은 참조를 수행하지 않는 것을 알 수 있다.&lt;/p&gt;
&lt;p&gt;이는 변수 a는 스텍에 값을 저장하지만,&lt;/p&gt;
&lt;p&gt;null을 허용한 b는 참조형으로 힙에 참조 주소가 저장되기 때문이다.&lt;/p&gt;
&lt;pre id=&quot;code_1611742778694&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    val a: Int = 128
    val b = a

    println(a === b) // 자료형이 기본형인 int가 되어 값이 동일 true
    val c: Int? = a
    val d: Int? = a
    val e: Int? = c
    println(c == d) // true
    println(c === d) // false
    println(c === e) // true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 기본형값과 참조형값의 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KFLuh/btqUOB7wbrR/eDNHKvK0skn4iL4e8LDiO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KFLuh/btqUOB7wbrR/eDNHKvK0skn4iL4e8LDiO0/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/59969&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KFLuh/btqUOB7wbrR/eDNHKvK0skn4iL4e8LDiO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKFLuh%2FbtqUOB7wbrR%2FeDNHKvK0skn4iL4e8LDiO0%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/59969&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;a와 b는 참조형인 int형으로 선언되었지만 코틀린 컴파일러에 의해 기본형으로 변환되어 저장된다.&lt;/p&gt;
&lt;p&gt;그래서 프로그램을 실행하면 a와 b는 스택에 주소가 아닌 128이라는 값이 저장된다.&lt;/p&gt;
&lt;p&gt;null을 허용한 변수 c, d는 참조형으로 저장된다.&lt;/p&gt;
&lt;p&gt;그래서 a에 들어있는 값인 128이 저장되는 것이 아니라&lt;/p&gt;
&lt;p&gt;128을 가리키고 있는 서로 다른 A1과 A2가 저장되는 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 스마트 캐스트&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;만약 어떤 값이 경우에 따라 정수일 수도 있고 실수일 수도 있다면 어떻게 해야 할까?&lt;/p&gt;
&lt;p&gt;물론 자료형을 필요에 따라 변환해주어도 좋겠지만, 스마트캐스트를 사용하는 것이 편리하다.&lt;/p&gt;
&lt;p&gt;스마트 캐스트란 변수에 할당되는 값에 따라 자료형을 결정한다.&lt;/p&gt;
&lt;p&gt;대표적인 스마트 캐스트가 적용되는 자료형은 Number가 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1611743127409&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var test: Number = 12.2 // 12.2에 의해 test는 Float형으로 스마트 캐스트
    println(&quot;$test&quot;)

    test = 12  // Int형으로 스마트 캐스트
    println(&quot;$test&quot;)

    test = 120L // Long형으로 스마트 캐스트
    println(&quot;$test&quot;)

    test += 12.0f  // Float형으로 스마트 캐스트
    println(&quot;$test&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Number는 숫자를 저장하기 위한 특수한 자료형 객체를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.javatpoint.com/kotlin-smart-cast&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kotlin Smart Cast&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611743471780&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Kotlin Smart Cast - javatpoint&quot; data-og-description=&quot;Kotlin Smart Cast with introduction, architecture, class, object, inheritance, interface, generics, delegation, functions, mixing java and kotlin, java vs kotlin etc.&quot; data-og-host=&quot;www.javatpoint.com&quot; data-og-source-url=&quot;https://www.javatpoint.com/kotlin-smart-cast&quot; data-og-url=&quot;https://www.javatpoint.com/kotlin-smart-cast&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.javatpoint.com/kotlin-smart-cast&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.javatpoint.com/kotlin-smart-cast&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Kotlin Smart Cast - javatpoint&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Kotlin Smart Cast with introduction, architecture, class, object, inheritance, interface, generics, delegation, functions, mixing java and kotlin, java vs kotlin etc.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.javatpoint.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) is를 사용한 자료형 검사&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;변수의 자료형을 알아내는 방법으로서 is를 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;is는 좌항의 변수가 우항의 자료형과 같으면 true를 아니면 false를 반환한다.&lt;/p&gt;
&lt;pre id=&quot;code_1611743411436&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {

    val num = 256

    if (num is Int) { // num이 Int형일 때
        print(num)
    } else if (num !is Int) { // num이 Int형이 아닐 때, !(num is Int) 와 동일
        print(&quot;Not a Int&quot;)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6) Any를 통한 묵시적 변환&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;is는 변수의 자료형을 검사한 다음 그 변수를 해당 자료형으로 변환하는 기능도 있다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/typecasts.html#type-checks-and-casts-is-and-as&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Type&amp;nbsp;Checks&amp;nbsp;and&amp;nbsp;Casts:&amp;nbsp;'is'&amp;nbsp;and&amp;nbsp;'as'&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611743550104&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Type Checks and Casts: 'is' and 'as' - Kotlin Programming Language&quot; data-og-description=&quot; &quot; data-og-host=&quot;kotlinlang.org&quot; data-og-source-url=&quot;https://kotlinlang.org/docs/reference/typecasts.html#type-checks-and-casts-is-and-as&quot; data-og-url=&quot;https://kotlinlang.org/docs/reference/typecasts.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwGaPz/hyI52r75s7/DHq5ltPpkPugVMnhtpGKW0/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250&quot;&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/typecasts.html#type-checks-and-casts-is-and-as&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kotlinlang.org/docs/reference/typecasts.html#type-checks-and-casts-is-and-as&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwGaPz/hyI52r75s7/DHq5ltPpkPugVMnhtpGKW0/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Type Checks and Casts: 'is' and 'as' - Kotlin Programming Language&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;kotlinlang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;자료형이 정해지지 않은 경우에 Any를 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;Any는 모든 클래스의 뿌리이며 Int나 String 역시 Any형의 자식 클래스이다.&lt;/p&gt;
&lt;p&gt;Any는 언제든 필요한 자동형으로 자동 변환할 수 있다.&lt;/p&gt;
&lt;p&gt;즉, Any 형을 사용하면 자료형을 결정하지 않은 채 변수를 선언할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1611743558686&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var a: Any = 1 // Any형 a는 1로 초기화될 때 Int형이 됨
    a = 20L // Int형이였던 a는 변경된 값 20L에의해 Long이 됨
    println(&quot;a: $a type: ${a.javaClass}&quot;)  // a의 자바 기본형을 출력하면 long이 나옴
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;처음에 a의 자료형은 int형이지만, 이후 변경된 값에 의해 Long형으로 변환된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611743714153&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    checkArg(&quot;Hello&quot;) // 문자열을 인자로 넣음
    checkArg(5) // 숫자를 인자로 넣음
}

fun checkArg(x: Any) {  // 인자를 Any형으로 받음
    if (x is String) {
        println(&quot;x is String: $x&quot;)
    }
    if (x is Int) {
        println(&quot;x is Int: $x&quot;)
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;main 함수에서 checkArg라는 함수를 사용하고 있으며, checkArg의 인자는 Any형인 x이다.&lt;/p&gt;
&lt;p&gt;이 함수를 사용할 때 x에 들어오는 인자의 자료형에 따라 문자열 혹은 정수형등으로 받아 처리할 수 있게 된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/200</guid>
      <comments>https://xd-jaewon.tistory.com/200#entry200comment</comments>
      <pubDate>Wed, 27 Jan 2021 19:36:29 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 최대공약수와 최소공배수</title>
      <link>https://xd-jaewon.tistory.com/197</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;최대공약수와 최소공배수&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CGR15/btqUUqX0qYr/PaboxbhnU7hO1FyLYLSfX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CGR15/btqUUqX0qYr/PaboxbhnU7hO1FyLYLSfX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CGR15/btqUUqX0qYr/PaboxbhnU7hO1FyLYLSfX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCGR15%2FbtqUUqX0qYr%2FPaboxbhnU7hO1FyLYLSfX0%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;최대공약수와 최소공배수&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;두 수는 1이상 1000000이하의 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;m&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[3, 12]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1, 10]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611730649583&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n, m):
    min_ = min(n, m)
    while min_ &amp;gt; 0:
        if(n % min_ == 0 and m % min_ == 0) :
            common_max = min_;
            break
        min_ = min_-1
        
    return [common_max, common_max * (n / common_max)* (m / common_max)]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611730184626&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, m) {
    var measureN = [];
    var measureM = [];
    
    for(let i = 1; i &amp;lt;= n; i++)
        if(n % i === 0) measureN.push(i);
    for(let i = 1; i &amp;lt;= m; i++)
        if(m % i === 0) measureM.push(i);
    measureN.sort((a,b) =&amp;gt; b-a);
    measureM.sort((a,b) =&amp;gt; b-a);

    let max = 0;
    while(max &amp;lt; measureN.length){
        if(measureM.indexOf(measureN[max]) != -1){
            max = measureN[max];
            break;
        }           
        max++
    }
    return max === 1 ? [1, n*m] : [max, max*(n/max)*(m/max)];
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1611730378609&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, m) {
    let min = Math.min(n, m);
    let common_max = 1;
    while(min &amp;gt; 0){
        if(n % min === 0 &amp;amp;&amp;amp; m % min === 0){
            common_max = min;
            break;
        }
        min--;
    }

    return [common_max, common_max * (n / common_max)* (m / common_max)];
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611731108981&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

vector&amp;lt;int&amp;gt; solution(int n, int m) {
    int min_ = min(n, m);
    int common_max = 1;
    while(min_ &amp;gt; 0){
        if(n % min_ == 0 &amp;amp;&amp;amp; m % min_ == 0){
            common_max = min_;
            break;
        }
        min_--;
    }
    return vector&amp;lt;int&amp;gt;{common_max, common_max * (n / common_max)* (m / common_max)};
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/197</guid>
      <comments>https://xd-jaewon.tistory.com/197#entry197comment</comments>
      <pubDate>Wed, 27 Jan 2021 16:05:19 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] [카카오 인턴] 키패드 누르기</title>
      <link>https://xd-jaewon.tistory.com/196</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;[카카오 인턴] 키패드 누르기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMBZyn/btqUWtUjvwu/h7SJUCAzuHIrjEOAigUYGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMBZyn/btqUWtUjvwu/h7SJUCAzuHIrjEOAigUYGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMBZyn/btqUWtUjvwu/h7SJUCAzuHIrjEOAigUYGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMBZyn%2FbtqUWtUjvwu%2Fh7SJUCAzuHIrjEOAigUYGK%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;[카카오 인턴] 키패드 누르기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tggrM/btqUOBMMwa3/mxUZPDXXI5qR8FuuK4qtPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tggrM/btqUOBMMwa3/mxUZPDXXI5qR8FuuK4qtPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tggrM/btqUOBMMwa3/mxUZPDXXI5qR8FuuK4qtPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtggrM%2FbtqUOBMMwa3%2FmxUZPDXXI5qR8FuuK4qtPK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다.&lt;br /&gt;맨 처음 왼손 엄지손가락은&lt;span&gt;&amp;nbsp;&lt;/span&gt;*&lt;span&gt;&amp;nbsp;&lt;/span&gt;키패드에 오른손 엄지손가락은&lt;span&gt;&amp;nbsp;&lt;/span&gt;#&lt;span&gt;&amp;nbsp;&lt;/span&gt;키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다.&lt;/li&gt;
&lt;li&gt;왼쪽 열의 3개의 숫자&lt;span&gt;&amp;nbsp;&lt;/span&gt;1,&lt;span&gt;&amp;nbsp;&lt;/span&gt;4,&lt;span&gt;&amp;nbsp;&lt;/span&gt;7을 입력할 때는 왼손 엄지손가락을 사용합니다.&lt;/li&gt;
&lt;li&gt;오른쪽 열의 3개의 숫자&lt;span&gt;&amp;nbsp;&lt;/span&gt;3,&lt;span&gt;&amp;nbsp;&lt;/span&gt;6,&lt;span&gt;&amp;nbsp;&lt;/span&gt;9를 입력할 때는 오른손 엄지손가락을 사용합니다.&lt;/li&gt;
&lt;li&gt;가운데 열의 4개의 숫자&lt;span&gt;&amp;nbsp;&lt;/span&gt;2,&lt;span&gt;&amp;nbsp;&lt;/span&gt;5,&lt;span&gt;&amp;nbsp;&lt;/span&gt;8,&lt;span&gt;&amp;nbsp;&lt;/span&gt;0을 입력할 때는 두 엄지손가락의 현재 키패드의 위치에서 더 가까운 엄지손가락을 사용합니다.&lt;br /&gt;4-1. 만약 두 엄지손가락의 거리가 같다면, 오른손잡이는 오른손 엄지손가락, 왼손잡이는 왼손 엄지손가락을 사용합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;순서대로 누를 번호가 담긴 배열 numbers, 왼손잡이인지 오른손잡이인 지를 나타내는 문자열 hand가 매개변수로 주어질 때, 각 번호를 누른 엄지손가락이 왼손인 지 오른손인 지를 나타내는 연속된 문자열 형태로 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;numbers 배열의 크기는 1 이상 1,000 이하입니다.&lt;/li&gt;
&lt;li&gt;numbers 배열 원소의 값은 0 이상 9 이하인 정수입니다.&lt;/li&gt;
&lt;li&gt;hand는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;left&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;right&quot;&lt;span&gt;&amp;nbsp;&lt;/span&gt;입니다.
&lt;ul&gt;
&lt;li&gt;&quot;left&quot;는 왼손잡이,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&quot;right&quot;는 오른손잡이를 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;왼손 엄지손가락을 사용한 경우는&lt;span&gt;&amp;nbsp;&lt;/span&gt;L, 오른손 엄지손가락을 사용한 경우는&lt;span&gt;&amp;nbsp;&lt;/span&gt;R을 순서대로 이어붙여 문자열 형태로 return 해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725944184&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function handtoLF(s){
    return s === &quot;left&quot; ? true : false;
}

function solution(numbers, hand) {
    var left = 10;
    var right = 11;
    
    /*
    var push2 = [3, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 4];
    var push5 = [2, 2, 1, 2, 1, 0, 1, 2, 1, 2, 3, 3];
    var push8 = [1, 3, 2, 3, 2, 1, 2, 1, 0, 1, 2, 2];
    var push0 = [0, 4, 3, 4, 3, 2, 3, 2, 1, 2, 1, 1];
    */
    var push = [[3, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 4],
                [2, 2, 1, 2, 1, 0, 1, 2, 1, 2, 3, 3],
                [1, 3, 2, 3, 2, 1, 2, 1, 0, 1, 2, 2],
                [0, 4, 3, 4, 3, 2, 3, 2, 1, 2, 1, 1]];
    var answer = &quot;&quot;;
    
    for(let i = 0; i &amp;lt; numbers.length; i++){
        if(numbers[i] === 1 || numbers[i] === 4 || numbers[i] === 7){
            left = numbers[i];
            answer += &quot;L&quot;;
        } else if(numbers[i] === 3 || numbers[i] === 6 || numbers[i] === 9) {
            right = numbers[i];
            answer += &quot;R&quot;;
        } else {
            let j = 0;
            switch(numbers[i]){
                case 2:
                    j = 0; break;
                case 5:
                    j = 1; break;
                case 8:
                    j = 2; break;
                case 0:
                    j = 3; break;
            }
            
            console.log(&quot;j = &quot;, j, &quot;, left = &quot;, left, &quot;, right = &quot;, right, &quot;push[j][left] = &quot;, push[j][left], &quot;push[j][right] = &quot;, push[j][right]);
            
            if(push[j][left] &amp;lt; push[j][right]){
                left = numbers[i];
                answer += &quot;L&quot;;
            } else if(push[j][left] &amp;gt; push[j][right]){
                right = numbers[i];
                answer += &quot;R&quot;;
                
            } else{
                if(handtoLF(hand)){
                    left = numbers[i];
                    answer += &quot;L&quot;;
                } else {
                     right = numbers[i];
                    answer += &quot;R&quot;;
                }
            }
        }
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/196</guid>
      <comments>https://xd-jaewon.tistory.com/196#entry196comment</comments>
      <pubDate>Wed, 27 Jan 2021 14:39:09 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 짝수와 홀수</title>
      <link>https://xd-jaewon.tistory.com/195</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;짝수와 홀수&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sm1CD/btqUWtGKBRh/oxPYKLzqoBdkgg8sKCORs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sm1CD/btqUWtGKBRh/oxPYKLzqoBdkgg8sKCORs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sm1CD/btqUWtGKBRh/oxPYKLzqoBdkgg8sKCORs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsm1CD%2FbtqUWtGKBRh%2FoxPYKLzqoBdkgg8sKCORs1%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;짝수와 홀수&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;정수 num이 짝수일 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Even&lt;span&gt;을 반환하고 홀수인 경우&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Odd&lt;span&gt;를 반환하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;num은 int 범위의 정수입니다.&lt;/li&gt;
&lt;li&gt;0은 짝수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;num&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;Odd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;Even&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725686154&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(num):
    if(num%2 == 0):
        return &quot;Even&quot;
    else:
        return &quot;Odd&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725574971&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(num) {
    return num%2 != 0 ? &quot;Odd&quot; : &quot;Even&quot;; 
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725761112&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

string solution(int num) {
    return num%2 == 0 ? &quot;Even&quot; : &quot;Odd&quot;;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/195</guid>
      <comments>https://xd-jaewon.tistory.com/195#entry195comment</comments>
      <pubDate>Wed, 27 Jan 2021 14:36:09 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 제일 작은 수 제거하기</title>
      <link>https://xd-jaewon.tistory.com/194</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;제일 작은 수 제거하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqjy3U/btqUSqKMv37/D8QyzxL98a4SnZwaRhNVD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqjy3U/btqUSqKMv37/D8QyzxL98a4SnZwaRhNVD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqjy3U/btqUSqKMv37/D8QyzxL98a4SnZwaRhNVD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqjy3U%2FbtqUSqKMv37%2FD8QyzxL98a4SnZwaRhNVD1%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;제일 작은 수 제거하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;arr은 길이 1 이상인 배열입니다.&lt;/li&gt;
&lt;li&gt;인덱스 i, j에 대해 i &amp;ne; j이면 arr[i] &amp;ne; arr[j] 입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[4,3,2,1]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[4,3,2]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[10]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[-1]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725343104&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr):
    arr.remove(min(arr))
    if arr:
        return arr
    else:
        return [-1]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611724646311&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr) {
    var answer = arr.slice();
    answer.sort((a,b)=&amp;gt;a-b);
    arr.splice(arr.indexOf(answer[0]), 1);
    return arr.length != 0 ? arr : [-1];
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611725074922&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; arr) {
    vector&amp;lt;int&amp;gt; answer=arr;

    sort(arr.begin(),arr.end());

    for(int i=0;i&amp;lt;answer.size();i++){
        if(answer[i]==arr[0]){
            answer.erase(answer.begin()+i);
            break;
        }   
    }

    return answer.empty() ? vector&amp;lt;int&amp;gt;(1, -1) : answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/194</guid>
      <comments>https://xd-jaewon.tistory.com/194#entry194comment</comments>
      <pubDate>Wed, 27 Jan 2021 14:29:11 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 정수 제곱근 판별</title>
      <link>https://xd-jaewon.tistory.com/193</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;정수 제곱근 판별&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQY6pg/btqUSpE2TXU/F9IK10hQGmmBJTltFR9Ws0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQY6pg/btqUSpE2TXU/F9IK10hQGmmBJTltFR9Ws0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQY6pg/btqUSpE2TXU/F9IK10hQGmmBJTltFR9Ws0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQY6pg%2FbtqUSpE2TXU%2FF9IK10hQGmmBJTltFR9Ws0%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;정수 제곱근 판별&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 1이상, 50000000000000 이하인 양의 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;121&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;144&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;-1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611722869652&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    for x in range(1,n+1) :
        if x ** 2 == n :
            return (x+1) ** 2
    return -1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611722639205&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    return Math.sqrt(n) === Math.floor(Math.sqrt(n)) ? Math.pow((Math.sqrt(n)+1), 2) : -1;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611724564110&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;math.h&amp;gt;
using namespace std;

long long solution(long long n) {
    long long answer = sqrt(n);

    return powl(answer, 2) == n ? powl(answer + 1, 2) : -1;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/193</guid>
      <comments>https://xd-jaewon.tistory.com/193#entry193comment</comments>
      <pubDate>Wed, 27 Jan 2021 14:16:07 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 정수 내림차순으로 배치하기</title>
      <link>https://xd-jaewon.tistory.com/192</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;정수 내림차순으로 배치하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BA2pm/btqUYfBhKh0/TKvck9jZY35ByqmtOwX8o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BA2pm/btqUYfBhKh0/TKvck9jZY35ByqmtOwX8o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BA2pm/btqUYfBhKh0/TKvck9jZY35ByqmtOwX8o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBA2pm%2FbtqUYfBhKh0%2FTKvck9jZY35ByqmtOwX8o0%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;정수 내림차순으로 배치하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 1이상 8000000000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;118372&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;873211&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611722111942&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    temp = list(str(n))
    temp.sort(reverse = True)
    return int(&quot;&quot;.join(temp))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611722056149&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    var str = n+&quot;&quot;;
    var arr = [];
    for(let i = 0; i &amp;lt; str.length; i++)
        arr.push(Number(str[i]));
    arr.sort((a,b)=&amp;gt;b-a);
    return Number(arr.join(''));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cpp/standard-library/algorithm-functions?view=msvc-160#sort&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Algorithm Function sort&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611722404585&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;&amp;lt;algorithm&amp;gt; functions&quot; data-og-description=&quot;Learn more about: &amp;lt;algorithm&amp;gt; functions&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/cpp/standard-library/algorithm-functions?view=msvc-160#sort&quot; data-og-url=&quot;https://docs.microsoft.com/en-us/cpp/standard-library/algorithm-functions&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bvot0d/hyI4vo00q4/iomaEAiJT7Utr3zoE2Uvvk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cpp/standard-library/algorithm-functions?view=msvc-160#sort&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/cpp/standard-library/algorithm-functions?view=msvc-160#sort&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bvot0d/hyI4vo00q4/iomaEAiJT7Utr3zoE2Uvvk/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;functions&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Learn more about:  functions&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cplusplus.com/reference/functional/greater/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;C++ greater Reference&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611722429915&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;greater - C++ Reference&quot; data-og-description=&quot;class template &amp;lt;functional&amp;gt; std::greater template struct greater; Function object class for greater-than inequality comparison Binary function object class whose call returns whether the its first argument compares greater than the second (as returned by o&quot; data-og-host=&quot;www.cplusplus.com&quot; data-og-source-url=&quot;http://www.cplusplus.com/reference/functional/greater/&quot; data-og-url=&quot;http://www.cplusplus.com/reference/functional/greater/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://www.cplusplus.com/reference/functional/greater/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.cplusplus.com/reference/functional/greater/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;greater - C++ Reference&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;class template  std::greater template struct greater; Function object class for greater-than inequality comparison Binary function object class whose call returns whether the its first argument compares greater than the second (as returned by o&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.cplusplus.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1611722285074&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

long long solution(long long n) {
   long long answer = 0LL;

    vector&amp;lt;int&amp;gt; temp;

    while(true) {
        temp.push_back(n%10);
        if(n/10==0) break;
        else n = n/10;
    }
    
    sort(temp.begin(), temp.end(), greater&amp;lt;int&amp;gt;());
    
    int i=1;
    while(!temp.empty()) {
        int val = temp.back();
        temp.pop_back();
        answer = answer + val*i;
        i=i*10;
    }

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/192</guid>
      <comments>https://xd-jaewon.tistory.com/192#entry192comment</comments>
      <pubDate>Wed, 27 Jan 2021 13:40:32 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 1단원 2장. 변수와 자료형 (1)</title>
      <link>https://xd-jaewon.tistory.com/191</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;변수와 자료형, 연산자&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pSVzX/btqUvCMrZGK/tU8aMOl5inUCbIhcL1g8Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pSVzX/btqUvCMrZGK/tU8aMOl5inUCbIhcL1g8Y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pSVzX/btqUvCMrZGK/tU8aMOl5inUCbIhcL1g8Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpSVzX%2FbtqUvCMrZGK%2FtU8aMOl5inUCbIhcL1g8Y1%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;변수와 자료형, 연산자&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#2-1. 기본 자료형과 변수 선언방법 (1) 불변형, 기본형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;- &lt;/b&gt;들어가기&amp;nbsp;전에 &lt;br /&gt;&lt;br /&gt;본격적으로&amp;nbsp;변수와&amp;nbsp;자료형에&amp;nbsp;대해&amp;nbsp;이야기할&amp;nbsp;시간입니다.&amp;nbsp;변수란&amp;nbsp;값을&amp;nbsp;넣을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;상자&amp;nbsp;정도로&amp;nbsp;비유할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;코틀린에는&amp;nbsp;많은&amp;nbsp;언어에서&amp;nbsp;사용하는&amp;nbsp;기본형과&amp;nbsp;특수한&amp;nbsp;형의&amp;nbsp;자료형이&amp;nbsp;있으므로&amp;nbsp;함께&amp;nbsp;알아봅시다.&lt;/p&gt;
&lt;p&gt;- 핵심 키워드&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;불변형(val) 및 가변형(var) 선언&lt;/li&gt;
&lt;li&gt;카멜표기법&lt;/li&gt;
&lt;li&gt;기본형과 참조형&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 자료형과 변수의 선언&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;val(value) - 불변형 //값의 선언 이후 수정 불가&lt;/li&gt;
&lt;li&gt;var(variable) - 가변형&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1611565232827&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val username: String = &quot;Kildong&quot;
//선언키워드 변수이름 : 자료형 = &quot;값&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;문자열 내에 변수나 식을 ${변수나 식}을 통해 나타낼 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1611565310982&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main(){
    val username: String = &quot;Kildong&quot;
    println(&quot;username: $username&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 변수명의 예&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;var username = &quot;Kildong&quot; // 자료형을 추론하여 String으로 결정&lt;/li&gt;
&lt;li&gt;var username // 자료형을 지정하지 않은 변수는 사용할 수 없다&lt;/li&gt;
&lt;li&gt;val init: Int // 사용전 혹은 생선자 시점에서 init변수를 초기화 해야한다.&lt;/li&gt;
&lt;li&gt;val number = 10 // number 변수는 Int형으로 추론&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;!변수 선언 시 유의 사항&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;변수 이름은 숫자로 시작할 수 없다&lt;/li&gt;
&lt;li&gt;변수 이름에는 while, if와 같이 코틀린에서 사용되는 키워드는 사용할 수 없다&lt;/li&gt;
&lt;li&gt;여러 단어를 사용하여 변수 이름을 지을 경우 카멜 표기법(Camel Expression)을 사용하여야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 카멜 표기법&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;변수 명의 단어가 변경되는 시점에서 첫글자를 대문자로 선언하는 것.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;camelCase&lt;/li&gt;
&lt;li&gt;numberOfBooks&lt;/li&gt;
&lt;li&gt;myFirstNumber&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;cf) 클래스, 인터페이스 등 (파스칼 표기법)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AnimalCategory&lt;/li&gt;
&lt;li&gt;CarEngine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 기본형과 참조형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;기본형(Java) : 가공되지 않은 순수한 자료형&lt;/p&gt;
&lt;p&gt;ex) int, ling, float, double 등&lt;/p&gt;
&lt;p&gt;코틀린에서는 기본형 자료형을 사용하지 않는다!&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&amp;nbsp;보통 프로그래밍 언어의 자료형은 기본형 자료형과 참조형 자료형으로 구분하며 코틀린은 참조형 자료형을 사용합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;기본형(Primitive Data Type)은 말 그대로 가공되지 않은 순수한 자료형을 말하며 프로그래밍 언어에 내장되어 있습니다. 참조형(Reference Type)은 객체를 생성하고 동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형을 말합니다 . 자바에서는 int, long, float, double 등 기본형과 String, Date와 같은 참조형을 모두 사용하지만 코틀린에서는 코딩할 때는 참조형만 사용하며 이것은 다시 코틀린의 성능 최적화에 따라 JVM에 실행하기 위해 코틀린 컴파일러에서 기본형으로 대체됩니다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;참조형 : 동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Int, Long, Float, Double&lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt; 참조형 변수는 클래스 형태로 만들어진 ` 객체 `이다. (동적 메모리 공간에 위치)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 기본형과 참조형의 원리&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;기본형이라 함은 Stack 메모리에 값이 저장되어 있고,&lt;/p&gt;
&lt;p&gt;참조형이라 함은 Stack 메모리 내에 주소가 저장되어 있으며,&lt;/p&gt;
&lt;p&gt;그 주소는 Heap의 특정한 공간(사용자가 지정해줄 순 없다.)에 위치해 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNm73b/btqUzuNUUbu/WGGqLitMeFq25mn4QC5Ts1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNm73b/btqUzuNUUbu/WGGqLitMeFq25mn4QC5Ts1/img.jpg&quot; data-alt=&quot;https://nickolasteixeira.medium.com/stack-vs-heap-whats-the-difference-and-why-should-i-care-5abc78da1a88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNm73b/btqUzuNUUbu/WGGqLitMeFq25mn4QC5Ts1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNm73b%2FbtqUzuNUUbu%2FWGGqLitMeFq25mn4QC5Ts1%2Fimg.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://nickolasteixeira.medium.com/stack-vs-heap-whats-the-difference-and-why-should-i-care-5abc78da1a88&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;결국 코틀린은 이러한 참조형 데이터를 이용하는 언어이다.&lt;/p&gt;
&lt;p&gt;여기서 메모리 Stack에 대해 개념적으로 보충이 필요하다면, 아래의 게시글들을 참조하자.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.guru99.com/java-stack-heap.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What is Memory Stack in Java?&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611565865310&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Java Stack and Heap: Java Memory Allocation Tutorial&quot; data-og-description=&quot;In this JavaScript Unit Testing tutorial, we will learn: What is JavaScript? JavaScript is a...&quot; data-og-host=&quot;www.guru99.com&quot; data-og-source-url=&quot;https://www.guru99.com/java-stack-heap.html&quot; data-og-url=&quot;https://www.guru99.com/java-stack-heap.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.guru99.com/java-stack-heap.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.guru99.com/java-stack-heap.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Java Stack and Heap: Java Memory Allocation Tutorial&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;In this JavaScript Unit Testing tutorial, we will learn: What is JavaScript? JavaScript is a...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.guru99.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;b&gt;Java&amp;nbsp;Stack&amp;nbsp;and&amp;nbsp;Heap&amp;nbsp;-&amp;nbsp;Java&amp;nbsp;Memory&amp;nbsp;Management&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;(&lt;a href=&quot;https://www.youtube.com/watch?v=450maTzSIvA&amp;amp;feature=emb_logo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;www.youtube.com/watch?v=450maTzSIvA&amp;amp;feature=emb_logo&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/450maTzSIvA&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;&lt;b&gt;! 메모리 스텍 (in Java) 정리&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Stack Memory : Java의 스택은 메서드, 지역 변수 및 참조 변수를 포함하는 메모리 섹션&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot;&gt;Heap Memory : Heap은 객체를 초함하고 참조 변수도 포함할 수 있는 메모리 섹션&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;메서드가 호출되면 스택 맨 위에 프레임이 생성&lt;/li&gt;
&lt;li&gt;메서드 실행이 완료되면 제어 흐름이 호출 메서드로 돌아가고 해당 스택 프레임이 flush&lt;/li&gt;
&lt;li&gt;스택에 로컬 변수가 생성됩&lt;/li&gt;
&lt;li&gt;인스턴스 변수는 힙에 생성되며 해당 변수가 속한 개체의 일부&lt;/li&gt;
&lt;li&gt;참조 변수는 스택에 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#2-1. 기본 자료형과 변수 선언방법 (2) 정수형과 실수형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;본격적으로 변수와 자료형에 대해 이야기할 시간입니다. 변수란 값을 넣을 수 있는 상자 정도로 비유할 수 있습니다. 코틀린에는 많은 언어에서 사용하는 기본형과 특수한 형의 자료형이 있으므로 함께 알아봅시다.&lt;/p&gt;
&lt;p&gt;- 핵심 키워드&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정수형(Byte, Short, Int, Long)&lt;/li&gt;
&lt;li&gt;실수형(Float, Double)&lt;/li&gt;
&lt;li&gt;부호없는 자료형&lt;/li&gt;
&lt;li&gt;실수형의&amp;nbsp;표현범위&amp;nbsp;제한 &lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;1) 정수형 자료형 알아보기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;정수형 - 음수가 사용되는 부호 있는 자료형&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Long 8byte&lt;/li&gt;
&lt;li&gt;Int 4byte&lt;/li&gt;
&lt;li&gt;Short 2byte&lt;/li&gt;
&lt;li&gt;Byte 1byte&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;정수형 - 부호 없는 자료형&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ULong 8byte&lt;/li&gt;
&lt;li&gt;UInt 4byte&lt;/li&gt;
&lt;li&gt;UShort 2byte&lt;/li&gt;
&lt;li&gt;UByte 1byte&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 자료형 사용의 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자료형 생략&lt;/p&gt;
&lt;pre id=&quot;code_1611566537368&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val num05 = 127 //Int형으로 추론
val num06 = -32768 //Int형으로 추론
val num07 = 2147483647 // Int형으로 추론
val num08 = 1234567898764321 //Long형으로 추론&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;접미사 접두사 사용&lt;/p&gt;
&lt;pre id=&quot;code_1611566626987&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val exp01 = 123 //Int형으로 추론
val exp02 = 123L //접미사 L을 통해 Long형으로 추론
val exp03 = 0x0F //접두사 Ox를 사용해 16진 표시가 사용된 Int형으로 추론
val exp04 = 0b00001011 //접두사 0b를 사용해 2진 표시가 사용된 Int형으로 추론&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;작은 값의 사용&lt;/p&gt;
&lt;pre id=&quot;code_1611566707128&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val exp08:Byte = 123 // 명시적으로 자료형을 지정
val exp09 = 32767 // 명시적으로 자료형을 지정하지 않으면 short형의 범위의 값도 Int형으로 추론
val exp10:Short = 32767 //명시적으로 자료형을 지정&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 부호없는 자료형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;부호없는 자료형의 선언 역시 접미사 혹은 접두사를 통해 선언할 수 있다.&lt;/p&gt;
&lt;p&gt;또 숫자 사이 구분자로 언더바(_) 표기가 허용된다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 실수 표현형&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Double 8바이트&lt;/li&gt;
&lt;li&gt;Float 4바이트&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1611566840340&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val exp01 = 3.14 // 기본적으로 Double형으로 추론
val exp02 = 3.14F // 식별자 F에 의해 Float형으로 추론&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 부동 소숫점의 표현&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWCah0/btqUM8WBZPH/5v0NagwnYz9XJl5scomD91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWCah0/btqUM8WBZPH/5v0NagwnYz9XJl5scomD91/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/61118&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWCah0/btqUM8WBZPH/5v0NagwnYz9XJl5scomD91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWCah0%2FbtqUM8WBZPH%2F5v0NagwnYz9XJl5scomD91%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/61118&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6) 공간제약에 따른 부동 소숫점 표현의 제한&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611567137112&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var num : Double = 0.1
    
    for(x in 0..999) {
        num += 0.1
    }
    
    println(num) //100.099999999_999859
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;num의 값이 100이 나올 것 같지만, 실제로는 소수점부가 포함된 수가 출력됨을 알 수 있다.&lt;/p&gt;
&lt;p&gt;! 읽어 볼 거리&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/21872854/floating-point-math-in-different-programming-languages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Floating&amp;nbsp;point&amp;nbsp;math&amp;nbsp;in&amp;nbsp;different&amp;nbsp;programming&amp;nbsp;languages&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611567434301&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Floating point math in different programming languages&quot; data-og-description=&quot;I know that floating point math can be ugly at best but I am wondering if somebody can explain the following quirk. In most of the programing languages I tested the addition of 0.4 to 0.2 gave a sl...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/21872854/floating-point-math-in-different-programming-languages&quot; data-og-url=&quot;https://stackoverflow.com/questions/21872854/floating-point-math-in-different-programming-languages&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cStT1n/hyI2Dt0nZC/ur6sqXlOhAhXyKXGavhHzK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/21872854/floating-point-math-in-different-programming-languages&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/21872854/floating-point-math-in-different-programming-languages&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cStT1n/hyI2Dt0nZC/ur6sqXlOhAhXyKXGavhHzK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Floating point math in different programming languages&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I know that floating point math can be ugly at best but I am wondering if somebody can explain the following quirk. In most of the programing languages I tested the addition of 0.4 to 0.2 gave a sl...&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#2-1. 기본 자료형과 변수 선언방법 (3) 크기 범위와 기타 자료형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;본격적으로 변수와 자료형에 대해 이야기할 시간입니다. 변수란 값을 넣을 수 있는 상자 정도로 비유할 수 있습니다. 코틀린에는 많은 언어에서 사용하는 기본형과 특수한 형의 자료형이 있으므로 함께 알아봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;각 자료형의 최대 최솟값&lt;/li&gt;
&lt;li&gt;2의보수&lt;/li&gt;
&lt;li&gt;논리 자료형(Boolean)&lt;/li&gt;
&lt;li&gt;문자 자료형(Char)&lt;/li&gt;
&lt;li&gt;문자열 자료형(String)&lt;/li&gt;
&lt;li&gt;String Pool&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 각 자료형 최대 최솟값 알아보기 예제&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611567694484&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    println(&quot;Byte min: &quot; + Byte.MIN_VALUE + &quot; max: &quot; + Byte.MAX_VALUE)
    println(&quot;Short min: &quot; + Short.MIN_VALUE + &quot; max: &quot; + Short.MAX_VALUE)
    println(&quot;Int min: &quot; + Int.MIN_VALUE + &quot; max: &quot; + Int.MAX_VALUE)
    println(&quot;Long min: &quot; + Long.MIN_VALUE + &quot; max: &quot; + Long.MAX_VALUE)
    println(&quot;Float min: &quot; + Float.MIN_VALUE + &quot; max: &quot; + Float.MAX_VALUE)
    println(&quot;Double min: &quot; + Double.MIN_VALUE + &quot; max: &quot; + Double.MAX_VALUE)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;프로그램을 효율적으로 만들려면 메모리 공간을 효율적으로 활용하여야 한다.&lt;/p&gt;
&lt;p&gt;따라서, 각 데이터 타입별 데이터 최댓값과 최솟값을 알고 있다면 유용하게 사용할 수 있다.&lt;/p&gt;
&lt;p&gt;비단 암기하기 보다는 코틀린에서 직접 출력하는 방법을 익히도록 하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 2의 보수란?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2의 보수란? - 위키 백과&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611567771858&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2의 보수 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 2의 보수(--補數, 영어: two's complement)란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/2%EC%9D%98_%EB%B3%B4%EC%88%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;2의 보수 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전. 2의 보수(--補數, 영어: two's complement)란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 2의 보수는 대부분의 산술연산에서 원래 숫자의 음수처럼 취급&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;Byte란 자료형에 변수 127이 들어있을 때 여기에 1을 더하게 된다면,&lt;/p&gt;
&lt;p&gt;비트 연산에 의해 가장 상단의 비트인 부호 비트가 바뀌고 값은 -128이 된다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;비트 연산 - 위키 백과&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611567831590&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;비트 연산 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/%EB%B9%84%ED%8A%B8_%EC%97%B0%EC%82%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;비트 연산 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;2진수 음수 표현&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VM9xb/btqUGS8kZvp/m6SNNVB73CrcCjAjitL8Uk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VM9xb/btqUGS8kZvp/m6SNNVB73CrcCjAjitL8Uk/img.jpg&quot; data-alt=&quot;http://www.ktword.co.kr/abbr_view.php?m_temp1=4088&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VM9xb/btqUGS8kZvp/m6SNNVB73CrcCjAjitL8Uk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVM9xb%2FbtqUGS8kZvp%2Fm6SNNVB73CrcCjAjitL8Uk%2Fimg.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;http://www.ktword.co.kr/abbr_view.php?m_temp1=4088&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 그 밖의 자료형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 논리 자료형&lt;/p&gt;
&lt;p&gt;참, 거짓을 표현하는 자료형으로써 조건을 검사할 때 주로 사용된다.&lt;/p&gt;
&lt;p&gt;(다른 언어와 마찬가지로 true, false 두 가지 값만 가지고 있다.)&lt;/p&gt;
&lt;pre id=&quot;code_1611567953909&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val isOpen = true // isOpen은 Boolean으로 추론
val isUploaded: Boolean // 선언만 한 경우 자료형(Boolean) 반드시 명시&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 문자 자료형&lt;/p&gt;
&lt;p&gt;Char은 문자를 표현하기 위해 사용하며 문자 자료형의 값은 작은따옴표(')로 감싸 표현한다.&lt;/p&gt;
&lt;p&gt;문자 자료형은 1개의 문자만 저장할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1611567997877&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val ch = 'c' // ch는 Char로 추론
val ch2: Char // 선언만 한 경우 자료형(Char) 반드시 명시 

//ASCII코드
val ch = 'a'
println(ch + 1) // b

val chNum: Char = 65 // 에러! 숫자를 사용하여 선언하는 것은 금지

//정수를 사용한 문자의 저장
val code: Int = 65
val chFromCode: Char = code.toChar() // code에 해당하는 문자를 할당
println(chFromCode) // 결과는 A&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;컴퓨터는 문자 자료형의 값을 저장할 때 문자 세트를 참고하여 번호로 저장한다.&lt;/p&gt;
&lt;p&gt;단, 문자를 선언할 때 번호가 아닌 문자로 선언하여야 한다.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/ASCII&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;! 문자 세트 - ASCII 코드&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611568103100&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ASCII - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문 &quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/ASCII&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/ASCII&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVtqh0/hyI2w9w9su/e7nIki3s4S6FSYOdla9Zdk/img.png?width=1200&amp;amp;height=864&amp;amp;face=0_0_1200_864&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/ASCII&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/ASCII&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVtqh0/hyI2w9w9su/e7nIki3s4S6FSYOdla9Zdk/img.png?width=1200&amp;amp;height=864&amp;amp;face=0_0_1200_864');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;ASCII - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전. 1972 프린터 사용 설명서에 개시된 아스키 코드 차트표 미국정보교환표준부호(영어: American Standard Code for Information Interchange), 또는 줄여서 ASCII( , 아스키)는 영문&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4) 문자열 자료형&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문자 자료형은 한개의 문자만 저장할 수 있는 한계가 있었다.&lt;/p&gt;
&lt;p&gt;여러 문자를 저장하기 위해서는 문자 자료형을 사용할 필요가 있다.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열 자료형은 문자 자료형에서 더 나아가 여러 문자를 배열하여 저장할 수 있는 자료형이다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;자형인 Char은 char과 같은 기본형으로 처리되지만,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; 문자열 자료형은 기본형에 속하지 않는 배열 형태로 되어있는 특수한 자료형이다&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611568171069&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var str1: String = &quot;Hello&quot;
    var str2 = &quot;World&quot;
    var str3 = &quot;Hello&quot;

    println(&quot;str1 === str2: ${str1 === str2}&quot;)
    println(&quot;str1 === str3: ${str1 === str3}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsAO3b/btqUzuNXy0p/v0nAimv4oncvQ0u6EzEJgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsAO3b/btqUzuNXy0p/v0nAimv4oncvQ0u6EzEJgK/img.png&quot; data-alt=&quot;https://www.boostcourse.org/mo132/lecture/61254&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsAO3b/btqUzuNXy0p/v0nAimv4oncvQ0u6EzEJgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsAO3b%2FbtqUzuNXy0p%2Fv0nAimv4oncvQ0u6EzEJgK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://www.boostcourse.org/mo132/lecture/61254&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;str1, str3에는 같은 문자열이 저장되어 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이 경우는 Hello를 메모리에 두 번 저장하는 것보다 이미 저장된 값을 활용하는 것이 효율적일 텐데, &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;코틀린은 힙 메모리 영역의 String Pool이라고 부르는 공간에 문자열인 Hello를 저장해두고&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; 이 값을 str1, str3이 참조하게 된다,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; 결과적으로 str3의 참조 주소는 str1과 동일해 참조 비교를 위해 연산자 ===를 사용하면 true가 반환된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5) 표현식과 문자열&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611568426910&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var a = 1
val s1 = &quot;a is $a&quot; // String 자료형의 s1을 선언하고 초기화. 변수 a가 사용됨&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;` $ `기호를 통해 변수나 표현식을 사용할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1611568457114&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    var a = 1
    val str1 = &quot;a = $a&quot;
    val str2 = &quot;a = ${a + 2}&quot; // 문자열에 표현식 사용

    println(&quot;str1: \&quot;$str1\&quot;, str2: \&quot;$str2\&quot;&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드는 이스케이프 문자를 사용해 큰따옴표를 문자열 안에 표기하고 있는데,&lt;/p&gt;
&lt;p&gt;이스케이프 문자는 역슬래시를 붙여 표현하는 특수 문자 표기법이다.&lt;/p&gt;
&lt;pre id=&quot;code_1611568507876&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;val special = &quot;\&quot;hello\&quot;, I have \$15&quot;
println(special) // &quot;hello&quot;, I have $15&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/33461403/escape-something-in-a-kotlin-string&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Escape&amp;nbsp;${something}&amp;nbsp;in&amp;nbsp;a&amp;nbsp;Kotlin&amp;nbsp;String&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611568563849&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Escape ${something} in a Kotlin String&quot; data-og-description=&quot;What is the correct way of defining a Kotlin string that includes the characters for declaring a template substitution, but not have this evaluated as a template? For example: &amp;quot;${something}&amp;quot; just&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/33461403/escape-something-in-a-kotlin-string&quot; data-og-url=&quot;https://stackoverflow.com/questions/33461403/escape-something-in-a-kotlin-string&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yLLfB/hyI4pHGPxF/JzcWSqxZ2nBcMNFLs2pyMk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/33461403/escape-something-in-a-kotlin-string&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/33461403/escape-something-in-a-kotlin-string&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yLLfB/hyI4pHGPxF/JzcWSqxZ2nBcMNFLs2pyMk/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Escape ${something} in a Kotlin String&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;What is the correct way of defining a Kotlin string that includes the characters for declaring a template substitution, but not have this evaluated as a template? For example: &quot;${something}&quot; just&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/basic-types.html#string-templates&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kotlin - Doc&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611568590108&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language&quot; data-og-description=&quot; &quot; data-og-host=&quot;kotlinlang.org&quot; data-og-source-url=&quot;https://kotlinlang.org/docs/reference/basic-types.html#string-templates&quot; data-og-url=&quot;https://kotlinlang.org/docs/reference/basic-types.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwSWQ9/hyI4zcsGBS/Ejb6xX9zHJL70dieb1Tswk/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250&quot;&gt;&lt;a href=&quot;https://kotlinlang.org/docs/reference/basic-types.html#string-templates&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kotlinlang.org/docs/reference/basic-types.html#string-templates&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwSWQ9/hyI4zcsGBS/Ejb6xX9zHJL70dieb1Tswk/img.png?width=250&amp;amp;height=250&amp;amp;face=0_0_250_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Basic Types: Numbers, Strings, Arrays - Kotlin Programming Language&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;kotlinlang.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/191</guid>
      <comments>https://xd-jaewon.tistory.com/191#entry191comment</comments>
      <pubDate>Mon, 25 Jan 2021 18:14:58 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 자연수 뒤집어 배열로 만들기</title>
      <link>https://xd-jaewon.tistory.com/190</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;내적&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJB6nZ/btqUzwjH3kd/Bgml2dIw6WOshSTPEQJJVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJB6nZ/btqUzwjH3kd/Bgml2dIw6WOshSTPEQJJVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJB6nZ/btqUzwjH3kd/Bgml2dIw6WOshSTPEQJJVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJB6nZ%2FbtqUzwjH3kd%2FBgml2dIw6WOshSTPEQJJVK%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;내적&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 10,000,000,000이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12345&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[5,4,3,2,1]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/31633635/what-is-the-meaning-of-inta-1-in-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;What&amp;nbsp;is&amp;nbsp;the&amp;nbsp;meaning&amp;nbsp;of&amp;nbsp;&amp;ldquo;int(a[::-1])&amp;rdquo;&amp;nbsp;in&amp;nbsp;Python?&amp;nbsp;[duplicate]&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1611483677389&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;What is the meaning of &amp;quot;int(a[::-1])&amp;quot; in Python?&quot; data-og-description=&quot;I cannot understand this. I have seen this in people's code. But cannot figure out what it does. This is in Python. str(int(a[::-1]))&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/31633635/what-is-the-meaning-of-inta-1-in-python&quot; data-og-url=&quot;https://stackoverflow.com/questions/31633635/what-is-the-meaning-of-inta-1-in-python&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dgMHPB/hyI2InP5eP/fAFRMCnxKEzxmAtuNNRaK0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/31633635/what-is-the-meaning-of-inta-1-in-python&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/31633635/what-is-the-meaning-of-inta-1-in-python&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dgMHPB/hyI2InP5eP/fAFRMCnxKEzxmAtuNNRaK0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;What is the meaning of &quot;int(a[::-1])&quot; in Python?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I cannot understand this. I have seen this in people's code. But cannot figure out what it does. This is in Python. str(int(a[::-1]))&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1611483703671&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    return [int(i) for i in str(n)][::-1]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611480860077&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, b) {
    if(a.length != b.length)
        return -1;
    var answer = 0;
    for(let i = 0; i &amp;lt; a.length; i++){
        answer += a[i]*b[i];
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611483753139&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(long long n) {
    vector&amp;lt;int&amp;gt; answer;
    while(n){
        answer.push_back(n%10);
        n/=10;
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/190</guid>
      <comments>https://xd-jaewon.tistory.com/190#entry190comment</comments>
      <pubDate>Sun, 24 Jan 2021 19:22:47 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 자릿수 더하기</title>
      <link>https://xd-jaewon.tistory.com/189</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;자릿수 더하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pyf77/btqUuNGvjzF/3gJzj80EN8KA0e85uQe8Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pyf77/btqUuNGvjzF/3gJzj80EN8KA0e85uQe8Ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pyf77/btqUuNGvjzF/3gJzj80EN8KA0e85uQe8Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpyf77%2FbtqUuNGvjzF%2F3gJzj80EN8KA0e85uQe8Ek%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;자릿수 더하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;N의 범위 : 100,000,000 이하의 자연수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;N&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;123&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;987&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611483095151&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    answer = 0
    Str = str(n)
    for i in range(0, len(Str)):
        answer += int(Str[i])
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611483123676&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n)
{
    var str = String(n);
    var answer = 0;
    for(let i = 0; i &amp;lt; str.length; i++)
        answer += Number(str[i]);
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611483457422&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;

using namespace std;
int solution(int n)
{
    int answer = 0;
    string arr = to_string(n);


    while (n != 0)
    {
        answer += n % 10;
        n /= 10;
    }

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/189</guid>
      <comments>https://xd-jaewon.tistory.com/189#entry189comment</comments>
      <pubDate>Sun, 24 Jan 2021 19:17:47 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 이상한 문자 만들기</title>
      <link>https://xd-jaewon.tistory.com/188</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;이상한 문자 만들기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uUb4v/btqUpavTNZJ/TwgCg6bYkehpjZsOWvXJDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uUb4v/btqUpavTNZJ/TwgCg6bYkehpjZsOWvXJDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uUb4v/btqUpavTNZJ/TwgCg6bYkehpjZsOWvXJDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuUb4v%2FbtqUpavTNZJ%2FTwgCg6bYkehpjZsOWvXJDk%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;이상한 문자 만들기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.&lt;/li&gt;
&lt;li&gt;첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 57px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;try hello world&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;TrY HeLlO WoRlD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611482335428&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    temp = []
    for i in s.split(' '):
        word = ''
        for j in range(len(i)):
            c = i[j].upper() if j % 2 == 0 else i[j].lower()
            word = word + c
        temp.append(word)
    return ' '.join(temp)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611482016358&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s) {
    var answer = &quot;&quot;;
    let whiteSpace = 0;
    for(let i = 0; i &amp;lt; s.length; i++){
        if(s.charAt(i) === ' '){
            answer += ' ';
            whiteSpace = 0;
        } else {
            answer += whiteSpace%2 != 0 ? s.charAt(i).toLowerCase() : s.charAt(i).toUpperCase();
            whiteSpace ++;
        }     
    }
    return answer;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611482608863&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

string solution(string s) {
    string answer = &quot;&quot;;
    int idx = 1;
    for (int i = 0; i &amp;lt; s.size(); i++, idx++)
    {
        if (s[i] == ' ')
        {
            idx = 0;
            answer += &quot; &quot;;
        }
        else
            idx % 2 != 0 ? answer += toupper(s[i]) : answer += tolower(s[i]);
    }

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/188</guid>
      <comments>https://xd-jaewon.tistory.com/188#entry188comment</comments>
      <pubDate>Sun, 24 Jan 2021 19:07:07 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 약수의 합</title>
      <link>https://xd-jaewon.tistory.com/186</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;약수의 합&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zTIzU/btqUBvrhZdy/dAiPOzRCYBtmvfvaxae50K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zTIzU/btqUBvrhZdy/dAiPOzRCYBtmvfvaxae50K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zTIzU/btqUBvrhZdy/dAiPOzRCYBtmvfvaxae50K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzTIzU%2FbtqUBvrhZdy%2FdAiPOzRCYBtmvfvaxae50K%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;약수의 합&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 0 이상 3000이하인 정수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 48px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 19px; text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611481792358&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    answer = 0
    for i in range(1, n+1):
        if n%i == 0 :
            answer += i
    return answer;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611481635340&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    var answer = 0;
    for(let i = 1; i &amp;lt; n; i++)
        if(n%i === 0) answer += i
    return answer+n;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611481918198&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(int n) {
    int answer = 0;
    int i = n;
    while(i &amp;gt; 0){
        if(n%i == 0)
            answer += i;
        i--;
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/186</guid>
      <comments>https://xd-jaewon.tistory.com/186#entry186comment</comments>
      <pubDate>Sun, 24 Jan 2021 18:41:34 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 내적</title>
      <link>https://xd-jaewon.tistory.com/185</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;내적&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LDbaZ/btqUsd6ZR9X/PPpmpBh0zf8Ti1cf7mDIJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LDbaZ/btqUsd6ZR9X/PPpmpBh0zf8Ti1cf7mDIJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LDbaZ/btqUsd6ZR9X/PPpmpBh0zf8Ti1cf7mDIJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLDbaZ%2FbtqUsd6ZR9X%2FPPpmpBh0zf8Ti1cf7mDIJk%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;내적&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Dot_product&quot;&gt;내적&lt;/a&gt;을 return 하도록 solution 함수를 완성해주세요.&lt;/p&gt;
&lt;p&gt;이때, a와 b의 내적은&lt;span&gt;&amp;nbsp;&lt;/span&gt;a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1]&lt;span&gt;&amp;nbsp;&lt;/span&gt;입니다. (n은 a, b의 길이)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a, b의 길이는 1 이상 1,000 이하입니다.&lt;/li&gt;
&lt;li&gt;a, b의 모든 수는 -1,000 이상 1,000 이하입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,2,3,4]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[-3,-1,0,2]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[-1,0,1]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,0,-1]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;-2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611481207807&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(a, b):
    c = []
    for i in range(len(a)):
        c.append(a[i]*b[i])
    return sum(c)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611480860077&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, b) {
    if(a.length != b.length)
        return -1;
    var answer = 0;
    for(let i = 0; i &amp;lt; a.length; i++){
        answer += a[i]*b[i];
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1611481231955&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(vector&amp;lt;int&amp;gt; a, vector&amp;lt;int&amp;gt; b) {
    int answer = 0;
    for(int i = 0; i &amp;lt; a.size(); i++) {
        answer += (a[i] * b[i]);
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/185</guid>
      <comments>https://xd-jaewon.tistory.com/185#entry185comment</comments>
      <pubDate>Sun, 24 Jan 2021 18:40:42 +0900</pubDate>
    </item>
    <item>
      <title>[부스트코스|코틀린] 1단원 1장. 코틀린이란 무엇일까?</title>
      <link>https://xd-jaewon.tistory.com/183</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JEwH9/btqT3t3wIah/ys7kPkfsls3TxNcHeVUkGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JEwH9/btqT3t3wIah/ys7kPkfsls3TxNcHeVUkGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JEwH9/btqT3t3wIah/ys7kPkfsls3TxNcHeVUkGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJEwH9%2FbtqT3t3wIah%2Fys7kPkfsls3TxNcHeVUkGK%2Fimg.png&quot; data-filename=&quot;BOOSTCOURSE.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 부스트코스의 코틀린 기본프로그래밍을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;시청한 후 학습한 정보를 기록하는 목적의 게시글입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot;&gt;부스트코스&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750706455&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;다 함께 배우고 성장하는 부스트코스&quot; data-og-description=&quot;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/&quot; data-og-url=&quot;http://www.boostcourse.org&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4nLn/hyIXh4K4eP/EMx4GhTC5Cj6eMqPGk9BZK/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;&gt;다 함께 배우고 성장하는 부스트코스&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;코틀린 기본프로그래밍(1/2)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610750788519&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;코틀린 프로그래밍 기본1/2(함수편)&quot; data-og-description=&quot;부스트코스 무료 강의&quot; data-og-host=&quot;www.boostcourse.org&quot; data-og-source-url=&quot;https://www.boostcourse.org/mo132&quot; data-og-url=&quot;http://www.boostcourse.org/mo132&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426&quot;&gt;&lt;a href=&quot;https://www.boostcourse.org/mo132&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.boostcourse.org/mo132&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bfWDCW/hyIXqHpG5i/pny8iEYCjSoDpl0sUVSceK/img.png?width=760&amp;amp;height=426&amp;amp;face=0_0_760_426');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;코틀린 프로그래밍 기본1/2(함수편)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;부스트코스 무료 강의&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.boostcourse.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;본 게시글은 &lt;u&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;부스트코스 서포터즈 3기 활동 게시글&lt;/span&gt;&lt;/u&gt;입니다.&lt;/p&gt;
&lt;hr style=&quot;margin: 20px auto 0px; border: none; cursor: pointer !important; z-index: 1; font-size: 0px; line-height: 0; background: url('../image/divider-line.svg') center -208px / 200px 420px repeat-x; height: 2px; padding: 21px 0px;&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;b&gt;#1-1. 코틀린 너는 누구니?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;이 장에서는 코틀린 언어가 등장하게 된 배경과 특징을 살펴 보겠습니다. 코틀린은 이전 프로그래밍 언어가 가지고 있던 단점을 많이 개선했습니다. 그리고 함수형 프로그래밍, 람다식 표현과 같은 현대 프로그래밍 언어의 기능도 많이 포함하고 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Kotlin/JVM&lt;/li&gt;
&lt;li&gt;Nullable, Notnull&lt;/li&gt;
&lt;li&gt;멀티플랫폼&lt;/li&gt;
&lt;li&gt;정적 언어(Statically typed Language)&lt;/li&gt;
&lt;li&gt;NPE(Null Pointer Exception)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 코틀린의 탄생 배경&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;객체 지향의 대형 프로젝트를 위해서 `Java`언어가 많이 사용되어 왔다.&lt;/p&gt;
&lt;p&gt;다양한 플랫폼에서 개발을 지원하기 위해 `Kotlin`이 탄생되었다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IDE로 유명한 JetBrains에서 개발하고 보급&lt;/li&gt;
&lt;li&gt;코드가 간결하고 다재 다능하며 호환성이 높다.&lt;/li&gt;
&lt;li&gt;문장 끝에 세미콜론은 옵션이다.&lt;/li&gt;
&lt;li&gt;Android Studio의 공식 언어&lt;/li&gt;
&lt;li&gt;변수는 Nullable과 NotNull로 나뉘는데, 변수 선언 시 `?`를 붙여 Nullable로 만들 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) 사용 가능한 플랫폼&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Kotlin/JVM : 자바 가상 머신 상에서 동작하는 앱을 만들 수 있다.&lt;/li&gt;
&lt;li&gt;Kotlin/JS : 자바스크립트에 의해 브라우저에서 동작하는 앱을 만들 수 있다.&lt;/li&gt;
&lt;li&gt;Kotlin/Native : LLVM기반 네이티브 컴파일을 지원해 여러 타깃의 앱을 만들 수 있다.&lt;br /&gt;iOS, MacOS, Android, Window, Linux. WebAssembly등..&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) 코틀린의 장점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자료형에 대한 오류를 미리 잡을 수 있는 정적 언어&lt;/li&gt;
&lt;li&gt;널 포인터에 의한 프로그램의 중단을 예방할 수 있다.&lt;br /&gt;= Null Pointer Exception에서 자유롭다&lt;/li&gt;
&lt;li&gt;데이터형 선언 시 널 가능한 형식과 불가능한 형식이 지원된다.&lt;/li&gt;
&lt;li&gt;자바와 완벽하게 상호운영이 가능하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#1-2. 개발 환경을 꾸며 보아요&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;JVM 상에서 실행하는 프로그램 개발을 위해서 어떤 SDK를 선택해야 할까요? 여기서는 JDK를 설치하고 개발 환경을 위해 IDE를 설치하는 방법에 대해 이야기 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JDK&lt;/li&gt;
&lt;li&gt;Oracle JDK vs OpenJDK&lt;/li&gt;
&lt;li&gt;Julu&lt;/li&gt;
&lt;li&gt;IntelliJ IDEA&lt;/li&gt;
&lt;li&gt;프로그램 진입점(Entry Point) - main()&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1) 자바 JDK 설치하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;코틀린을 JVM에서 실행하기 위해 JDK를 사용한다.&lt;/p&gt;
&lt;p&gt;기존 자바와 상호작용할 수 있고 자바 라이브러리를 이용할 수 있다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2) JDK 배포판의 선택&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.azul.com/downloads/zulu-community/?package=jdk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Zulu Builds of OpenJDK&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610751554009&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Java Download | Java 8, Java 11, Java 13 - Linux, Windows &amp;amp; macOS&quot; data-og-description=&quot;Download Java Builds of OpenJDK 8, 11, 13 &amp;amp; 15. Azul Zulu Builds of OpenJDK runs on Linux, Windows, macOS &amp;amp; Solaris on X86, Arm, SPARC &amp;amp; PPC&quot; data-og-host=&quot;www.azul.com&quot; data-og-source-url=&quot;https://www.azul.com/downloads/zulu-community/?package=jdk&quot; data-og-url=&quot;https://www.azul.com/downloads/zulu-community/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bpWavW/hyIXfFRN5i/Cyva4xNQfVF7tpw2MGF4r0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/pSzPX/hyIXcoQz7d/NVYk1iZDq7SDVW1Kxe4mNk/img.jpg?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000&quot;&gt;&lt;a href=&quot;https://www.azul.com/downloads/zulu-community/?package=jdk&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.azul.com/downloads/zulu-community/?package=jdk&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bpWavW/hyIXfFRN5i/Cyva4xNQfVF7tpw2MGF4r0/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/pSzPX/hyIXcoQz7d/NVYk1iZDq7SDVW1Kxe4mNk/img.jpg?width=1000&amp;amp;height=1000&amp;amp;face=0_0_1000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Java Download | Java 8, Java 11, Java 13 - Linux, Windows &amp;amp; macOS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Download Java Builds of OpenJDK 8, 11, 13 &amp;amp; 15. Azul Zulu Builds of OpenJDK runs on Linux, Windows, macOS &amp;amp; Solaris on X86, Arm, SPARC &amp;amp; PPC&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.azul.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3) JDK 설치해 보기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Java 11 (LTS) 버전으로 설치 할 예정이다.&lt;/p&gt;
&lt;p&gt;본인의 운영체제에 맞게 선택하여 설치하도록 하자.&lt;/p&gt;
&lt;p&gt;컴퓨터의 환경마다 다르겠지만 나는 아래의 주소로 zulu를 설치하였다.&lt;/p&gt;
&lt;p&gt;C:\Program&amp;nbsp;Files\Zulu\zulu-8\&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5DboY/btqTF3QXQ50/jstPv2ASDUkQGPqUC66kIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5DboY/btqTF3QXQ50/jstPv2ASDUkQGPqUC66kIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5DboY/btqTF3QXQ50/jstPv2ASDUkQGPqUC66kIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5DboY%2FbtqTF3QXQ50%2FjstPv2ASDUkQGPqUC66kIK%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이후 환경설정에서 설치된 주소로 시스템 주소를 추가하도록 하자.&lt;/p&gt;
&lt;p&gt;이후 path에도 지정된 경로가 추가되었는지 확인하자.&lt;/p&gt;
&lt;p&gt;win + r - cmd&lt;/p&gt;
&lt;p&gt;cmd창에서 java -v를 입력하여 설치한 자바의 버전을 확인하자.&lt;/p&gt;
&lt;pre id=&quot;code_1610751941060&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;C:\Users\nani6&amp;gt;java -version
openjdk version &quot;1.8.0_275&quot;
OpenJDK Runtime Environment (Zulu 8.50.0.51-CA-win64) (build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (Zulu 8.50.0.51-CA-win64) (build 25.275-b01, mixed mode)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;다음으로 intellij IDEA를 설치하여야 하는데,&lt;/p&gt;
&lt;p&gt;나는 이미 설치가 되어 있는 상태이기에 생략하였다.&lt;/p&gt;
&lt;p&gt;이 &lt;a href=&quot;https://www.jetbrains.com/ko-kr/idea/download/#section=windows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;URL&lt;/a&gt;에서 Communtiy version을 설치하면 된다.&lt;/p&gt;
&lt;figure id=&quot;og_1610752057984&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE&quot; data-og-description=&quot;최신 버전 다운로드: IntelliJ IDEA (Windows, macOS, Linux)&quot; data-og-host=&quot;www.jetbrains.com&quot; data-og-source-url=&quot;https://www.jetbrains.com/ko-kr/idea/download/#section=windows&quot; data-og-url=&quot;https://www.jetbrains.com/ko-kr/idea/download/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/m2y22/hyIXeUuNRU/LgYeIcPl9UeMaaigjbUTI1/img.png?width=1281&amp;amp;height=800&amp;amp;face=0_0_1281_800&quot;&gt;&lt;a href=&quot;https://www.jetbrains.com/ko-kr/idea/download/#section=windows&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jetbrains.com/ko-kr/idea/download/#section=windows&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/m2y22/hyIXeUuNRU/LgYeIcPl9UeMaaigjbUTI1/img.png?width=1281&amp;amp;height=800&amp;amp;face=0_0_1281_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;최신 버전 다운로드: IntelliJ IDEA (Windows, macOS, Linux)&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.jetbrains.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610770567823&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;fun main() {
    println(&quot;Hello World!&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;실행창에 정상적으로 결과가 출력된다면,&lt;/p&gt;
&lt;p&gt;코틀린 개발 환경이 세팅된 것이다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;#1-3 안녕 세상아!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;- 들어가기 전에&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;본격적으로 첫 번째 프로젝트를 이해해 볼까요&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;?&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;앞으로 실습을 진행하면서 여러 번 프로젝트를 생성하기 때문에 이 내용을 잘 익혀둡니다&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;- 핵심 키워드&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;진입점&lt;/li&gt;
&lt;li&gt;함수 fun 키워드&lt;/li&gt;
&lt;li&gt;바이트코드&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- 도구 창의 단축키: 윈도우(맥)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Messages Alt + 0 (Cmd + 0)&lt;/li&gt;
&lt;li&gt;Project Alt + 1 (Cmd + 1)&lt;/li&gt;
&lt;li&gt;Favorites Alt + 2 (Cmd + 2)&lt;/li&gt;
&lt;li&gt;Run Alt + 4 (Cmd + 4)&lt;/li&gt;
&lt;li&gt;Debug Alt + 5 (Cmd + 5)&lt;/li&gt;
&lt;li&gt;TODO &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alt + 6 (Cmd + 6)&lt;/li&gt;
&lt;li&gt;Structure Alt + 7 (Cmd + 7)&lt;/li&gt;
&lt;li&gt;Terminal Alt + F12 (Option + F12)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;코틀린의 main()은 최상위 함수로 실행 진입점이다&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;코틀린에서 main()함수는 실행 진입점입니다. 자바와 같은 객체 지향 언어에서는 프로그램을 실행하려면 최소한 하나의 클래스와 그 안에 실행할 수 있는main()함수가 있어야 합니다. 하지만 코틀린은 선언된 클래스가 없는데도 불구하고 main()메서드 하나로 println()함수를 통해 콘솔에 문자열 &quot;Hello Kotlin&quot;을 출력 하고 있습니다.&lt;/p&gt;
&lt;p&gt;실제로 코틀린 코드는 JVM상에서 실행하기 위해서main 메서드는 파일명을 기준으로 자동으로 클래스가 생성됩니다. 만들어진 파일은 IntelliJ IDEA의 메뉴에 [Tools &amp;rarr; Kotlin &amp;rarr; Show Kotlin Bytecode]를 누른 후 생성된 화면에서 [Decompile]을 사용해서 어떤 형태로 소스가 해석 되었는지를 확인해 볼 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1610770773977&quot; class=&quot;kotlin&quot; data-ke-language=&quot;kotlin&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Decompile된 소스
public final class HelloKotlinKt {
   public static final void main() {
      String var0 = &quot;Hello Kotlin!&quot;;
      System.out.println(var0);
   }

   // $FF: synthetic method
   public static void main(String[] var0) {
      main();
   }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;생성된 소스에서 main() 메서드를 보면 HelloKotlinKt클래스 안에 속한 멤버 메서드로 선언되어 있는 것을 알 수 있습니다. 이것은 자바 가상 머신인 JVM에 실행되기 위해, 문자열은 String var1으로 선언되어 System.out.println()에 의해 콘솔 장치에 출력 되는 것이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: 14pt;&quot;&gt;&lt;b&gt;main()에서 매개변수를 사용할 경우&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;main()에서 매개변수 args: Array&amp;lt;String&amp;gt;를 사용할 경우 자바의 String[] args로 변환됩니다. 이 args는 main()에 전달할 외부의 인수들을 가리키게 되고, 명령행으로부터 입력 받은 값들이 차례로 배열에 들어가게 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dM0DTq/btqTF2LoBky/rjTF937X7N21An8fTtZja1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dM0DTq/btqTF2LoBky/rjTF937X7N21An8fTtZja1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dM0DTq/btqTF2LoBky/rjTF937X7N21An8fTtZja1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdM0DTq%2FbtqTF2LoBky%2FrjTF937X7N21An8fTtZja1%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1610771045996&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;) {
    println(&quot;args[0] = ${args[0]}&quot;)
    println(&quot;args[1] = ${args[1]}&quot;)
    println(&quot;args[2] = ${args[2]}&quot;)
    println(&quot;args[3] = ${args[3]}&quot;)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Edit Configurations... 에서 main 함수로 보낼 인자를 지정할 수 있다.&lt;/p&gt;
&lt;p&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;main을 타이핑하고 tab키를 누르면 코드 어시스트에 의해 자동 완성 된다.&lt;/li&gt;
&lt;li&gt;실행단축키 : Ctrl + Shift + F10&lt;/li&gt;
&lt;li&gt;class가 없는데 main 메서드 하나로 println을 콘솔에 실행하고 있다.&lt;/li&gt;
&lt;li&gt;실제로는 main 메서드는 파일명을 기준으로 자동으로 클래스가 생성된다.&lt;/li&gt;
&lt;li&gt;프로그램 외부에서 인자를 받아들인다. main(args: Array&amp;lt;String&amp;gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>오픈튜토리얼스/코틀린 프로그래밍 기본</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/183</guid>
      <comments>https://xd-jaewon.tistory.com/183#entry183comment</comments>
      <pubDate>Sat, 16 Jan 2021 13:33:05 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 시저 암호</title>
      <link>https://xd-jaewon.tistory.com/181</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;시저 암호&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nl7Sx/btqTF34Annf/tALPRhVcBcop0G4kCi6jFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nl7Sx/btqTF34Annf/tALPRhVcBcop0G4kCi6jFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nl7Sx/btqTF34Annf/tALPRhVcBcop0G4kCi6jFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnl7Sx%2FbtqTF34Annf%2FtALPRhVcBcop0G4kCi6jFk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;시저 암호&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;AB&lt;span&gt;는 1만큼 밀면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;BC&lt;span&gt;가 되고, 3만큼 밀면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;DE&lt;span&gt;가 됩니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;z&lt;span&gt;는 1만큼 밀면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;a&lt;span&gt;가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;공백은 아무리 밀어도 공백입니다.&lt;/li&gt;
&lt;li&gt;s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;s의 길이는 8000이하입니다.&lt;/li&gt;
&lt;li&gt;n은 1 이상, 25이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;AB&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;BC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;z&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;a B z&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;e F d&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610741037327&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s, n):
    result = []
    lower = &quot;abcdefghijklmnopqrstuvwxyz&quot;
    upper = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;

    for i in s:
        if i == &quot; &quot;:
            result.append(&quot; &quot;)
            continue
        
        if i.islower() is True:
            arr = lower
        else:
            arr = upper
        
        idx = arr.find(i) + n
        if idx &amp;gt; len(arr):
            idx = idx % len(arr)
        result.append(arr[idx % 26])

    return &quot;&quot;.join(result)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610740134236&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s, n) {
    var answer = '';
    var lower = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
    var upper = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    
    let idx = 0;
    for(let i = 0; i &amp;lt; s.length; i++){
        if(s[i] === ' '){
            answer += ' ';
            continue;
        }
        if(lower.indexOf(s[i]) === -1){
            idx = upper.indexOf(s[i]) + n;
            idx = idx % 26;
            answer += upper[idx];
        } else {
            idx = lower.indexOf(s[i]) + n;
            idx = idx % 26;
            answer += lower[idx];
       }
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript Includes()&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610740195287&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Array.prototype.includes() - JavaScript | MDN&quot; data-og-description=&quot;includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://githu&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Array.prototype.includes() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://githu&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610740543740&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s, n) {
    var answer = '';
    var lower = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
    var upper = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
    
    for(let i = 0; i &amp;lt; s.length; i++){
        if(s[i] === ' '){
            answer += ' ';
            continue;
        }
        var textArr = lower.includes(s[i]) ? lower : upper;
        var idx = textArr.indexOf(s[i]) + n;
        if (idx &amp;gt;= textArr.length) idx = idx % textArr.length;
        answer += textArr[idx];
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610742003555&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

const string LOWER = &quot;abcdefghijklmnopqrstuvwxyz&quot;;
const string UPPER = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;

string solution(string s, int n) {
    string answer = &quot;&quot;;
    
    for(int i = 0; i &amp;lt; s.length(); i++){
        if(s[i] == ' '){
            answer += ' ';
            continue;
        }
        string textArr = islower(s[i]) == 0 ? UPPER : LOWER;
        int idx = textArr.find(s[i]) + n;
        if (idx &amp;gt;= textArr.length()) idx = idx % textArr.length();
        answer += textArr[idx];
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/181</guid>
      <comments>https://xd-jaewon.tistory.com/181#entry181comment</comments>
      <pubDate>Sat, 16 Jan 2021 05:20:08 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 문자열을 정수로 바꾸기</title>
      <link>https://xd-jaewon.tistory.com/180</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열을 정수로 바꾸기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qPeXi/btqTDJyFpio/u93kxqRbrE0WWciy8w11X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qPeXi/btqTDJyFpio/u93kxqRbrE0WWciy8w11X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qPeXi/btqTDJyFpio/u93kxqRbrE0WWciy8w11X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqPeXi%2FbtqTDJyFpio%2Fu93kxqRbrE0WWciy8w11X1%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열을 정수로 바꾸기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;s의 길이는 1 이상 5이하입니다.&lt;/li&gt;
&lt;li&gt;s의 맨앞에는 부호(+, -)가 올 수 있습니다.&lt;/li&gt;
&lt;li&gt;s는 부호와 숫자로만 이루어져있습니다.&lt;/li&gt;
&lt;li&gt;s는&lt;span&gt;&amp;nbsp;&lt;/span&gt;0으로 시작하지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;예를들어 str이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;1234&lt;span&gt;이면 1234를 반환하고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;-1234&lt;span&gt;이면 -1234를 반환하면 됩니다.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610738990930&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let answer=0;
let j = 1;
for(let i = s.length-1; i &amp;gt; -1; i--){
    if(i === 0 &amp;amp;&amp;amp; (s[0] === '+' || s[0] === '-')) break;
    answer += s[i] * j;
    j = j*10;    
}
        
return s[0] === '-' ? -answer : answer;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드처럼 알고리즘을 만들 수도 있겠지만..&lt;/p&gt;
&lt;p&gt;그냥 편하게 형변환자를 이용하자.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610739063430&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    return int(s)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610739027814&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s) {
    return Number(s);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610739133895&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(string s) {
    return stoi(s);
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/180</guid>
      <comments>https://xd-jaewon.tistory.com/180#entry180comment</comments>
      <pubDate>Sat, 16 Jan 2021 04:32:31 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 수박수박수박수박수박수?</title>
      <link>https://xd-jaewon.tistory.com/179</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;수박수박수박수박수박수?&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdtIfz/btqTJmbmgUz/bMTyZbA6hslpcIKXbQWG2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdtIfz/btqTJmbmgUz/bMTyZbA6hslpcIKXbQWG2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdtIfz/btqTJmbmgUz/bMTyZbA6hslpcIKXbQWG2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdtIfz%2FbtqTJmbmgUz%2FbMTyZbA6hslpcIKXbQWG2k%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;수박수박수박수박수박수?&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;길이가 n이고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수박수박수박수....&lt;span&gt;와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수박수박&lt;span&gt;을 리턴하고 3이라면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;수박수&lt;span&gt;를 리턴하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;제한 조건&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 길이 10,000이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;수박수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;수박수박&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610737041824&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import math

def solution(n):
    idx = math.ceil(n/2)
    solution = &quot;수박&quot; * idx
    return solution[:n]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610736745451&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    var answer = &quot;&quot;;
    for(let i = 0; i &amp;lt; n; i++){
        //i % 2 == 0 ? &quot;수&quot; : &quot;박&quot;;
        if(i%2 == 0) answer += '수';
        else answer += '박';
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610737150400&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

string solution(int n) {
    string answer = &quot;&quot;;

    for(int i = 0; i &amp;lt; n; i++)
        i % 2 == 0 ? answer+=&quot;수&quot; : answer+=&quot;박&quot;;

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/179</guid>
      <comments>https://xd-jaewon.tistory.com/179#entry179comment</comments>
      <pubDate>Sat, 16 Jan 2021 03:59:25 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 소수 찾기</title>
      <link>https://xd-jaewon.tistory.com/178</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cH8ll2/btqTJmh9Ilm/xWBIlfUF0UCYU9LYZdcB8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cH8ll2/btqTJmh9Ilm/xWBIlfUF0UCYU9LYZdcB8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cH8ll2/btqTJmh9Ilm/xWBIlfUF0UCYU9LYZdcB8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcH8ll2%2FbtqTJmh9Ilm%2FxWBIlfUF0UCYU9LYZdcB8k%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.&lt;/p&gt;
&lt;p&gt;소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.&lt;/p&gt;
&lt;p&gt;(1은 소수가 아닙니다.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 2이상 1000000이하의 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610733823939&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    var answer = 0;
    for(let i = n; i &amp;gt; 1; i--){
        if(i%2 === 0) continue;
        if(isPrime(i)) answer++;
    }
    return answer+1;
}

function isPrime(n){
    for(let i = 2; i*i &amp;lt;= n; i++){
        if(n%i == 0) return false;
    }
    return true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;코드를 아무리 간결히 해도 효율성 검사를 충족할 수 없다.&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #666666;&quot;&gt;에라토스테네스의 체 방식을 이용하고자 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%ED%8C%90%EB%B3%84%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소수판별법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610733826589&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;소수판별법 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수론에서, 소수판별법은 어떤 자연수 N이 소수인지 합성수인지를 판별하는 알고리즘들을 말한다. 간단한 방법들[편집] 직접 나&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%ED%8C%90%EB%B3%84%EB%B2%95&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%ED%8C%90%EB%B3%84%EB%B2%95&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%ED%8C%90%EB%B3%84%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%86%8C%EC%88%98%ED%8C%90%EB%B3%84%EB%B2%95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;소수판별법 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 수론에서, 소수판별법은 어떤 자연수 N이 소수인지 합성수인지를 판별하는 알고리즘들을 말한다. 간단한 방법들[편집] 직접 나&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610736106795&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    solution = []
    arr = [1] * (n+1)
    arr[0], arr[1] = 0, 0
    for i in range(2, n+1):
        if arr[i]:
            solution.append(arr[i])
            for j in range(i, n+1, i):
                arr[j] = 0
    return len(solution)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610734798062&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    var answer = 1;
    var arr = new Array(n+1); 
    arr.fill(1);
    
    for(let i = 2; i &amp;lt;= n; i++){
        if(i%2 === 0) continue;
        if(arr[i] === 1){
            for(let j = i; i*j &amp;lt;= n; j++)
                arr[i*j] = 0;
            answer++;
        }
    }
    return answer;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610735823051&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(int n) {
    int answer = 1;
    vector&amp;lt;bool&amp;gt; arr(n+1, true);

    for (int i=2; i&amp;lt;=n; i++) {
        if (i%2 == 0) continue;
        if (arr[i] == true) {
            for (int j=2; i*j&amp;lt;=n; j++) 
                arr[i*j] = false;
            answer++;
        }
    }

    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/178</guid>
      <comments>https://xd-jaewon.tistory.com/178#entry178comment</comments>
      <pubDate>Sat, 16 Jan 2021 03:41:53 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 서울에서 김서방 찾기</title>
      <link>https://xd-jaewon.tistory.com/177</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;서울에서 김서방 찾기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EDijD/btqTLyB8tVa/3dQcJTdG7W9R2UQcNuKbQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EDijD/btqTLyB8tVa/3dQcJTdG7W9R2UQcNuKbQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EDijD/btqTLyB8tVa/3dQcJTdG7W9R2UQcNuKbQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEDijD%2FbtqTLyB8tVa%2F3dQcJTdG7W9R2UQcNuKbQ0%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;서울에서 김서방 찾기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;String형 배열 seoul의 element중&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Kim&lt;span&gt;의 위치 x를 찾아,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;김서방은 x에 있다&lt;span&gt;는 String을 반환하는 함수, solution을 완성하세요. seoul에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Kim&lt;span&gt;은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;seoul은 길이 1 이상, 1000 이하인 배열입니다.&lt;/li&gt;
&lt;li&gt;seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.&lt;/li&gt;
&lt;li&gt;Kim은 반드시 seoul 안에 포함되어 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 40px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;seoul&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;[Jane,&lt;span&gt;&amp;nbsp;&lt;/span&gt;Kim]&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;김서방은 1에 있다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.python.org/3/library/string.html#custom-string-formatting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Custom&amp;nbsp;String&amp;nbsp;Formatting&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610732575672&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;string &amp;mdash; Common string operations &amp;mdash; Python 3.9.1 documentation&quot; data-og-description=&quot;string &amp;mdash; Common string operations Source code: Lib/string.py String constants The constants defined in this module are: string.ascii_letters The concatenation of the ascii_lowercase and ascii_uppercase constants described below. This value is not locale-&quot; data-og-host=&quot;docs.python.org&quot; data-og-source-url=&quot;https://docs.python.org/3/library/string.html#custom-string-formatting&quot; data-og-url=&quot;https://docs.python.org/3/library/string.html#custom-string-formatting&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.python.org/3/library/string.html#custom-string-formatting&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.python.org/3/library/string.html#custom-string-formatting&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;string &amp;mdash; Common string operations &amp;mdash; Python 3.9.1 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;string &amp;mdash; Common string operations Source code: Lib/string.py String constants The constants defined in this module are: string.ascii_letters The concatenation of the ascii_lowercase and ascii_uppercase constants described below. This value is not locale-&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610732522350&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(seoul):
    return &quot;김서방은 {}에 있다&quot;.format(seoul.index('Kim'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610732026290&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(seoul) {
    let i = 0;
    while(true){
        if(seoul[i] === &quot;Kim&quot;)
            break;
        i++;
    }
    return &quot;김서방은 &quot; + i + &quot;에 있다&quot;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1610732079865&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(seoul) {
  var idx = seoul.indexOf('Kim');
  return &quot;김서방은 &quot; + idx + &quot;에 있다&quot;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610732403606&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;

string solution(vector&amp;lt;string&amp;gt; seoul) {
    int i = 0;
    for(string temp : seoul){
        if(temp == &quot;Kim&quot;)
            break;
        i++;
    }
    string answer1 = &quot;김서방은 &quot;;
    string answer2 = &quot;에 있다&quot;;
    string answer = answer1 + to_string(i) + answer2;
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1610732443750&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iterator&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

string solution(vector&amp;lt;string&amp;gt; seoul) {
    string answer = &quot;&quot;;
    int pos=find(seoul.begin(),seoul.end(),&quot;Kim&quot;)-seoul.begin();
    answer=&quot;김서방은 &quot;+to_string(pos)+&quot;에 있다&quot;;
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/177</guid>
      <comments>https://xd-jaewon.tistory.com/177#entry177comment</comments>
      <pubDate>Sat, 16 Jan 2021 02:43:01 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 문자열 다루기 기본</title>
      <link>https://xd-jaewon.tistory.com/173</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 다루기 기본&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AweIV/btqSTJsOe8X/Hc32hNnW1twfuIhVSvJsdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AweIV/btqSTJsOe8X/Hc32hNnW1twfuIhVSvJsdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AweIV/btqSTJsOe8X/Hc32hNnW1twfuIhVSvJsdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAweIV%2FbtqSTJsOe8X%2FHc32hNnW1twfuIhVSvJsdk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 다루기 기본&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;a234&lt;span&gt;이면 False를 리턴하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;1234&lt;span&gt;라면 True를 리턴하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;제한 사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;s는 길이 1 이상, 길이 8 이하인 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 50px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;a234&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;height: 10px; text-align: center;&quot;&gt;1234&lt;/td&gt;
&lt;td style=&quot;height: 10px; text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610107024839&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    return s.isdigit() and (len(s) == 4 or len(s) == 6)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.w3schools.com/jsref/jsref_isnan.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript isNaN function&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610105984688&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;JavaScript isNaN() Function&quot; data-og-description=&quot;JavaScript isNaN() Function Example Check whether a value is NaN: isNaN(123) //false isNaN(-1.23) //false isNaN(5-2) //false isNaN(0) //false isNaN('123') //false isNaN('Hello') //true isNaN('2005/12/12') //true isNaN('') //false isNaN(true) //false isNaN(&quot; data-og-host=&quot;www.w3schools.com&quot; data-og-source-url=&quot;https://www.w3schools.com/jsref/jsref_isnan.asp&quot; data-og-url=&quot;https://www.w3schools.com/jsref/jsref_isnan.asp&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/e7EH2/hyIQ12Orj4/V1OWa2qCfPKYmiKlo6Krs0/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://www.w3schools.com/jsref/jsref_isnan.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.w3schools.com/jsref/jsref_isnan.asp&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/e7EH2/hyIQ12Orj4/V1OWa2qCfPKYmiKlo6Krs0/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;JavaScript isNaN() Function&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;JavaScript isNaN() Function Example Check whether a value is NaN: isNaN(123) //false isNaN(-1.23) //false isNaN(5-2) //false isNaN(0) //false isNaN('123') //false isNaN('Hello') //true isNaN('2005/12/12') //true isNaN('') //false isNaN(true) //false isNaN(&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.w3schools.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610105994210&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s) {
    let i = 0;
    var char = '';
    while(i &amp;lt; s.length){
        char = s.charAt(i);
        if(isNaN(char)) return false;
        i++;
    }
    
    return (s.length === 4 || s.length === 6) ? true : false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l?view=msvc-160&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;C++ isdigit&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610106953359&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;isdigit, iswdigit, _isdigit_l, _iswdigit_l&quot; data-og-description=&quot;Learn more about: isdigit, iswdigit, _isdigit_l, _iswdigit_l&quot; data-og-host=&quot;docs.microsoft.com&quot; data-og-source-url=&quot;https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l?view=msvc-160&quot; data-og-url=&quot;https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bVXAYI/hyISZ97B3y/81W24EKQPQRtIk9gS6ZDZK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/bmulWU/hyISXqWGoE/fk5x8K0oPLi3MEpsykUbK1/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420&quot;&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l?view=msvc-160&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l?view=msvc-160&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bVXAYI/hyISZ97B3y/81W24EKQPQRtIk9gS6ZDZK/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400,https://scrap.kakaocdn.net/dn/bmulWU/hyISXqWGoE/fk5x8K0oPLi3MEpsykUbK1/img.png?width=420&amp;amp;height=420&amp;amp;face=0_0_420_420');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;isdigit, iswdigit, _isdigit_l, _iswdigit_l&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Learn more about: isdigit, iswdigit, _isdigit_l, _iswdigit_l&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.microsoft.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610106915582&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cctype&amp;gt;
using namespace std;

bool solution(string s) {
    bool answer = true;
    int i = 0;
    if(!(s.size() == 4 || s.size() == 6)) return false;
    while(i &amp;lt; s.size()){
        char ch = s[i];
        if(isdigit(ch) == 0) return false;
        i++;
    }
    
    return true;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/173</guid>
      <comments>https://xd-jaewon.tistory.com/173#entry173comment</comments>
      <pubDate>Fri, 8 Jan 2021 20:57:58 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 문자열 내림차순으로 배치하기</title>
      <link>https://xd-jaewon.tistory.com/172</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내림차순으로 배치하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNOmik/btqSScPtOeQ/zgFjmuY8lhZNiuSTTSWAlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNOmik/btqSScPtOeQ/zgFjmuY8lhZNiuSTTSWAlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNOmik/btqSScPtOeQ/zgFjmuY8lhZNiuSTTSWAlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNOmik%2FbtqSScPtOeQ%2FzgFjmuY8lhZNiuSTTSWAlk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내림차순으로 배치하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;제한 사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;str은 길이 1 이상인 문자열입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;retrun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;Zbcdefg&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;gfedcbZ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610105247765&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    s= list(s)
    return ''.join(sorted(s, reverse=True))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610104486963&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s) {
    return s.split('').sort().reverse().join('');
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610105177350&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

string solution(string s) {
    string answer = &quot;&quot;;
    sort(s.rbegin(),s.rend());

    return s;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/172</guid>
      <comments>https://xd-jaewon.tistory.com/172#entry172comment</comments>
      <pubDate>Fri, 8 Jan 2021 20:27:36 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 문자열 내 p와 y의 개수</title>
      <link>https://xd-jaewon.tistory.com/171</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내 p와 y의 개수&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTuK2V/btqSZxKKqSn/fafMrYXjcn5MfmExCEAHRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTuK2V/btqSZxKKqSn/fafMrYXjcn5MfmExCEAHRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTuK2V/btqSZxKKqSn/fafMrYXjcn5MfmExCEAHRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTuK2V%2FbtqSZxKKqSn%2FfafMrYXjcn5MfmExCEAHRk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내 p와 y의 개수&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.&lt;/p&gt;
&lt;p&gt;예를 들어 s가&lt;span&gt;&amp;nbsp;&lt;/span&gt;pPoooyY면 true를 return하고&lt;span&gt;&amp;nbsp;&lt;/span&gt;Pyy라면 false를 return합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;문자열 s의 길이 : 50 이하의 자연수&lt;/li&gt;
&lt;li&gt;문자열 s는 알파벳으로만 이루어져 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;pPoooyY&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;Pyy&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;false&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610064134065&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    S = s.upper();
    num = 0;
    for i in S:
        if i == 'P':
            num += 1
        elif i== 'Y':
            num += -1
    return num == 0 and True or False&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript toUpperCase&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610063244896&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;String.prototype.toUpperCase() - JavaScript | MDN&quot; data-og-description=&quot;toUpperCase()&amp;nbsp;메서드는 문자열을 대문자로 변환해 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;String.prototype.toUpperCase() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;toUpperCase()&amp;nbsp;메서드는 문자열을 대문자로 변환해 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610063253004&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s){
    var num = 0;
    s.toUpperCase();
    for(let i = 0; i &amp;lt; s.length; i++){
        if(s[i] === 'P') num++;
        else if(s[i] === 'Y') num--;
    }
    
    return num === 0 ? true : false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Convert&amp;nbsp;a&amp;nbsp;String&amp;nbsp;In&amp;nbsp;C++&amp;nbsp;To&amp;nbsp;Upper&amp;nbsp;Case&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610063659529&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Convert a String In C++ To Upper Case&quot; data-og-description=&quot;How could one convert a string to upper case. The examples I have found from googling only have to deal with chars.&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case&quot; data-og-url=&quot;https://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bWy38e/hyIQZck9HX/7DuBlv8kSVUKEwNHGyi3nK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/735204/convert-a-string-in-c-to-upper-case&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bWy38e/hyIQZck9HX/7DuBlv8kSVUKEwNHGyi3nK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Convert a String In C++ To Upper Case&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;How could one convert a string to upper case. The examples I have found from googling only have to deal with chars.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610063666134&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;boost/algorithm/string.hpp&amp;gt;
using namespace std;

bool solution(string s)
{
    int num = 0;
    boost::to_upper(s);
    for(int i = 0; i &amp;lt; s.size(); i++){
        if(s[i] == 'P') num++;
        else if(s[i] == 'Y') num--;
    }
    return num == 0 ? true : false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/171</guid>
      <comments>https://xd-jaewon.tistory.com/171#entry171comment</comments>
      <pubDate>Fri, 8 Jan 2021 09:03:09 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 문자열 내 마음대로 정렬하기</title>
      <link>https://xd-jaewon.tistory.com/169</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내 마음대로 정렬하기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vggcR/btqSNlyH8dH/YKgjuVwxJAy7vlo6ppqxH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vggcR/btqSNlyH8dH/YKgjuVwxJAy7vlo6ppqxH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vggcR/btqSNlyH8dH/YKgjuVwxJAy7vlo6ppqxH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvggcR%2FbtqSNlyH8dH%2FYKgjuVwxJAy7vlo6ppqxH0%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;문자열 내 마음대로 정렬하기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [&lt;/span&gt;sun&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;bed&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;car&lt;span&gt;]이고 n이 1이면 각 단어의 인덱스 1의 문자&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;u&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;e&lt;span&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;a&lt;span&gt;로 strings를 정렬합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 조건&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;strings는 길이 1 이상, 50이하인 배열입니다.&lt;/li&gt;
&lt;li&gt;strings의 원소는 소문자 알파벳으로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;strings의 원소는 길이 1 이상, 100이하인 문자열입니다.&lt;/li&gt;
&lt;li&gt;모든 strings의 원소의 길이는 n보다 큽니다.&lt;/li&gt;
&lt;li&gt;인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 60px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;strings&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;n&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;[sun,&lt;span&gt;&amp;nbsp;&lt;/span&gt;bed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;car]&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;[car,&lt;span&gt;&amp;nbsp;&lt;/span&gt;bed,&lt;span&gt;&amp;nbsp;&lt;/span&gt;sun]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;[abce,&lt;span&gt;&amp;nbsp;&lt;/span&gt;abcd,&lt;span&gt;&amp;nbsp;&lt;/span&gt;cdx]&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;[abcd,&lt;span&gt;&amp;nbsp;&lt;/span&gt;abce,&lt;span&gt;&amp;nbsp;&lt;/span&gt;cdx]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.python.org/3/howto/sorting.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Sorting How to?&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610037783991&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Sorting HOW TO &amp;mdash; Python 3.9.1 documentation&quot; data-og-description=&quot;Sorting HOW TO Author Andrew Dalke and Raymond Hettinger Release 0.1 Python lists have a built-in list.sort() method that modifies the list in-place. There is also a sorted() built-in function that builds a new sorted list from an iterable. In this documen&quot; data-og-host=&quot;docs.python.org&quot; data-og-source-url=&quot;https://docs.python.org/3/howto/sorting.html&quot; data-og-url=&quot;https://docs.python.org/3/howto/sorting.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.python.org/3/howto/sorting.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.python.org/3/howto/sorting.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Sorting HOW TO &amp;mdash; Python 3.9.1 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Sorting HOW TO Author Andrew Dalke and Raymond Hettinger Release 0.1 Python lists have a built-in list.sort() method that modifies the list in-place. There is also a sorted() built-in function that builds a new sorted list from an iterable. In this documen&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.python.org/3/reference/expressions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python lambda&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610038598624&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;6. Expressions &amp;mdash; Python 3.9.1 documentation&quot; data-og-description=&quot;6. Expressions This chapter explains the meaning of the elements of expressions in Python. Syntax Notes: In this and the following chapters, extended BNF notation will be used to describe syntax, not lexical analysis. When (one alternative of) a syntax rul&quot; data-og-host=&quot;docs.python.org&quot; data-og-source-url=&quot;https://docs.python.org/3/reference/expressions.html&quot; data-og-url=&quot;https://docs.python.org/3/reference/expressions.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.python.org/3/reference/expressions.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.python.org/3/reference/expressions.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;6. Expressions &amp;mdash; Python 3.9.1 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;6. Expressions This chapter explains the meaning of the elements of expressions in Python. Syntax Notes: In this and the following chapters, extended BNF notation will be used to describe syntax, not lexical analysis. When (one alternative of) a syntax rul&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;docs.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610037862300&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(strings, n):
    strings.sort()
    strings.sort(key = lambda x : (x[n]))
    return strings&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1610038608384&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(strings, n) {                 
    return strings.sort((a,b)=&amp;gt;{
        if(a[n] &amp;gt; b[n]){
            return 1;
        }
        if(a[n] &amp;lt; b[n]){
            return -1;
        }
        if(a[n] === b[n]){
            if(a &amp;gt; b) return 1;
            else if(a &amp;lt; b) return -1;
            else return 0;
        }
    })
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610038909834&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;
using namespace std;

vector&amp;lt;string&amp;gt; solution(vector&amp;lt;string&amp;gt; strings, int n) {
    int len = strings.size();

    for(int i=0; i&amp;lt;len; i++)
    {
       for(int j=i+1;j&amp;lt;=len-1;j++)
       {
           if(strings[i][n] &amp;gt; strings[j][n])
           {
               string temp = strings[i];
               strings[i] = strings[j];
               strings[j] = temp;
           }

           else if(strings[i][n] == strings[j][n])
           {
               if(strings[i]&amp;gt;strings[j])
                   strings[j].swap(strings[i]);
           }
       }
    }

    return strings;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/169</guid>
      <comments>https://xd-jaewon.tistory.com/169#entry169comment</comments>
      <pubDate>Fri, 8 Jan 2021 02:02:17 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 두 정수 사이의 합</title>
      <link>https://xd-jaewon.tistory.com/168</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;두 정수 사이의 합&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JNpIG/btqSNmj72q1/Wf9XKbkQjYHadgGdKXnmBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JNpIG/btqSNmj72q1/Wf9XKbkQjYHadgGdKXnmBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JNpIG/btqSNmj72q1/Wf9XKbkQjYHadgGdKXnmBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJNpIG%2FbtqSNmj72q1%2FWf9XKbkQjYHadgGdKXnmBK%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;두 정수 사이의 합&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 조건&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a와 b가 같은 경우는 둘 중 아무 수나 리턴하세요.&lt;/li&gt;
&lt;li&gt;a와 b는 -10,000,000 이상 10,000,000 이하인 정수입니다.&lt;/li&gt;
&lt;li&gt;a와 b의 대소관계는 정해져있지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 105px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;b&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px; text-align: center;&quot;&gt;12&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/sum-function-python/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python sum&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1610032001047&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;sum() function in Python - GeeksforGeeks&quot; data-og-description=&quot;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&quot; data-og-host=&quot;www.geeksforgeeks.org&quot; data-og-source-url=&quot;https://www.geeksforgeeks.org/sum-function-python/&quot; data-og-url=&quot;https://www.geeksforgeeks.org/sum-function-python/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/y5Y8H/hyIQSD3zOx/JsfEM4ViXhFxKYD1PAjL5K/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/czhvq4/hyIQYqJVGA/Repqih25bRXkQ8WTwc6kxk/img.png?width=801&amp;amp;height=571&amp;amp;face=0_0_801_571,https://scrap.kakaocdn.net/dn/hixR9/hyIQQlWIXb/18ak9RN2wkk4ECSOwErXWk/img.png?width=801&amp;amp;height=571&amp;amp;face=0_0_801_571&quot;&gt;&lt;a href=&quot;https://www.geeksforgeeks.org/sum-function-python/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.geeksforgeeks.org/sum-function-python/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/y5Y8H/hyIQSD3zOx/JsfEM4ViXhFxKYD1PAjL5K/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/czhvq4/hyIQYqJVGA/Repqih25bRXkQ8WTwc6kxk/img.png?width=801&amp;amp;height=571&amp;amp;face=0_0_801_571,https://scrap.kakaocdn.net/dn/hixR9/hyIQQlWIXb/18ak9RN2wkk4ECSOwErXWk/img.png?width=801&amp;amp;height=571&amp;amp;face=0_0_801_571');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;sum() function in Python - GeeksforGeeks&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.geeksforgeeks.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1610032010092&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(a, b):
    answer = sum(range(min(a,b),max(a,b)+1))
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610032192369&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, b) {
    var answer = 0;
    if(a===b) return a;
    var small = a &amp;lt; b ? a : b;
    var big = a &amp;gt; b ? a : b;

    for(let i = small; i &amp;lt;= big; i++){
        answer += i;
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1610032348752&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

long long solution(int a, int b) {
    long long answer = 0;
    if( a == b ) return a;
    int small = a &amp;lt; b ? a : b;
    int big = a &amp;gt; b ? a : b;
    
    for(int i = small; i &amp;lt;= big; i++){
        answer += i;
    }
    return answer;
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/168</guid>
      <comments>https://xd-jaewon.tistory.com/168#entry168comment</comments>
      <pubDate>Fri, 8 Jan 2021 00:13:08 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 나누어 떨어지는 배열</title>
      <link>https://xd-jaewon.tistory.com/166</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; alt=&quot;나누어 떨어지는 배열&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xn7bu/btqSdtv7u7E/TvfnKpnj1xsE18847dRKEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xn7bu/btqSdtv7u7E/TvfnKpnj1xsE18847dRKEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xn7bu/btqSdtv7u7E/TvfnKpnj1xsE18847dRKEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXn7bu%2FbtqSdtv7u7E%2FTvfnKpnj1xsE18847dRKEk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-ke-mobilestyle=&quot;widthContent&quot; alt=&quot;나누어 떨어지는 배열&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;span&gt;제한사항&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;arr은 자연수를 담은 배열입니다.&lt;/li&gt;
&lt;li&gt;정수 i, j에 대해 i &amp;ne; j 이면 arr[i] &amp;ne; arr[j] 입니다.&lt;/li&gt;
&lt;li&gt;divisor는 자연수입니다.&lt;/li&gt;
&lt;li&gt;array는 길이 1 이상인 배열입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;divisior&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;retrun&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[5, 9, 7, 10]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[5, 10]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[2, 36, 1, 3]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1, 2, 3, 36]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[3,2,6]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[-1]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.quora.com/What-does-the-or-operator-mean-in-Pythons-return-statement&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;What does the &quot;or&quot; operator mean in Python's &quot;return statement&quot;?&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1609522224278&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;article&quot; data-og-title=&quot;What does the &amp;quot;or&amp;quot; operator mean in Python's &amp;quot;return statement&amp;quot;?&quot; data-og-description=&quot;Answer (1 of 7): The uses of &amp;lsquo;or&amp;rsquo; in Python are many and are logically fantastic, and This is one of them. When to use &amp;lsquo;or&amp;rsquo; with &amp;lsquo;return&amp;rsquo;? When you want to return a value, but you aren&amp;rsquo;t sure what to choose between two variables that may one &quot; data-og-host=&quot;www.quora.com&quot; data-og-source-url=&quot;https://www.quora.com/What-does-the-or-operator-mean-in-Pythons-return-statement&quot; data-og-url=&quot;https://www.quora.com/What-does-the-or-operator-mean-in-Pythons-return-statement&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bCIBN3/hyIMpa03vg/7mEgTRPg321mHBxthb26nK/img.jpg?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/lGdXE/hyIMuwCrPX/FYLUu4vK6pm7sxetRYjBNK/img.jpg?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315&quot;&gt;&lt;a href=&quot;https://www.quora.com/What-does-the-or-operator-mean-in-Pythons-return-statement&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.quora.com/What-does-the-or-operator-mean-in-Pythons-return-statement&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bCIBN3/hyIMpa03vg/7mEgTRPg321mHBxthb26nK/img.jpg?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315,https://scrap.kakaocdn.net/dn/lGdXE/hyIMuwCrPX/FYLUu4vK6pm7sxetRYjBNK/img.jpg?width=600&amp;amp;height=315&amp;amp;face=0_0_600_315');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;What does the &quot;or&quot; operator mean in Python's &quot;return statement&quot;?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Answer (1 of 7): The uses of &amp;lsquo;or&amp;rsquo; in Python are many and are logically fantastic, and This is one of them. When to use &amp;lsquo;or&amp;rsquo; with &amp;lsquo;return&amp;rsquo;? When you want to return a value, but you aren&amp;rsquo;t sure what to choose between two variables that may one&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.quora.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1609522308251&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr, divisor):
    answer = []
    for n in arr:
        if(n % divisor == 0):
            answer.append(n)
    return sorted(answer) or [-1]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609521985581&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr, divisor) {
    var answer = [];
    for(let i = 0; i &amp;lt; arr.length; i++){
        if(arr[i] % divisor == 0){
            answer.push(arr[i]);
        }
    }
    if(answer.length &amp;lt; 1){
        answer.push(-1);
    }
    return answer.sort((a,b)=&amp;gt;a-b);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609522562745&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; arr, int divisor) {
    vector&amp;lt;int&amp;gt; answer;
    
    for(int i = 0; i &amp;lt; arr.size(); i++){
        if(arr[i] % divisor == 0){
            answer.push_back(arr[i]);
        }
    }
    
    if(answer.size() &amp;lt; 1){
       answer.push_back(-1);
    } else {
        sort(answer.begin(), answer.end());
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/166</guid>
      <comments>https://xd-jaewon.tistory.com/166#entry166comment</comments>
      <pubDate>Sat, 2 Jan 2021 02:36:17 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 같은 숫자는 싫어</title>
      <link>https://xd-jaewon.tistory.com/165</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;같은 숫자는 싫어&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMYWrH/btqR9mRO8bV/lGRtsieTFnyJqY2NuW2660/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMYWrH/btqR9mRO8bV/lGRtsieTFnyJqY2NuW2660/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMYWrH/btqR9mRO8bV/lGRtsieTFnyJqY2NuW2660/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMYWrH%2FbtqR9mRO8bV%2FlGRtsieTFnyJqY2NuW2660%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;같은 숫자는 싫어&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.&lt;/li&gt;
&lt;li&gt;arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;배열 arr의 크기 : 1,000,000 이하의 자연수&lt;/li&gt;
&lt;li&gt;배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;입출력예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;arr&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;answer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,1,3,3,0,1,1]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[1,3,0,1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[4,4,4,3,3]&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;[4,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609521193479&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(arr):
    answer = []
    for a in arr:
        if len(answer) &amp;lt; 1:
            answer.append(a)
        elif answer[len(answer)-1] != a:
            answer.append(a)

    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609520090406&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr)
{
    var answer = arr;
    
    for(let i = 0; i &amp;lt; answer.length; i++){
        if(answer[i] == answer[i+1]){
            answer.splice(i, 1);
            i--
        }
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위 코드로 효율성 검사를 통과하지 못하였다.&lt;/p&gt;
&lt;p&gt;이후 set과 indexof등을 이용하려고 했지만...&lt;/p&gt;
&lt;p&gt;같은 값이 두 번 이상 나올 경우를 만족하지 못하기 때문에 다른 방법을 찾았다.&lt;/p&gt;
&lt;p&gt;어렵게 생각했다... 그냥 빈 배열 만들고 push넣어주면 쉽게 해결하는 문제였다.&lt;/p&gt;
&lt;p&gt;(새해 들자말자 역대급 뻘짓이었다.)&lt;/p&gt;
&lt;pre id=&quot;code_1609520780850&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(arr){
    var answer = [];
    for(var i = 0; i &amp;lt; arr.length; i++){
        if(arr[i] !== arr[i + 1]){
           answer.push(arr[i]);
        }        
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609521384368&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; arr) 
{
    vector&amp;lt;int&amp;gt; answer;
    
    for(int i = 0; i &amp;lt; arr.size(); i++){
        if(arr[i] != arr[i + 1]){
            answer.push_back(arr[i]);
        }        
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;case17번에서 걸린다..?&lt;/p&gt;
&lt;pre id=&quot;code_1609521601851&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;vector&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; arr) 
{
    vector&amp;lt;int&amp;gt; answer;
    int temp=arr[0];
    answer.push_back(temp);
    for(int i = 1; i &amp;lt; arr.size(); i++){
        if(arr[i] != temp){
            answer.push_back(arr[i]);
        }
        temp = arr[i];
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/165</guid>
      <comments>https://xd-jaewon.tistory.com/165#entry165comment</comments>
      <pubDate>Sat, 2 Jan 2021 02:16:27 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 가운데 글자 가져오기</title>
      <link>https://xd-jaewon.tistory.com/164</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;가운데 글자 가져오기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ12Og/btqSgL4eX4l/9cAktn28nuzmPlFsLdF79k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ12Og/btqSgL4eX4l/9cAktn28nuzmPlFsLdF79k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ12Og/btqSgL4eX4l/9cAktn28nuzmPlFsLdF79k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ12Og%2FbtqSgL4eX4l%2F9cAktn28nuzmPlFsLdF79k%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;가운데 글자 가져오기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;s는 길이가 1 이상, 100이하인 스트링입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;s&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;abcde&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;qwer&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;we&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/19264167/python-vs-operator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;python // operator vs / operator&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1609509543351&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Python / vs // operator&quot; data-og-description=&quot;I encountered the use of // opertor in place of / in a python tutorial I was going through. What is the difference between / and // operator in Python?&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/19264167/python-vs-operator&quot; data-og-url=&quot;https://stackoverflow.com/questions/19264167/python-vs-operator&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gu8nv/hyIMt5sHmU/ayrSCdTxqK17u7NALL0xRK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/19264167/python-vs-operator&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/19264167/python-vs-operator&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gu8nv/hyIMt5sHmU/ayrSCdTxqK17u7NALL0xRK/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Python / vs // operator&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I encountered the use of // opertor in place of / in a python tutorial I was going through. What is the difference between / and // operator in Python?&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1609509871956&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(s):
    answer = ''
    length = len(s)
    mid = length//2
    print(length//2)
    if length % 2 :
        answer = s[mid]
    else : 
        answer = s[mid-1:mid+1]
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;javaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609509175731&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(s) {
    var answer = '';
    var length = s.length;
    if( length%2 == 0){
        answer += s[(length/2)-1];
    }
    answer += s[Math.floor(length/2)];
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609510033477&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;cmath&amp;gt;

using namespace std;

string solution(string s) {
    string answer = &quot;&quot;;
    int length = s.length();
    if(length%2 == 0){
        answer += s[(length/2)-1];
    }
    answer += s[trunc(length/2)];
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/164</guid>
      <comments>https://xd-jaewon.tistory.com/164#entry164comment</comments>
      <pubDate>Fri, 1 Jan 2021 23:07:33 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 3진법 뒤집기</title>
      <link>https://xd-jaewon.tistory.com/163</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;3진법 뒤집기&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8tXzK/btqR9mX0Upy/Xnd3gRFHZSrbV3twtkSgbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8tXzK/btqR9mX0Upy/Xnd3gRFHZSrbV3twtkSgbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8tXzK/btqR9mX0Upy/Xnd3gRFHZSrbV3twtkSgbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8tXzK%2FbtqR9mX0Upy%2FXnd3gRFHZSrbV3twtkSgbk%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;3진법 뒤집기&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;n은 1 이상 100,000,000 이하인 자연수입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;n&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;result&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;45&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;125&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;229&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;s&gt;3진법이 뭔지 모르겠다.&lt;/s&gt; &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%82%BC%EC%A7%84%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;3진법&lt;/a&gt;부터 공부하자.&lt;/p&gt;
&lt;figure id=&quot;og_1609432183154&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;삼진법 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전.&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%82%BC%EC%A7%84%EB%B2%95&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/%EC%82%BC%EC%A7%84%EB%B2%95&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%82%BC%EC%A7%84%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/%EC%82%BC%EC%A7%84%EB%B2%95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;삼진법 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;위키백과, 우리 모두의 백과사전.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.programiz.com/python-programming/methods/list/reverse&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python - list reversed&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1609433275916&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Python List reverse()&quot; data-og-description=&quot;Join our newsletter for the latest updates.&quot; data-og-host=&quot;www.programiz.com&quot; data-og-source-url=&quot;https://www.programiz.com/python-programming/methods/list/reverse&quot; data-og-url=&quot;https://www.programiz.com/python-programming/methods/list/reverse&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.programiz.com/python-programming/methods/list/reverse&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.programiz.com/python-programming/methods/list/reverse&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Python List reverse()&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Join our newsletter for the latest updates.&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.programiz.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1609433285018&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n):
    threeNum = ''
    while n &amp;gt; 0:
        threeNum += str(n%3)
        n = n//3
    answer = 0
    count = 1

    for eachChar in reversed(threeNum):
        answer += count * int(eachChar)
        count *= 3

    return answer
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript - ParseInt&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1609432688393&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;parseInt() - JavaScript | MDN&quot; data-og-description=&quot;parseInt() 함수는 문자열 인자를&amp;nbsp;구문분석하여 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to &quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;parseInt() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;parseInt() 함수는 문자열 인자를&amp;nbsp;구문분석하여 특정 진수(수의 진법 체계에 기준이 되는 값)의 정수를 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1609432951871&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n) {
    let answer = n.toString(3).split(&quot;&quot;).reverse().join(&quot;&quot;);;
    return parseInt(answer, 3);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C&lt;/b&gt;&lt;b&gt;++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609434384430&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(int n) {
    int answer = 0;
    string result = &quot;&quot;;
    
    while (n &amp;gt; 0){
        int tempInt = (n % 3);
        char tempChar = static_cast&amp;lt;char&amp;gt;(tempInt);
        result += tempChar;
        n /= 3;
    }

    int count = 1;
    
    for(int i = result.size()-1; i &amp;gt;= 0; i--){
        answer += result[i] * count;
        count *= 3;
    } 
    
    return answer;
}
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/163</guid>
      <comments>https://xd-jaewon.tistory.com/163#entry163comment</comments>
      <pubDate>Fri, 1 Jan 2021 02:06:35 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 2016년</title>
      <link>https://xd-jaewon.tistory.com/162</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;2016년&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqGZFa/btqRQTcmmsm/nwVhXQyzo9QyWGl4342Hi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqGZFa/btqRQTcmmsm/nwVhXQyzo9QyWGl4342Hi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqGZFa/btqRQTcmmsm/nwVhXQyzo9QyWGl4342Hi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqGZFa%2FbtqRQTcmmsm%2FnwVhXQyzo9QyWGl4342Hi0%2Fimg.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; alt=&quot;2016년&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN, MON, TUE, WED, THU, FRI, SAT입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열&lt;span&gt;&amp;nbsp;&lt;/span&gt;TUE를 반환하세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 조건&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2016년은 윤년입니다.&lt;/li&gt;
&lt;li&gt;2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;a&lt;/td&gt;
&lt;td&gt;b&lt;/td&gt;
&lt;td&gt;result&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;24&lt;/td&gt;
&lt;td&gt;TUE&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609431811080&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(a, b):
    answer = ''
    totalDay = 0
    day = [&quot;FRI&quot;, &quot;SAT&quot;, &quot;SUN&quot;, &quot;MON&quot;, &quot;TUE&quot;, &quot;WED&quot;, &quot;THU&quot;];
    dayMax = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31];
    for i in range(0, a-1):
        totalDay += dayMax[i]
    totalDay += b-1;
    answer = day[totalDay%7];
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609431537482&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(a, b) {
    var answer = '';
    var totalDay = 0;
    const day = [&quot;FRI&quot;, &quot;SAT&quot;, &quot;SUN&quot;, &quot;MON&quot;, &quot;TUE&quot;, &quot;WED&quot;, &quot;THU&quot;];
    const dayMax = [31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31];
    for(let i = 0; i &amp;lt; a-1; i++){
        totalDay += dayMax[i];
    }
    totalDay += b-1;
    answer = day[totalDay%7];
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1609432017724&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

string solution(int a, int b) {
    string answer = &quot;&quot;;
    const string day[] = {&quot;FRI&quot;, &quot;SAT&quot;, &quot;SUN&quot;, &quot;MON&quot;, &quot;TUE&quot;, &quot;WED&quot;, &quot;THU&quot;};
    const int dayMax[] = {31, 29, 31, 30, 31, 30,31, 31, 30, 31, 30, 31};
    int totalDay = 0;
    for(int i = 0; i &amp;lt; a-1; i++){
        totalDay += dayMax[i];
    }
    totalDay += b-1;
    answer = day[totalDay%7];
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/162</guid>
      <comments>https://xd-jaewon.tistory.com/162#entry162comment</comments>
      <pubDate>Fri, 1 Jan 2021 01:27:09 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 유니폼</title>
      <link>https://xd-jaewon.tistory.com/158</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;프로그래머스스 유니폼&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xF9mR/btqRjeTEhZa/xt2heSNkZmNfBQjm4aecYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xF9mR/btqRjeTEhZa/xt2heSNkZmNfBQjm4aecYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xF9mR/btqRjeTEhZa/xt2heSNkZmNfBQjm4aecYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxF9mR%2FbtqRjeTEhZa%2Fxt2heSNkZmNfBQjm4aecYK%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;프로그래머스스 유니폼&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다.&lt;/p&gt;
&lt;p&gt;전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 사항&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 학생의 수는 2명 이상 30명 이하입니다.&lt;/li&gt;
&lt;li&gt;체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.&lt;/li&gt;
&lt;li&gt;여벌의 체육복을 가져온 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다.&lt;/li&gt;
&lt;li&gt;여벌 체육복이 있는 학생만 다른 학생에게 체육복을 빌려줄 수 있습니다.&lt;/li&gt;
&lt;li&gt;여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 72px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;n&lt;/td&gt;
&lt;td&gt;lost&lt;/td&gt;
&lt;td&gt;reserve&lt;/td&gt;
&lt;td&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[2, 4]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[1, 3, 5]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[2, 4]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[3]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[3]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;[1]&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript - 첫번째 코드&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608760525324&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, lost, reserve) {
    var realLost = lost;
    var realReserve = reserve;
    
    for(let i = 0; i &amp;lt; lost.length; i++){
        for(let j = 0; j &amp;lt; reserve.length; j++){
            if(realLost[i] === realReserve[j]){
                realLost.splice(i, 1);
                realReserve.splice(j, 1);
                i --;
                j --;
            }
        }
    }
    
    for(let i = 0; i &amp;lt; realReserve.length; i++){
        var iPlus = realReserve[i]+1; 
        var iMinus = realReserve[i]-1;
        let j = 0;
        while(j &amp;lt;= realLost.length){
            if(iPlus === realLost[j] || iMinus === realLost[j]){
                realLost.splice(j, 1);
                break;
            }
            j++;
        }
    }
    
    return n - realLost.length;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript - filter&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608760616395&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Array.prototype.filter() - JavaScript | MDN&quot; data-og-description=&quot;filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive exampl&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Array.prototype.filter() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive exampl&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript - includes&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608760747896&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Array.prototype.includes() - JavaScript | MDN&quot; data-og-description=&quot;includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://githu&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/includes&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Array.prototype.includes() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;includes() 메서드는 배열이 특정 요소를 포함하고 있는지 판별합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://githu&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;JavaScript - find&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608760632476&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Array.prototype.find() - JavaScript | MDN&quot; data-og-description=&quot;find()&amp;nbsp;메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을&amp;nbsp;반환합니다. 그런 요소가 없다면 undefined를 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to c&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Array.prototype.find() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;find()&amp;nbsp;메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을&amp;nbsp;반환합니다. 그런 요소가 없다면 undefined를 반환합니다. The source for this interactive example is stored in a GitHub repository. If you'd like to c&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;b&gt;JavaScript - 두번째 코드&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608760784357&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(n, lost, reserve) {
    const realReserve = reserve.filter(element =&amp;gt; !lost.includes(element));
    const realLost = lost.filter(element =&amp;gt; !reserve.includes(element));

    const ableNum = realLost.filter(filterElement =&amp;gt; {
        return realReserve.find((findElement, index) =&amp;gt; {
            const has = findElement === filterElement-1 || findElement === filterElement+1;
            if (has) {
                realReserve.splice(index, 1);
            }
            return has;
        });
    }).length;
    return n - (realLost.length - ableNum);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.tutorialspoint.com/list-methods-in-python-in-not-in-len-min-max&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python in, not in operator&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608763249783&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;List Methods in Python - in, not in, len(), min(), max()&quot; data-og-description=&quot;List Methods in Python - in, not in, len(), min(), max() In this article, we will learn about various types of list methods available to us in Python 3.x. Or earlier. These operators allow us to perform the basic operations on the list content. In &amp;amp; Not in&quot; data-og-host=&quot;www.tutorialspoint.com&quot; data-og-source-url=&quot;https://www.tutorialspoint.com/list-methods-in-python-in-not-in-len-min-max&quot; data-og-url=&quot;https://www.tutorialspoint.com/list-methods-in-python-in-not-in-len-min-max&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.tutorialspoint.com/list-methods-in-python-in-not-in-len-min-max&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.tutorialspoint.com/list-methods-in-python-in-not-in-len-min-max&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;List Methods in Python - in, not in, len(), min(), max()&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;List Methods in Python - in, not in, len(), min(), max() In this article, we will learn about various types of list methods available to us in Python 3.x. Or earlier. These operators allow us to perform the basic operations on the list content. In &amp;amp; Not in&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.tutorialspoint.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1608766137727&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(n, lost, reserve):
    realLost = [element for element in lost if element not in reserve]
    realReserve = [element for element in reserve if element not in lost]
    
    for e in realReserve:
        before = e - 1
        after = e + 1
        if before in realLost:
            realLost.remove(before)
        elif after in realLost:
            realLost.remove(after)
    
    return n-len(realLost)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/596162/can-you-remove-elements-from-a-stdlist-while-iterating-through-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Can&amp;nbsp;you&amp;nbsp;remove&amp;nbsp;elements&amp;nbsp;from&amp;nbsp;a&amp;nbsp;std::list&amp;nbsp;while&amp;nbsp;iterating&amp;nbsp;through&amp;nbsp;it?&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608777188649&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Can you remove elements from a std::list while iterating through it?&quot; data-og-description=&quot;I've got code that looks like this: for (std::list&amp;lt;item*&amp;gt;::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)-&amp;gt;update(); //if (!isActive) // items.remove(*i...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/596162/can-you-remove-elements-from-a-stdlist-while-iterating-through-it&quot; data-og-url=&quot;https://stackoverflow.com/questions/596162/can-you-remove-elements-from-a-stdlist-while-iterating-through-it&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cFOgGy/hyIGmdNN0Q/setkpOE62rq4GuOBbJ9cu1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/596162/can-you-remove-elements-from-a-stdlist-while-iterating-through-it&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/596162/can-you-remove-elements-from-a-stdlist-while-iterating-through-it&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cFOgGy/hyIGmdNN0Q/setkpOE62rq4GuOBbJ9cu1/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Can you remove elements from a std::list while iterating through it?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;I've got code that looks like this: for (std::list&amp;lt;item*&amp;gt;::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)-&amp;gt;update(); //if (!isActive) // items.remove(*i...&amp;lt;/item*&amp;gt;&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1608777138539&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;

using namespace std;

int solution(int n, vector&amp;lt;int&amp;gt; lost, vector&amp;lt;int&amp;gt; reserve) {
    int lostSize = lost.size();
    int reserveSize = reserve.size();

    int numLeft, numRight;

    vector&amp;lt;int&amp;gt;::iterator iterLost, iterReserve;
    for ( iterReserve = reserve.begin(); iterReserve != reserve.end();) {
        for ( iterLost = lost.begin(); iterLost != lost.end(); iterLost++) {
            if ( *iterLost == *iterReserve ) {
                lost.erase(iterLost);
                reserve.erase(iterReserve);
                break;
            }
        }
        if ( reserveSize != reserve.size() ) {
             reserveSize = reserve.size();
        } else {
            iterReserve++;
        }
    }

    for ( iterReserve = reserve.begin(); iterReserve != reserve.end(); iterReserve++) {
        numLeft = *iterReserve - 1;
        numRight = *iterReserve + 1;
        for ( iterLost = lost.begin(); iterLost != lost.end(); ) {
            if ( *iterLost == numLeft || *iterLost == numRight ) {
                lost.erase(iterLost);
                break;
            }
            else {
                iterLost++;
            }
        }

    } 
    
    return n - lost.size();
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/158</guid>
      <comments>https://xd-jaewon.tistory.com/158#entry158comment</comments>
      <pubDate>Thu, 24 Dec 2020 07:33:01 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] k번째 수</title>
      <link>https://xd-jaewon.tistory.com/152</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 k번째 수&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x4BWv/btqQIa7bTAX/Gi1rHQPv2qgAOMyleRwMHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x4BWv/btqQIa7bTAX/Gi1rHQPv2qgAOMyleRwMHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x4BWv/btqQIa7bTAX/Gi1rHQPv2qgAOMyleRwMHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4BWv%2FbtqQIa7bTAX%2FGi1rHQPv2qgAOMyleRwMHK%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 k번째 수&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다.&lt;/p&gt;
&lt;p&gt;예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다.&lt;/li&gt;
&lt;li&gt;1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다.&lt;/li&gt;
&lt;li&gt;2에서 나온 배열의 3번째 숫자는 5입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;array의 길이는 1 이상 100 이하입니다.&lt;/li&gt;
&lt;li&gt;array의 각 원소는 1 이상 100 이하입니다.&lt;/li&gt;
&lt;li&gt;commands의 길이는 1 이상 50 이하입니다.&lt;/li&gt;
&lt;li&gt;commands의 각 원소는 길이가 3입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;array&lt;/td&gt;
&lt;td&gt;commands&lt;/td&gt;
&lt;td&gt;return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[1, 5, 2, 6, 3, 7, 4]&lt;/td&gt;
&lt;td&gt;[[2, 5, 3], [4, 4, 1], [1, 7, 3]]&lt;/td&gt;
&lt;td&gt;[5, 6, 3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python3&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463358328&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(array, commands):
    answer = []
    for i in commands:
        temp = array[i[0]-1:i[1]]
        temp.sort()
        answer.append(temp[i[2]-1])
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463377081&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(array, commands) {
    var answer = [];
    var temp = [];
    for(let i =0; i&amp;lt; commands.length; i++){
        temp = array.slice(commands[i][0]-1,commands[i][1]);
        temp.sort((a,b)=&amp;gt;a-b);
        answer.push(temp[commands[i][2]-1]);
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463550403&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; array, vector&amp;lt;vector&amp;lt;int&amp;gt;&amp;gt; commands) {
    vector&amp;lt;int&amp;gt; answer;

    for(int i=0; i &amp;lt; commands.size(); i++){
        vector&amp;lt;int&amp;gt; temp;
        temp.assign(array.begin() + commands[i][0] - 1, array.begin() + commands[i][1]);
        sort(temp.begin(), temp.end());
        answer.push_back(temp[commands[i][2] - 1]);
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/152</guid>
      <comments>https://xd-jaewon.tistory.com/152#entry152comment</comments>
      <pubDate>Sun, 20 Dec 2020 20:26:05 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 완주하지 못한 선수</title>
      <link>https://xd-jaewon.tistory.com/151</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 완주하지 못한 선수&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIdnVN/btqQU0uBZxt/K3UN6F8dT8Vz4240kx5nN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIdnVN/btqQU0uBZxt/K3UN6F8dT8Vz4240kx5nN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIdnVN/btqQU0uBZxt/K3UN6F8dT8Vz4240kx5nN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIdnVN%2FbtqQU0uBZxt%2FK3UN6F8dT8Vz4240kx5nN1%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 완주하지 못한 선수&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.&lt;/p&gt;
&lt;p&gt;마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한사항&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다.&lt;/li&gt;
&lt;li&gt;completion의 길이는 participant의 길이보다 1 작습니다.&lt;/li&gt;
&lt;li&gt;참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.&lt;/li&gt;
&lt;li&gt;참가자 중에는 동명이인이 있을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 64px;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333;&quot;&gt;participant&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333;&quot;&gt;completion&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333;&quot;&gt;return&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[leo,&lt;span&gt;&amp;nbsp;&lt;/span&gt;kiki,&lt;span&gt;&amp;nbsp;&lt;/span&gt;eden]&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[eden,&lt;span&gt;&amp;nbsp;&lt;/span&gt;kiki]&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;leo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[marina,&lt;span&gt;&amp;nbsp;&lt;/span&gt;josipa,&lt;span&gt;&amp;nbsp;&lt;/span&gt;nikola,&lt;span&gt;&amp;nbsp;&lt;/span&gt;vinko,&lt;span&gt;&amp;nbsp;&lt;/span&gt;filipa]&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[josipa,&lt;span&gt;&amp;nbsp;&lt;/span&gt;filipa,&lt;span&gt;&amp;nbsp;&lt;/span&gt;marina,&lt;span&gt;&amp;nbsp;&lt;/span&gt;nikola]&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;vinko&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[mislav,&lt;span&gt;&amp;nbsp;&lt;/span&gt;stanko,&lt;span&gt;&amp;nbsp;&lt;/span&gt;mislav,&lt;span&gt;&amp;nbsp;&lt;/span&gt;ana]&lt;/td&gt;
&lt;td style=&quot;height: 18px;&quot;&gt;[stanko,&lt;span&gt;&amp;nbsp;&lt;/span&gt;ana,&lt;span&gt;&amp;nbsp;&lt;/span&gt;mislav]&lt;/td&gt;
&lt;td&gt;&lt;span&gt;mislav&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;python3&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463063181&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(participant, completion):
    answer = ''
    participant.sort();
    completion.sort();
    
    for i, v in enumerate(participant) :
        try:
            if(participant[i] != completion[i]):
                return participant[i]
        except IndexError:
            return participant[i]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463084476&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(participant, completion) {
    var answer = '';
    var par = participant.sort();
    var com = completion.sort(); 
    
    for(var i=0;i&amp;lt;par.length;i++){
        if(par[i] !== com[i]){
            answer = par[i];
            return answer;
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608463101116&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

string solution(vector&amp;lt;string&amp;gt; participant, vector&amp;lt;string&amp;gt; completion) {
    string answer = &quot;&quot;;
    sort(participant.begin(), participant.end());
    sort(completion.begin(), completion.end());
    
    for(int i = 0; i &amp;lt; completion.size(); i++){
        if(participant[i] != completion[i]){
            answer = participant[i];
            return answer;
        }
    }
    answer = participant[participant.size()-1];
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;+)&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&lt;a href=&quot;https://www.w3schools.com/python/python_try_except.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Python Try Except&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608463170333&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Python Try Except&quot; data-og-description=&quot;Python Try Except The try block lets you test a block of code for errors. The except block lets you handle the error. The finally block lets you execute code, regardless of the result of the try- and except blocks. Exception Handling When an error occurs, &quot; data-og-host=&quot;www.w3schools.com&quot; data-og-source-url=&quot;https://www.w3schools.com/python/python_try_except.asp&quot; data-og-url=&quot;https://www.w3schools.com/python/python_try_except.asp&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c2wT7n/hyICMRFtV8/0Czzhxv2XxReckZFXMIz81/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://www.w3schools.com/python/python_try_except.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.w3schools.com/python/python_try_except.asp&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c2wT7n/hyICMRFtV8/0Czzhxv2XxReckZFXMIz81/img.jpg?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Python Try Except&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Python Try Except The try block lets you test a block of code for errors. The except block lets you handle the error. The finally block lets you execute code, regardless of the result of the try- and except blocks. Exception Handling When an error occurs,&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.w3schools.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/151</guid>
      <comments>https://xd-jaewon.tistory.com/151#entry151comment</comments>
      <pubDate>Sun, 20 Dec 2020 20:19:38 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스|Level.1] 모의고사</title>
      <link>https://xd-jaewon.tistory.com/150</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 모의고사&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rcVCk/btqQLl7kUlI/j05lJXuhYWbla9k3qWueq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rcVCk/btqQLl7kUlI/j05lJXuhYWbla9k3qWueq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rcVCk/btqQLl7kUlI/j05lJXuhYWbla9k3qWueq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrcVCk%2FbtqQLl7kUlI%2Fj05lJXuhYWbla9k3qWueq0%2Fimg.png&quot; data-filename=&quot;프로그래머스Lv.1.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot; alt=&quot;코딩테스트 모의고사&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;문제 설명&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.&lt;/p&gt;
&lt;p&gt;1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...&lt;br /&gt;2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...&lt;br /&gt;3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...&lt;/p&gt;
&lt;p&gt;1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;제한 조건&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;시험은 최대 10,000 문제로 구성되어있습니다.&lt;/li&gt;
&lt;li&gt;문제의 정답은 1, 2, 3, 4, 5중 하나입니다.&lt;/li&gt;
&lt;li&gt;가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;입출력 예&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333;&quot;&gt;answers&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333;&quot;&gt;return&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[1,2,3,4,5]&lt;/td&gt;
&lt;td&gt;[1]&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[1,3,2,4,2]&lt;/td&gt;
&lt;td&gt;[1,2,3]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Python3&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608400392287&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(answers):
    answer = []
    sampleB = [2, 1, 2, 3, 2, 4, 2, 5];
    sampleC = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
    
    abandoner = 3;
    temp = [];
    
    for i in range(abandoner):
        temp.append(0)
    
    for idx, select in enumerate(answers):
        if select == idx%5+1:
            temp[0] += 1
        if select == sampleB[idx%len(sampleB)]:
            temp[1] += 1
        if select == sampleC[idx%len(sampleC)]:
            temp[2] += 1
            
    for idx, result in enumerate(temp):
        if result == max(temp):
            answer.append(idx+1)
            
    return answer&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;JavaScript&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608400421822&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(answers) {
    var answer = [];
    var sampleB = [2, 1, 2, 3, 2, 4, 2, 5];
    var sampleC = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  
    var abandoner = 3;
    var temp = [];
    for(let i = 0; i &amp;lt; 3; i++){
        temp[i] = 0;
    }
    
    for(let i=0; i&amp;lt;answers.length; i++){
        if( answers[i] === i%5+1 ){
            temp[0] = temp[0] + 1;
        }
        if( answers[i] === sampleB[i%sampleB.length]){
            temp[1] = temp[1] + 1;
        }
        if( answers[i] === sampleC[i%sampleC.length]){
            temp[2] = temp[2] + 1;
        }
    }
   
    var max = Math.max.apply(null, temp);
    for(let i = 0; i &amp;lt; abandoner; i++){
        if( max === temp[i]){
            answer.push(i+1);
        }
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;C++&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608400444189&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;string&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;

vector&amp;lt;int&amp;gt; solution(vector&amp;lt;int&amp;gt; answers) {
    vector&amp;lt;int&amp;gt; answer;
    vector&amp;lt;int&amp;gt; sampleB = {2, 1, 2, 3, 2, 4, 2, 5};
    vector&amp;lt;int&amp;gt; sampleC = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    
    int abandoner = 3;
    vector&amp;lt;int&amp;gt; temp(abandoner);
    
        for(int i=0; i&amp;lt;answers.size(); i++){
        if( answers[i] == i%5+1 ){
            temp[0] = temp[0] + 1;
        }
        if( answers[i] == sampleB[i%sampleB.size()]){
            temp[1] = temp[1] + 1;
        }
        if( answers[i] == sampleC[i%sampleC.size()]){
            temp[2] = temp[2] + 1;
        }
    }
    
    int max = *max_element(temp.begin(), temp.end());
    for (int i = 0; i &amp;lt; abandoner; i++){
         if (max == temp[i]){
             answer.push_back(i + 1);
         }
    }
        
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;+)&lt;/b&gt;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p&gt;&lt;a href=&quot;http://python-reference.readthedocs.io/en/latest/docs/functions/enumerate.html&quot;&gt;python&amp;nbsp;enumerate&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608400966232&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;enumerate &amp;mdash; Python Reference (The Right Way) 0.1 documentation&quot; data-og-description=&quot;Docs &amp;raquo; enumerate Edit on GitHub enumerate Description Returns an enumerate object. Syntax enumerate (sequence, start=0) sequence Required. Must be a sequence, an iterator, or some other object which supports iteration. start Optional. Index at which enume&quot; data-og-host=&quot;python-reference.readthedocs.io&quot; data-og-source-url=&quot;http://python-reference.readthedocs.io/en/latest/docs/functions/enumerate.html&quot; data-og-url=&quot;https://python-reference.readthedocs.io/en/latest/docs/functions/enumerate.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://python-reference.readthedocs.io/en/latest/docs/functions/enumerate.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://python-reference.readthedocs.io/en/latest/docs/functions/enumerate.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;enumerate &amp;mdash; Python Reference (The Right Way) 0.1 documentation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Docs &amp;raquo; enumerate Edit on GitHub enumerate Description Returns an enumerate object. Syntax enumerate (sequence, start=0) sequence Required. Must be a sequence, an iterator, or some other object which supports iteration. start Optional. Index at which enume&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;python-reference.readthedocs.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max&quot;&gt;JavaScript Math.max()&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608400969693&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Math.max() - JavaScript | MDN&quot; data-og-description=&quot;Math.max()함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.Math.max([값1[, 값2[, ...]]]) 값1, 값2, ... 숫자들. 입력된 숫자 중 가장 큰 숫자를 반환합니다. 만약 인수 중 하나라도 &quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;Math.max() - JavaScript | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;Math.max()함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.Math.max([값1[, 값2[, ...]]]) 값1, 값2, ... 숫자들. 입력된 숫자 중 가장 큰 숫자를 반환합니다. 만약 인수 중 하나라도&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cplusplus.com/reference/algorithm/max_element/&quot;&gt;C++ max_element&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1608400976005&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-og-type=&quot;website&quot; data-og-title=&quot;max_element - C++ Reference&quot; data-og-description=&quot;function template &amp;lt;algorithm&amp;gt; std::max_element default (1)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last); custom (2)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last, Compare comp); Return&quot; data-og-host=&quot;www.cplusplus.com&quot; data-og-source-url=&quot;http://www.cplusplus.com/reference/algorithm/max_element/&quot; data-og-url=&quot;http://www.cplusplus.com/reference/algorithm/max_element/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://www.cplusplus.com/reference/algorithm/max_element/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.cplusplus.com/reference/algorithm/max_element/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot;&gt;max_element - C++ Reference&lt;/p&gt;
&lt;p class=&quot;og-desc&quot;&gt;function template  std::max_element default (1)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last); custom (2)template ForwardIterator max_element (ForwardIterator first, ForwardIterator last, Compare comp); Return&lt;/p&gt;
&lt;p class=&quot;og-host&quot;&gt;www.cplusplus.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>개발노트&amp;amp;IT/코딩테스트</category>
      <author>마미블루</author>
      <guid isPermaLink="true">https://xd-jaewon.tistory.com/150</guid>
      <comments>https://xd-jaewon.tistory.com/150#entry150comment</comments>
      <pubDate>Sun, 20 Dec 2020 02:55:21 +0900</pubDate>
    </item>
  </channel>
</rss>