<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>개념 이해 on Advanced Beginner</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/</link><description>Recent content in 개념 이해 on Advanced Beginner</description><generator>Hugo</generator><language>ko-KR</language><managingEditor>d8lzz1gpw@mozmail.com (kimbenji)</managingEditor><webMaster>d8lzz1gpw@mozmail.com (kimbenji)</webMaster><lastBuildDate>Wed, 13 May 2026 06:58:22 +0000</lastBuildDate><atom:link href="https://advanced-beginner.github.io/ko/docs/kotlin/concepts/index.xml" rel="self" type="application/rss+xml"/><item><title>기본 문법</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/basics/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/basics/</guid><description>&lt;h2 id="전체-비유-악보와-연주"&gt;전체 비유: 악보와 연주&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%95%85%eb%b3%b4%ec%99%80-%ec%97%b0%ec%a3%bc"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin의 기본 문법을 &lt;strong&gt;악보와 연주&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 악보는 규칙이 있지만, 좋은 악보는 불필요한 기호를 과감히 생략합니다. Kotlin도 마찬가지입니다. 세미콜론을 생략하고, 표현식 하나로 결과를 바로 돌려주며, 코드의 의도가 전면에 드러납니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;악보 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;악보의 시작 기호&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;package&lt;/code&gt; 선언&lt;/td&gt;
 &lt;td&gt;파일이 속한 네임스페이스 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;악기 배치표&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;import&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;사용할 외부 기호 불러오기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;연주 시작 지시&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;fun main&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;프로그램 진입점&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;소절 구분선 생략&lt;/td&gt;
 &lt;td&gt;세미콜론 생략&lt;/td&gt;
 &lt;td&gt;줄바꿈이 문장 끝을 의미&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;음악적 표현(한 음표로 선율)&lt;/td&gt;
 &lt;td&gt;표현식 본문&lt;/td&gt;
 &lt;td&gt;단일 표현식으로 결과 반환&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: 프로그래밍 기초 개념(변수, 함수)을 알고 있는 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: 변수와 함수의 기본 개념
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 20분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: Kotlin 소스 파일의 구조를 이해하고, 세미콜론 없이 코드를 작성하며, &lt;code&gt;fun main&lt;/code&gt;으로 프로그램을 시작할 수 있습니다.&lt;/p&gt;</description></item><item><title>변수와 타입</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/variables-types/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/variables-types/</guid><description>&lt;h2 id="전체-비유-상자와-라벨"&gt;전체 비유: 상자와 라벨&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%83%81%ec%9e%90%ec%99%80-%eb%9d%bc%eb%b2%a8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin의 변수와 타입을 &lt;strong&gt;상자와 라벨&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 상자에는 물건(값)을 담고, 라벨(타입)이 어떤 물건을 담을 수 있는지 알려 줍니다. &lt;code&gt;val&lt;/code&gt;은 한 번 담으면 교체할 수 없는 잠금 상자, &lt;code&gt;var&lt;/code&gt;은 내용물을 바꿀 수 있는 일반 상자입니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;잠금 상자&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;val&lt;/code&gt; (불변)&lt;/td&gt;
 &lt;td&gt;한 번 담으면 교체 불가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;일반 상자&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;var&lt;/code&gt; (가변)&lt;/td&gt;
 &lt;td&gt;언제든 내용물 교체 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;상자 라벨&lt;/td&gt;
 &lt;td&gt;타입 선언&lt;/td&gt;
 &lt;td&gt;담을 수 있는 값의 종류 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;자동 라벨링 기계&lt;/td&gt;
 &lt;td&gt;타입 추론&lt;/td&gt;
 &lt;td&gt;컴파일러가 타입을 자동으로 결정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;내용물 확인 창&lt;/td&gt;
 &lt;td&gt;문자열 템플릿&lt;/td&gt;
 &lt;td&gt;값을 문자열 안에 바로 삽입&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../basics/"&gt;기본 문법&lt;/a&gt;을 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 기본 문법 (패키지, 진입점, 표현식)
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: &lt;code&gt;val&lt;/code&gt;과 &lt;code&gt;var&lt;/code&gt;을 올바르게 선택하고, 기본 타입을 사용하며, 문자열 템플릿으로 값을 출력할 수 있습니다.&lt;/p&gt;</description></item><item><title>함수</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/functions/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/functions/</guid><description>&lt;h2 id="전체-비유-레시피와-요리"&gt;전체 비유: 레시피와 요리&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a0%88%ec%8b%9c%ed%94%bc%ec%99%80-%ec%9a%94%eb%a6%ac"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin의 함수를 &lt;strong&gt;레시피와 요리&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 함수는 레시피처럼 재료(매개변수)를 받아 결과물(반환값)을 만들어 냅니다. 재료에 기본값을 정해두면 매번 모든 재료를 나열하지 않아도 됩니다. 레시피를 재료로 넘길 수도 있는데, 이것이 바로 람다와 고차 함수입니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피&lt;/td&gt;
 &lt;td&gt;함수 (&lt;code&gt;fun&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;입력을 받아 출력을 만드는 단위&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 기본값&lt;/td&gt;
 &lt;td&gt;기본값 인자&lt;/td&gt;
 &lt;td&gt;인자를 생략하면 기본값 사용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;설탕 먼저&amp;rdquo; 지시&lt;/td&gt;
 &lt;td&gt;명명 인자&lt;/td&gt;
 &lt;td&gt;인자 이름을 지정해 순서 변경&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;원하는 만큼&amp;rdquo; 재료&lt;/td&gt;
 &lt;td&gt;vararg&lt;/td&gt;
 &lt;td&gt;가변 개수의 인자&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피를 재료로&lt;/td&gt;
 &lt;td&gt;람다/고차 함수&lt;/td&gt;
 &lt;td&gt;함수를 값처럼 전달&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../variables-types/"&gt;변수와 타입&lt;/a&gt;을 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin val/var, 기본 타입
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: 다양한 형태의 함수를 선언하고, 람다를 만들어 고차 함수에 전달할 수 있습니다.&lt;/p&gt;</description></item><item><title>Null Safety</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/null-safety/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/null-safety/</guid><description>&lt;h2 id="전체-비유-택배-수령과-부재-처리"&gt;전체 비유: 택배 수령과 부재 처리&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ed%83%9d%eb%b0%b0-%ec%88%98%eb%a0%b9%ea%b3%bc-%eb%b6%80%ec%9e%ac-%ec%b2%98%eb%a6%ac"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin의 Null Safety를 &lt;strong&gt;택배 수령과 부재 처리&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 택배 상자 안에 물건이 있을 수도, 없을 수도 있습니다. Kotlin은 &amp;ldquo;물건이 없을 수 있다&amp;quot;는 사실을 타입 시스템에 명시합니다. 없는 물건을 꺼내려 할 때 미리 안전하게 처리하도록 강제합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;물건이 있거나 없는 상자&lt;/td&gt;
 &lt;td&gt;nullable 타입 (&lt;code&gt;T?&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;null이 될 수 있음을 타입에 표시&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;상자 열기 전 확인&lt;/td&gt;
 &lt;td&gt;안전 호출 (&lt;code&gt;?.&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;null이면 null 반환, 아니면 계속&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;없으면 대신 이것&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;Elvis 연산자 (&lt;code&gt;?:&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;null이면 기본값 사용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;강제로 상자 열기&lt;/td&gt;
 &lt;td&gt;비-null 단언 (&lt;code&gt;!!&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;null이면 NullPointerException&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;용도 맞는 상자인지 확인&lt;/td&gt;
 &lt;td&gt;안전 캐스팅 (&lt;code&gt;as?&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;변환 실패 시 null 반환&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../functions/"&gt;함수&lt;/a&gt;를 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 기본 타입, 함수 선언
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: nullable 타입을 올바르게 다루고, &lt;code&gt;?.&lt;/code&gt;, &lt;code&gt;?:&lt;/code&gt;, &lt;code&gt;!!&lt;/code&gt;를 상황에 맞게 사용하며, Java API와 안전하게 상호운용할 수 있습니다.&lt;/p&gt;</description></item><item><title>클래스와 객체</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/classes-objects/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/classes-objects/</guid><description>&lt;h2 id="전체-비유-설계도-금형-제품"&gt;전체 비유: 설계도, 금형, 제품&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%84%a4%ea%b3%84%eb%8f%84-%ea%b8%88%ed%98%95-%ec%a0%9c%ed%92%88"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin 클래스를 &lt;strong&gt;설계도, 금형, 제품&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. &lt;code&gt;class&lt;/code&gt;는 설계도이고, 생성자는 금형입니다. &lt;code&gt;new&lt;/code&gt; 키워드 없이 금형을 직접 호출하면 제품(인스턴스)이 만들어집니다. &lt;code&gt;object&lt;/code&gt;는 하나만 존재하는 특별 제품, &lt;code&gt;companion object&lt;/code&gt;는 금형에 붙어있는 공용 도구함입니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;설계도&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;class&lt;/code&gt; 선언&lt;/td&gt;
 &lt;td&gt;인스턴스의 구조와 행동 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;금형&lt;/td&gt;
 &lt;td&gt;생성자 (primary/secondary)&lt;/td&gt;
 &lt;td&gt;인스턴스 생성 방법 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;제품&lt;/td&gt;
 &lt;td&gt;인스턴스&lt;/td&gt;
 &lt;td&gt;클래스의 구체적 실체&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;특별 한정판 (하나뿐)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;object&lt;/code&gt; 선언&lt;/td&gt;
 &lt;td&gt;싱글톤 인스턴스&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;금형 옆 공용 도구함&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;companion object&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;클래스 수준 함수와 상수&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;접근 등급&lt;/td&gt;
 &lt;td&gt;가시성 변경자&lt;/td&gt;
 &lt;td&gt;누가 어디서 사용할 수 있는지 제어&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../null-safety/"&gt;Null Safety&lt;/a&gt;를 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 기본 문법, 함수, null 안전
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: Kotlin 클래스를 정의하고, 생성자와 프로퍼티를 활용하며, 싱글톤 패턴과 companion object를 적절히 사용할 수 있습니다.&lt;/p&gt;</description></item><item><title>Data/Sealed Class</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/data-sealed-classes/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/data-sealed-classes/</guid><description>&lt;h2 id="전체-비유-도장-찍힌-서류와-닫힌-메뉴판"&gt;전체 비유: 도장 찍힌 서류와 닫힌 메뉴판&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%8f%84%ec%9e%a5-%ec%b0%8d%ed%9e%8c-%ec%84%9c%eb%a5%98%ec%99%80-%eb%8b%ab%ed%9e%8c-%eb%a9%94%eb%89%b4%ed%8c%90"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;data class&lt;/code&gt;를 &lt;strong&gt;도장 찍힌 공식 서류&lt;/strong&gt; 에, &lt;code&gt;sealed class&lt;/code&gt;를 &lt;strong&gt;항목이 고정된 메뉴판&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 공식 서류는 내용이 같으면 동일한 서류로 취급하고(equals), 빠른 분류를 위해 해시 코드가 붙습니다(hashCode). 고정 메뉴판은 등록된 항목만 주문할 수 있어 &amp;ldquo;모든 경우를 처리했는가&amp;quot;를 컴파일러가 검증합니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;공식 서류 (내용으로 동일성 판단)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;data class&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;equals/hashCode 자동 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;복사본 발급&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;copy()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;일부 변경한 새 인스턴스 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;서류 항목 분리 접수&lt;/td&gt;
 &lt;td&gt;구조 분해&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;componentN()&lt;/code&gt;으로 분해&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;고정 메뉴판&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;sealed class&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;하위 타입을 한 파일에 제한&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;메뉴 완전 처리 보증&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;when&lt;/code&gt; + sealed&lt;/td&gt;
 &lt;td&gt;누락 분기를 컴파일러가 경고&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../classes-objects/"&gt;클래스와 객체&lt;/a&gt;를 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 클래스, primary 생성자, when 표현식
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 25분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: 불변 데이터 모델을 &lt;code&gt;data class&lt;/code&gt;로 정의하고, &lt;code&gt;sealed class&lt;/code&gt;로 닫힌 타입 계층을 만들어 &lt;code&gt;when&lt;/code&gt;으로 완전하게 처리할 수 있습니다.&lt;/p&gt;</description></item><item><title>컬렉션</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/collections/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/collections/</guid><description>&lt;h2 id="전체-비유-창고-목록-지도"&gt;전체 비유: 창고, 목록, 지도&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%b0%bd%ea%b3%a0-%eb%aa%a9%eb%a1%9d-%ec%a7%80%eb%8f%84"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Kotlin 컬렉션을 &lt;strong&gt;창고·목록·지도&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. &lt;code&gt;List&lt;/code&gt;는 순서 있는 목록(번호표 대기줄), &lt;code&gt;Set&lt;/code&gt;은 중복 없는 창고(고유 입장객 명단), &lt;code&gt;Map&lt;/code&gt;은 이름표가 붙은 보관함(키→값 지도)입니다. 불변(read-only) 창고는 열람만 가능하고, 가변(mutable) 창고는 물건을 넣고 뺄 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;번호표 대기줄&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;List&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;순서 있고 중복 허용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;고유 입장객 명단&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Set&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;순서 무관, 중복 불허&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;이름표 보관함&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Map&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;키→값 쌍 저장&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;열람 전용 창고&lt;/td&gt;
 &lt;td&gt;read-only 컬렉션&lt;/td&gt;
 &lt;td&gt;수정 불가, 기본 선택&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;물건 넣고 빼는 창고&lt;/td&gt;
 &lt;td&gt;mutable 컬렉션&lt;/td&gt;
 &lt;td&gt;수정 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;주문 들어올 때 조리&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Sequence&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;지연(lazy) 평가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: &lt;a href="../data-sealed-classes/"&gt;Data/Sealed Class&lt;/a&gt;를 읽은 학습자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 기본 타입, 람다와 고차 함수
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: Kotlin 컬렉션을 생성하고 변환하며, map/filter/fold 등 핵심 연산을 활용하고, Sequence로 대용량 데이터를 효율적으로 처리할 수 있습니다.&lt;/p&gt;</description></item><item><title>확장 함수</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/extension-functions/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/extension-functions/</guid><description>&lt;h2 id="전체-비유-기존-건물에-엘리베이터-추가하기"&gt;전체 비유: 기존 건물에 엘리베이터 추가하기&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ea%b8%b0%ec%a1%b4-%ea%b1%b4%eb%ac%bc%ec%97%90-%ec%97%98%eb%a6%ac%eb%b2%a0%ec%9d%b4%ed%84%b0-%ec%b6%94%ea%b0%80%ed%95%98%ea%b8%b0"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;확장 함수를 &lt;strong&gt;리모델링 공사&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 기존 건물(클래스)의 구조를 바꾸지 않고도 외부에서 엘리베이터(새 기능)를 붙일 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;리모델링 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;기존 건물&lt;/td&gt;
 &lt;td&gt;수신 타입 (&lt;code&gt;String&lt;/code&gt;, &lt;code&gt;List&lt;/code&gt; 등)&lt;/td&gt;
 &lt;td&gt;기능을 추가할 대상&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;엘리베이터 설계&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;fun Type.method()&lt;/code&gt; 정의&lt;/td&gt;
 &lt;td&gt;확장 함수 선언&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;엘리베이터 내부&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;this&lt;/code&gt; (수신 객체)&lt;/td&gt;
 &lt;td&gt;기존 타입의 멤버에 접근&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;외부 시공사&lt;/td&gt;
 &lt;td&gt;확장 함수가 정의된 파일/모듈&lt;/td&gt;
 &lt;td&gt;소유권 없이 기능 추가&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;건물 설계도&lt;/td&gt;
 &lt;td&gt;원본 클래스&lt;/td&gt;
 &lt;td&gt;수정 불가, 열람만 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;기존 건물 설계도를 바꾸지 않아도 외부에서 기능을 덧붙일 수 있듯이, 확장 함수는 &lt;strong&gt;소스 코드 접근 권한 없이도 타입에 기능을 추가&lt;/strong&gt; 합니다.&lt;/p&gt;</description></item><item><title>스코프 함수</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/scope-functions/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/scope-functions/</guid><description>&lt;h2 id="전체-비유-주방에서-재료를-다루는-방식"&gt;전체 비유: 주방에서 재료를 다루는 방식&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%a3%bc%eb%b0%a9%ec%97%90%ec%84%9c-%ec%9e%ac%eb%a3%8c%eb%a5%bc-%eb%8b%a4%eb%a3%a8%eb%8a%94-%eb%b0%a9%ec%8b%9d"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;스코프 함수를 &lt;strong&gt;주방 조리 동작&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다. 같은 재료(객체)라도 목적에 따라 다른 방식으로 다룹니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;주방 비유&lt;/th&gt;
 &lt;th&gt;스코프 함수&lt;/th&gt;
 &lt;th&gt;컨텍스트&lt;/th&gt;
 &lt;th&gt;반환값&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;재료를 가져와서 결과물 반환&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;let&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;it&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;람다 결과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;냄비 안에서 여러 작업 후 결과&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;run&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;this&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;람다 결과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;계량대에 놓고 여러 작업&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;with&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;this&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;람다 결과&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 세팅(설정) 후 그대로&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;apply&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;this&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;수신 객체&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 사용하고 부가 작업 후 그대로&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;also&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;it&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;수신 객체&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;5개 모두 &lt;strong&gt;람다 블록 안에서 객체를 다루는 방법&lt;/strong&gt; 을 제공하지만, 컨텍스트 객체 참조 방식(it vs this)과 반환값이 다릅니다.&lt;/p&gt;</description></item><item><title>제네릭과 변성</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/generics-variance/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/generics-variance/</guid><description>&lt;h2 id="전체-비유-전용-상자와-분류-규칙"&gt;전체 비유: 전용 상자와 분류 규칙&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%a0%84%ec%9a%a9-%ec%83%81%ec%9e%90%ec%99%80-%eb%b6%84%eb%a5%98-%ea%b7%9c%ec%b9%99"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;제네릭을 &lt;strong&gt;용도별 전용 상자&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;상자 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;과일 전용 상자&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Box&amp;lt;Fruit&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;특정 타입만 담는 컨테이너&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;사과도 과일 상자에 OK&amp;rdquo; 규칙&lt;/td&gt;
 &lt;td&gt;공변(&lt;code&gt;out&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;하위 타입으로 대체 허용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;모든 과일을 받아야 해&amp;rdquo; 규칙&lt;/td&gt;
 &lt;td&gt;반공변(&lt;code&gt;in&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;상위 타입으로 대체 허용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;어떤 과일이든 상관없어&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;스타 프로젝션(&lt;code&gt;*&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;타입 미지정, 읽기만 가능&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;최소 과일은 되어야 해&amp;rdquo; 규칙&lt;/td&gt;
 &lt;td&gt;타입 경계(&lt;code&gt;&amp;lt;T : Fruit&amp;gt;&lt;/code&gt;)&lt;/td&gt;
 &lt;td&gt;허용 타입 범위 제한&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 기초 문법을 익힌 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: 클래스, 인터페이스, 상속 기초
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 35분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: 제네릭 클래스와 함수를 직접 작성하고, &lt;code&gt;in&lt;/code&gt;/&lt;code&gt;out&lt;/code&gt; 변성을 이해하여 컬렉션 API를 올바르게 사용할 수 있습니다.&lt;/p&gt;</description></item><item><title>위임</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/delegation/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/delegation/</guid><description>&lt;h2 id="전체-비유-비서와-전문가-팀"&gt;전체 비유: 비서와 전문가 팀&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%b9%84%ec%84%9c%ec%99%80-%ec%a0%84%eb%ac%b8%ea%b0%80-%ed%8c%80"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;위임을 &lt;strong&gt;사장이 비서에게 일을 맡기는 구조&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;직장 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;사장&lt;/td&gt;
 &lt;td&gt;위임 클래스&lt;/td&gt;
 &lt;td&gt;인터페이스를 구현하지만 실제 작업은 위임&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;비서&lt;/td&gt;
 &lt;td&gt;위임 객체&lt;/td&gt;
 &lt;td&gt;실제 작업 수행&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;비서한테 물어봐&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;by&lt;/code&gt; 키워드&lt;/td&gt;
 &lt;td&gt;컴파일러가 위임 코드 자동 생성&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;사장이 직접 하는 일&lt;/td&gt;
 &lt;td&gt;오버라이드&lt;/td&gt;
 &lt;td&gt;위임 중 일부만 직접 처리&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;필요할 때만 부르는 전문가&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;by lazy&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;처음 사용 시에만 초기화&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;변경 사항 알림 서비스&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Delegates.observable&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;프로퍼티 변경 추적&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 기초 클래스/인터페이스를 이해한 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: 인터페이스, 프로퍼티, 제네릭 기초
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: &lt;code&gt;by lazy&lt;/code&gt;, &lt;code&gt;Delegates.observable&lt;/code&gt;, Map 위임을 자유롭게 사용하고 자체 Delegate를 작성할 수 있습니다.&lt;/p&gt;</description></item><item><title>인라인/Reified</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/inline-reified/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/inline-reified/</guid><description>&lt;h2 id="전체-비유-요리법-복사-vs-식당에-주문"&gt;전체 비유: 요리법 복사 vs 식당에 주문&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%9a%94%eb%a6%ac%eb%b2%95-%eb%b3%b5%ec%82%ac-vs-%ec%8b%9d%eb%8b%b9%ec%97%90-%ec%a3%bc%eb%ac%b8"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;inline&lt;/code&gt; 함수를 &lt;strong&gt;요리법을 직접 복사하는 것&lt;/strong&gt; 에 비유하면 이해하기 쉽습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;비유&lt;/th&gt;
 &lt;th&gt;Kotlin 개념&lt;/th&gt;
 &lt;th&gt;효과&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피 책에서 요리법 복사&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;inline&lt;/code&gt; 함수&lt;/td&gt;
 &lt;td&gt;호출 비용 없이 코드 삽입&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;매번 식당에 주문&lt;/td&gt;
 &lt;td&gt;일반 함수 호출&lt;/td&gt;
 &lt;td&gt;호출 오버헤드 발생&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;재료 목록(타입) 그대로 복사됨&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;reified T&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;런타임에 타입 정보 유지&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;이 재료만 빼고&amp;rdquo; 복사&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;noinline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;특정 람다만 인라인 제외&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&amp;ldquo;다른 쉐프에게 넘겨도 OK&amp;rdquo;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;crossinline&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;람다를 다른 스코프에서 호출 허용&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: 제네릭과 람다를 이해한 Kotlin 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: 제네릭, 람다, 제네릭과 변성
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: &lt;code&gt;inline&lt;/code&gt;/&lt;code&gt;reified&lt;/code&gt;를 적절히 사용하여 타입 안전한 유틸리티 함수를 작성할 수 있습니다.&lt;/p&gt;</description></item><item><title>코루틴 기초</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/coroutines-basics/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/coroutines-basics/</guid><description>&lt;h2 id="전체-비유-카페-직원과-번호표"&gt;전체 비유: 카페 직원과 번호표&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%b9%b4%ed%8e%98-%ec%a7%81%ec%9b%90%ea%b3%bc-%eb%b2%88%ed%98%b8%ed%91%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;카페에서 음료를 주문받은 직원이 음료가 완성될 때까지 계산대를 비우지 않고, 번호표를 뽑아 다음 손님을 받는 모습에 비유할 수 있습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;카페 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 코루틴&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;음료 제조 요청&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;launch { }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;비동기 작업 시작 (결과 불필요)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;음료 완성 후 수령&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;async { }.await()&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;비동기 작업 + 결과 수신&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;직원 (일시 정지/재개)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;suspend&lt;/code&gt; 함수&lt;/td&gt;
 &lt;td&gt;스레드를 점유하지 않고 대기&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;제조 구역&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Dispatcher&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;작업을 처리할 스레드 풀&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;카페 매니저&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;CoroutineScope&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;코루틴 전체 생명주기 관리&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;직원이 한 명이어도 여러 주문을 동시에 처리하듯, 코루틴은 적은 스레드로 많은 비동기 작업을 효율적으로 처리합니다.&lt;/p&gt;</description></item><item><title>Flow와 비동기 스트림</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/flow-async-streams/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/flow-async-streams/</guid><description>&lt;h2 id="전체-비유-수도관과-수도꼭지"&gt;전체 비유: 수도관과 수도꼭지&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ec%88%98%eb%8f%84%ea%b4%80%ea%b3%bc-%ec%88%98%eb%8f%84%ea%bc%ad%ec%a7%80"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Flow&lt;/code&gt;는 수도관에 비유할 수 있습니다. 파이프(Flow)는 수도꼭지를 열기 전(&lt;code&gt;collect&lt;/code&gt;)까지 물이 흐르지 않고, 꼭지를 열면 데이터가 하나씩 흘러나옵니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;수도 비유&lt;/th&gt;
 &lt;th&gt;Kotlin Flow&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;수도관&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Flow&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;데이터 스트림 정의&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;수도꼭지를 열다&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;collect { }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;수집 시작 (Cold 흐름)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;필터 / 정수기&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;filter&lt;/code&gt;, &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;transform&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;데이터 변환·필터링&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;저수조 (언제나 최신 수위)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;StateFlow&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;항상 최신 값 보유 (Hot)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;방송 스피커&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SharedFlow&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;다수 구독자에게 동시 전달 (Hot)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;파이프 막힘 방지 밸브&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;buffer&lt;/code&gt;, &lt;code&gt;conflate&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;백프레셔 조절&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: 코루틴 기초(launch/async/suspend)를 이해한 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="../coroutines-basics/"&gt;코루틴 기초&lt;/a&gt; 완료
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 40~50분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: Flow를 만들고 수집하며, 연산자를 조합하고, StateFlow/SharedFlow를 안드로이드·백엔드에서 활용할 수 있습니다.&lt;/p&gt;</description></item><item><title>코루틴 고급</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/coroutines-advanced/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/coroutines-advanced/</guid><description>&lt;h2 id="전체-비유-항공사-운항-시스템"&gt;전체 비유: 항공사 운항 시스템&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ed%95%ad%ea%b3%b5%ec%82%ac-%ec%9a%b4%ed%95%ad-%ec%8b%9c%ec%8a%a4%ed%85%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;항공사 운항 시스템에서 하나의 편 지연이 전체 스케줄에 영향을 줄 수 있지만, &lt;code&gt;SupervisorJob&lt;/code&gt;처럼 각 노선을 독립적으로 관리하면 한 편의 결항이 다른 편에 영향을 주지 않습니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;항공사 비유&lt;/th&gt;
 &lt;th&gt;Kotlin 코루틴&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;항공 관제 데이터&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;코루틴 실행 정보 묶음&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;편명 식별자&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;CoroutineName&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;코루틴 이름 지정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;노선별 독립 스케줄&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;SupervisorJob&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;자식 실패가 형제에 영향 없음&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;항공편 탑승구 채널&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;Channel&amp;lt;T&amp;gt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;코루틴 간 안전한 데이터 전달&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;먼저 도착한 편 처리&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;select { }&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;여러 채널 중 먼저 도착한 것 처리&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: 코루틴 기초와 Flow를 이해한 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: &lt;a href="../coroutines-basics/"&gt;코루틴 기초&lt;/a&gt;, &lt;a href="../flow-async-streams/"&gt;Flow와 비동기 스트림&lt;/a&gt;
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 45~55분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: CoroutineContext를 직접 조합하고, 예외 전파 구조를 제어하며, Channel과 select로 복잡한 비동기 통신을 설계할 수 있습니다.&lt;/p&gt;</description></item><item><title>DSL 빌더</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/dsl-builders/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/dsl-builders/</guid><description>&lt;h2 id="전체-비유-레고-조립-설명서"&gt;전체 비유: 레고 조립 설명서&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%eb%a0%88%ea%b3%a0-%ec%a1%b0%eb%a6%bd-%ec%84%a4%eb%aa%85%ec%84%9c"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;레고 조립 설명서는 특정 규칙 안에서만 블록을 끼울 수 있습니다. 성 세트를 조립할 때는 성 블록만, 우주선 세트를 조립할 때는 우주선 블록만 맞습니다. &lt;code&gt;@DslMarker&lt;/code&gt;가 바로 이 &amp;ldquo;세트 구분 규칙&amp;quot;입니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;레고 비유&lt;/th&gt;
 &lt;th&gt;Kotlin DSL&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;조립 설명서 블록&lt;/td&gt;
 &lt;td&gt;람다 with receiver&lt;/td&gt;
 &lt;td&gt;블록 내부에서 수신 객체의 메서드에 접근&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;세트 구분 스티커&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;@DslMarker&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;서로 다른 DSL 컨텍스트 혼용 방지&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;블록 연결 포인트&lt;/td&gt;
 &lt;td&gt;빌더 함수&lt;/td&gt;
 &lt;td&gt;부모 DSL에서 자식 DSL을 시작하는 함수&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;완성된 레고 모형&lt;/td&gt;
 &lt;td&gt;빌더 결과 객체&lt;/td&gt;
 &lt;td&gt;불변 데이터 구조 또는 설정 객체&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 람다, 확장 함수, 스코프 함수를 이해한 중급 이상 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: 확장 함수(&lt;code&gt;fun Type.method()&lt;/code&gt;), 람다, 고차 함수
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30~40분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: 타입 세이프 빌더를 직접 설계하고, &lt;code&gt;@DslMarker&lt;/code&gt;로 DSL 오용을 컴파일 타임에 막을 수 있습니다.&lt;/p&gt;</description></item><item><title>Multiplatform 개요</title><link>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/multiplatform-overview/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><author>d8lzz1gpw@mozmail.com (kimbenji)</author><guid>https://advanced-beginner.github.io/ko/docs/kotlin/concepts/multiplatform-overview/</guid><description>&lt;h2 id="전체-비유-프랜차이즈-레스토랑"&gt;전체 비유: 프랜차이즈 레스토랑&lt;a class="anchor" href="#%ec%a0%84%ec%b2%b4-%eb%b9%84%ec%9c%a0-%ed%94%84%eb%9e%9c%ec%b0%a8%ec%9d%b4%ec%a6%88-%eb%a0%88%ec%8a%a4%ed%86%a0%eb%9e%91"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;프랜차이즈 레스토랑은 &lt;strong&gt;공통 메뉴와 조리법&lt;/strong&gt;(common)을 전 세계 매장이 공유하지만, &lt;strong&gt;식재료 공급업체&lt;/strong&gt;(플랫폼)는 지역마다 다릅니다. 뉴욕 매장(JVM)과 서울 매장(iOS/Android)은 같은 레시피로 다른 재료를 씁니다.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;프랜차이즈 비유&lt;/th&gt;
 &lt;th&gt;Kotlin Multiplatform&lt;/th&gt;
 &lt;th&gt;역할&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;공통 레시피 (메뉴판)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;commonMain&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;모든 플랫폼에서 공유하는 코드&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;지역별 재료&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;jvmMain&lt;/code&gt; / &lt;code&gt;iosMain&lt;/code&gt; / &lt;code&gt;jsMain&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;플랫폼별 구체 구현&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;레시피 상의 &amp;ldquo;현지 재료 사용&amp;rdquo; 표시&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;expect&lt;/code&gt; 선언&lt;/td&gt;
 &lt;td&gt;플랫폼 구현을 요구하는 계약&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;지역 매장의 실제 재료 준비&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;actual&lt;/code&gt; 구현&lt;/td&gt;
 &lt;td&gt;플랫폼별 실제 코드&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;&lt;strong&gt;대상 독자&lt;/strong&gt;: Kotlin 중급 이상, 멀티플랫폼 개발에 관심 있는 개발자
&lt;strong&gt;선수 지식&lt;/strong&gt;: Kotlin 기본 문법, Gradle 기초
&lt;strong&gt;소요 시간&lt;/strong&gt;: 약 30~40분
&lt;strong&gt;이 문서를 읽으면&lt;/strong&gt;: KMP 프로젝트 구조를 이해하고, expect/actual로 플랫폼별 코드를 분리하며, 어떤 상황에서 KMP가 적합한지 판단할 수 있습니다.&lt;/p&gt;</description></item></channel></rss>