diff --git a/docs/05_ko.html b/docs/05_ko.html
index f4202c8d7019fcc9de0d52741dcd3fe4aadd4799..d4440c11530f48a22ab791ac0d888f11b600a020 100644
--- a/docs/05_ko.html
+++ b/docs/05_ko.html
@@ -52,7 +52,7 @@ $ Hello, world! (stdout)</code></pre>
                 <span class="next"><a href="chapter_1_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/23_ko.html b/docs/23_ko.html
index ab0be54ec600236cb3ecca325b552a7dfcef983f..650630a79672a73e7260da92b731b4e703958181 100644
--- a/docs/23_ko.html
+++ b/docs/23_ko.html
@@ -35,108 +35,47 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 1 - 마무리</h1>
-            <p>Rust의 기초는 그렇게 나쁘지 않죠?</p>
-<p>시스템 프로그래밍 언어로서, Rust는 메모리 내 값을 매우 신경쓰며,</p>
-<p>수정이 가능한지 불가능한지 여부, 그리고 수학 연산이 의도한 대로 수행되는지 확인합니다.</p>
-<p>참고:</p>
-<ul>
-<li><a href="https://www.youtube.com/watch?v=n5TRBkbystY" target="_blank" rel="noopener">Youtube: Rust Cast - Rust의 기본 숫자 유형에 대한 더 깊은 이해</a></li>
-<li><a href="https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html" target="_blank" rel="noopener">Website: Rust Book 2018 - 기본 데이터 유형에 대한 자세한 설명</a></li>
-<li><a href="https://cheats.rs/#basic-types" target="_blank" rel="noopener">Website: Rust Cheat Sheet - Data Types</a></li>
-</ul>
-<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <pre><code class="rust">enum Shape {
-    Circle(f64),             // 반지름
-    Rectangle(f64, f64),     // 가로, 세로
-    Triangle(f64, f64, f64), // 세 변의 길이
-}
+            <h1>ref</h1>
+            <p><code>ref</code> 키워드는 패턴 매칭 과정에서 값의 참조를 만들어 해당 값을 이동(move)하는 대신 빌려오도록(bind by reference) 하는 데 사용됩니다.</p>
+<p>패턴 매칭에 관해서는 매칭 여부에 영향을 주지 않으며, 값이 어떻게 매치되는지만 제어합니다.</p>
+<p>기본적으로, <code>match</code> 문은 사용 가능한 모든 값을 소비합니다.</p>
+<p>따라서 값의 소유권이 필요하지 않은 경우에도 문제가 될 수 있습니다.</p>
+<pre><code class="rust">let maybe_name = Some(String::from("Alice"));
 
-// 넓이를 계산하는 함수
-fn area(shape: &Shape) -> f64 {
-    match shape {
-        Shape::Circle(r) => 3.14 * r * r,
-        Shape::Rectangle(w, h) => w * h,
-        Shape::Triangle(a, b, c) => {
-            // 삼각형의 넓이 공식
-            let s = (a + b + c) / 2.0;
-            let area = s * (s - a) * (s - b) * (s - c);
-            // 넓이가 음수면 에러 발생
-            if area &lt; 0.0 {
-                panic!("Invalid triangle");
-            } else {
-                area.sqrt()
-            }
-        }
-    }
+// 변수 'maybe_name'이 여기서 소비됩니다...
+match maybe_name {
+    Some(n) => println!("Hello, {}", n),
+    _ => println!("Hello, world"),
 }
 
-// 둘레를 계산하는 함수
-fn perimeter(shape: &Shape) -> f64 {
-    match shape {
-        Shape::Circle(r) => 2.0 * 3.14 * r,
-        Shape::Rectangle(w, h) => 2.0 * (w + h),
-        Shape::Triangle(a, b, c) => {
-            // 삼각형의 둘레 공식
-            let p = a + b + c;
-            // 둘레가 음수면 에러 발생
-            if p < 0.0 {
-                panic!("Invalid triangle");
-            } else {
-                p
-            }
-        }
-    }
-}
+// ... 이제 사용할 수 없습니다.
+println!("Hello again, {}", maybe_name.unwrap_or("world".into()));</code></pre>
+<p><code>ref</code> 키워드를 사용하면 값이 빌려온 것이지만 이동하지 않으므로, <code>match</code> 문 이후에도 사용할 수 있습니다.</p>
+<pre><code class="rust">let maybe_name = Some(String::from("Alice"));
 
-// 정사각형인지 판별하는 함수
-fn is_square(shape: &Shape) -> bool {
-    match shape {
-        Shape::Circle(_) => false,
-        Shape::Rectangle(w, h) => w == h,
-        Shape::Triangle(_, _, _) => false,
-    }
+// `ref`를 사용하여 값이 빌려오고 이동하지 않습니다...
+match maybe_name {
+    Some(ref n) => println!("Hello, {}", n),
+    _ => println!("Hello, world"),
 }
 
-// 결과
-/*
-원 넓이: 12.56
-사각형 넓이: 12
-삼각형 넓이: 6
-원 둘레: 12.56
-사각형 둘레: 14
-삼각형 둘레: 12
-원이 정사각형인가? false
-사각형이 정사각형인가? false
-삼각형이 정사각형인가? false
-*/
-fn main() {
-    // Shape 타입의 값들을 생성합니다.
-    let circle = Shape::Circle(2.0);
-    let rectangle = Shape::Rectangle(3.0, 4.0);
-    let triangle = Shape::Triangle(3.0, 4.0, 5.0);
-
-    // 각 도형의 넓이를 출력합니다.
-    println!("원 넓이: {}", area(&circle));
-    println!("사각형 넓이: {}", area(&rectangle));
-    println!("삼각형 넓이: {}", area(&triangle));
-
-    // 각 도형의 둘레를 출력합니다.
-    println!("원 둘레: {}", perimeter(&circle));
-    println!("사각형 둘레: {}", perimeter(&rectangle));
-    println!("삼각형 둘레: {}", perimeter(&triangle));
-
-    // 각 도형이 정사각형인지 출력합니다.
-    println!("원이 정사각형인가? {}", is_square(&circle));
-    println!("사각형이 정사각형인가? {}", is_square(&rectangle));
-    println!("삼각형이 정사각형인가? {}", is_square(&triangle));
-}</code></pre> </div> </div>
+// ... 그래서 여기에서 사용할 수 있습니다!
+println!("Hello again, {}", maybe_name.unwrap_or("world".into()));</code></pre>
+<p><code>&amp;</code>와 <code>ref</code>의 차이점:</p>
+<ul>
+<li><code>&amp;</code>는 패턴이 객체에 대한 참조를 기대함을 나타냅니다. 따라서 <code>&amp;</code>는 해당 패턴의 일부분입니다. <code>&amp;Foo</code>는 <code>Foo</code>와 다른 객체와 매치됩니다.</li>
+<li><code>ref</code>는 값의 참조를 얻기를 원함을 나타냅니다. 매치 대상이 아닙니다. <code>Foo(ref foo)</code>는 <code>Foo(foo)</code>와 동일한 객체와 매치됩니다.</li>
+</ul>
+<p>우측 예제에서는 String 타입을 사용하고 있습니다.</p>
+<p>ref 키워드를 사용하지 않을 경우, if let 구문에서 소유권이 이동하게 되어 이후에 x를 사용할 수 없게 됩니다.</p>
+<p>그러나 ref 키워드를 사용함으로써 소유권이 이동하지 않고 참조가 생성되어 이후에도 x를 사용할 수 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="22_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_2_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="24_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EB%AC%B8%EC%A0%9C+1%0A%0A%3E+area%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%A0+%EB%95%8C%EB%8A%94+%ED%8C%8C%EC%9D%B4%28pi%29%EB%A5%BC+3.14%EB%A1%9C+%EA%B0%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.+%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0%0A%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0A%3E+perimeter%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0Ais_square%28shape%3A+Shape%29+-%3E+bool%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%95%84%EB%8B%88%EB%A9%B4+false%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%98%EC%84%B8%EC%9A%94.%0A%0A%EB%8B%B5%EC%9D%80+%EB%A7%88%EC%A7%80%EB%A7%89+%EC%B1%95%ED%84%B0+%EB%B6%80%EB%A1%9D%EC%9D%84+%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94.%0A*%2F%0A%0Aenum+Shape+%7B%0A++++Circle%28f64%29%2C+++++++++++++%2F%2F+%EB%B0%98%EC%A7%80%EB%A6%84%0A++++Rectangle%28f64%2C+f64%29%2C+++++%2F%2F+%EA%B0%80%EB%A1%9C%2C+%EC%84%B8%EB%A1%9C%0A++++Triangle%28f64%2C+f64%2C+f64%29%2C+%2F%2F+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%0A%7D%0A%0A%2F%2F+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+area%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++%2F%2F+FIXME%0A++++%2F%2F+perimeter+%ED%95%A8%EC%88%98%EB%A5%BC+%EC%B0%B8%EA%B3%A0%ED%95%98%EC%84%B8%EC%9A%94.%0A++++%2F%2F+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%EC%9D%80+panic%21+%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A%0A%2F%2F+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+perimeter%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28r%29+%3D%3E+2.0+*+3.14+*+r%2C%0A++++++++Shape%3A%3ARectangle%28w%2C+h%29+%3D%3E+2.0+*+%28w+%2B+h%29%2C%0A++++++++Shape%3A%3ATriangle%28a%2C+b%2C+c%29+%3D%3E+%7B%0A++++++++++++%2F%2F+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88+%EA%B3%B5%EC%8B%9D%0A++++++++++++let+p+%3D+a+%2B+b+%2B+c%3B%0A++++++++++++%2F%2F+%EB%91%98%EB%A0%88%EA%B0%80+%EC%9D%8C%EC%88%98%EB%A9%B4+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%0A++++++++++++if+p+%3C+0.0+%7B%0A++++++++++++++++panic%21%28%22Invalid+triangle%22%29%3B%0A++++++++++++%7D+else+%7B%0A++++++++++++++++p%0A++++++++++++%7D%0A++++++++%7D%0A++++%7D%0A%7D%0A%0A%2F%2F+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+is_square%28shape%3A+%26Shape%29+-%3E+bool+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28_%29+%3D%3E+false%2C%0A++++++++%2F%2F+FIXME+%EB%8B%A4%EB%A5%B8+%EB%8F%84%ED%98%95...%0A++++%7D%0A%7D%0A%0A%2F%2F+%EA%B2%B0%EA%B3%BC%0A%2F*%0A%EC%9B%90+%EB%84%93%EC%9D%B4%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+12%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+6%0A%EC%9B%90+%EB%91%98%EB%A0%88%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+14%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+12%0A%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A*%2F%0Afn+main%28%29+%7B%0A++++%2F%2F+Shape+%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EB%93%A4%EC%9D%84+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+circle+%3D+Shape%3A%3ACircle%282.0%29%3B%0A++++let+rectangle+%3D+Shape%3A%3ARectangle%283.0%2C+4.0%29%3B%0A++++let+triangle+%3D+%2F%2F+FIXME%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26triangle%29%29%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+x+%3D+Some%28String%3A%3Afrom%28%22text%22%29%29%3B%0D%0A%0D%0A++++%2F%2F+if+let+%EA%B5%AC%EB%AC%B8%EC%97%90%EC%84%9C+ref+%ED%82%A4%EC%9B%8C%EB%93%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++if+let+Some%28ref+y%29+%3D+x+%7B%0D%0A++++++++println%21%28%22x+contains%3A+%7B%7D%22%2C+y%29%3B%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+x%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EC%9D%B4%EB%8F%99%ED%95%98%EC%A7%80+%EC%95%8A%EC%95%98%EA%B8%B0+%EB%95%8C%EB%AC%B8%EC%97%90+%EC%97%AC%EC%A0%84%ED%9E%88+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22x+is+still+available%3A+%7B%3A%3F%7D%22%2C+x%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/24_ko.html b/docs/24_ko.html
new file mode 100644
index 0000000000000000000000000000000000000000..d7faa173653cad4b323d1a568ccac0f53d0a44e8
--- /dev/null
+++ b/docs/24_ko.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 1 - 마무리</h1>
+            <p>Rust의 기초는 그렇게 나쁘지 않죠?</p>
+<p>시스템 프로그래밍 언어로서, Rust는 메모리 내 값을 매우 신경쓰며,</p>
+<p>수정이 가능한지 불가능한지 여부, 그리고 수학 연산이 의도한 대로 수행되는지 확인합니다.</p>
+<p>참고:</p>
+<ul>
+<li><a href="https://www.youtube.com/watch?v=n5TRBkbystY" target="_blank" rel="noopener">Youtube: Rust Cast - Rust의 기본 숫자 유형에 대한 더 깊은 이해</a></li>
+<li><a href="https://doc.rust-lang.org/1.30.0/book/2018-edition/ch03-02-data-types.html" target="_blank" rel="noopener">Website: Rust Book 2018 - 기본 데이터 유형에 대한 자세한 설명</a></li>
+<li><a href="https://cheats.rs/#basic-types" target="_blank" rel="noopener">Website: Rust Cheat Sheet - Data Types</a></li>
+</ul>
+<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <pre><code class="rust">enum Shape {
+    Circle(f64),             // 반지름
+    Rectangle(f64, f64),     // 가로, 세로
+    Triangle(f64, f64, f64), // 세 변의 길이
+}
+
+// 넓이를 계산하는 함수
+fn area(shape: &Shape) -> f64 {
+    match shape {
+        Shape::Circle(r) => 3.14 * r * r,
+        Shape::Rectangle(w, h) => w * h,
+        Shape::Triangle(a, b, c) => {
+            // 삼각형의 넓이 공식
+            let s = (a + b + c) / 2.0;
+            let area = s * (s - a) * (s - b) * (s - c);
+            // 넓이가 음수면 에러 발생
+            if area &lt; 0.0 {
+                panic!("Invalid triangle");
+            } else {
+                area.sqrt()
+            }
+        }
+    }
+}
+
+// 둘레를 계산하는 함수
+fn perimeter(shape: &Shape) -> f64 {
+    match shape {
+        Shape::Circle(r) => 2.0 * 3.14 * r,
+        Shape::Rectangle(w, h) => 2.0 * (w + h),
+        Shape::Triangle(a, b, c) => {
+            // 삼각형의 둘레 공식
+            let p = a + b + c;
+            // 둘레가 음수면 에러 발생
+            if p < 0.0 {
+                panic!("Invalid triangle");
+            } else {
+                p
+            }
+        }
+    }
+}
+
+// 정사각형인지 판별하는 함수
+fn is_square(shape: &Shape) -> bool {
+    match shape {
+        Shape::Circle(_) => false,
+        Shape::Rectangle(w, h) => w == h,
+        Shape::Triangle(_, _, _) => false,
+    }
+}
+
+// 결과
+/*
+원 넓이: 12.56
+사각형 넓이: 12
+삼각형 넓이: 6
+원 둘레: 12.56
+사각형 둘레: 14
+삼각형 둘레: 12
+원이 정사각형인가? false
+사각형이 정사각형인가? false
+삼각형이 정사각형인가? false
+*/
+fn main() {
+    // Shape 타입의 값들을 생성합니다.
+    let circle = Shape::Circle(2.0);
+    let rectangle = Shape::Rectangle(3.0, 4.0);
+    let triangle = Shape::Triangle(3.0, 4.0, 5.0);
+
+    // 각 도형의 넓이를 출력합니다.
+    println!("원 넓이: {}", area(&circle));
+    println!("사각형 넓이: {}", area(&rectangle));
+    println!("삼각형 넓이: {}", area(&triangle));
+
+    // 각 도형의 둘레를 출력합니다.
+    println!("원 둘레: {}", perimeter(&circle));
+    println!("사각형 둘레: {}", perimeter(&rectangle));
+    println!("삼각형 둘레: {}", perimeter(&triangle));
+
+    // 각 도형이 정사각형인지 출력합니다.
+    println!("원이 정사각형인가? {}", is_square(&circle));
+    println!("사각형이 정사각형인가? {}", is_square(&rectangle));
+    println!("삼각형이 정사각형인가? {}", is_square(&triangle));
+}</code></pre> </div> </div>
+            <div class="bottomnav">
+                <span class="back"><a href="23_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_2_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EB%AC%B8%EC%A0%9C+1%0A%0A%3E+area%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%A0+%EB%95%8C%EB%8A%94+%ED%8C%8C%EC%9D%B4%28pi%29%EB%A5%BC+3.14%EB%A1%9C+%EA%B0%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.+%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0%0A%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0A%3E+perimeter%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0Ais_square%28shape%3A+Shape%29+-%3E+bool%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%95%84%EB%8B%88%EB%A9%B4+false%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%98%EC%84%B8%EC%9A%94.%0A%0A%EB%8B%B5%EC%9D%80+%EB%A7%88%EC%A7%80%EB%A7%89+%EC%B1%95%ED%84%B0+%EB%B6%80%EB%A1%9D%EC%9D%84+%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94.%0A*%2F%0A%0Aenum+Shape+%7B%0A++++Circle%28f64%29%2C+++++++++++++%2F%2F+%EB%B0%98%EC%A7%80%EB%A6%84%0A++++Rectangle%28f64%2C+f64%29%2C+++++%2F%2F+%EA%B0%80%EB%A1%9C%2C+%EC%84%B8%EB%A1%9C%0A++++Triangle%28f64%2C+f64%2C+f64%29%2C+%2F%2F+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%0A%7D%0A%0A%2F%2F+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+area%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++%2F%2F+FIXME%0A++++%2F%2F+perimeter+%ED%95%A8%EC%88%98%EB%A5%BC+%EC%B0%B8%EA%B3%A0%ED%95%98%EC%84%B8%EC%9A%94.%0A++++%2F%2F+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%EC%9D%80+panic%21+%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A%0A%2F%2F+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+perimeter%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28r%29+%3D%3E+2.0+*+3.14+*+r%2C%0A++++++++Shape%3A%3ARectangle%28w%2C+h%29+%3D%3E+2.0+*+%28w+%2B+h%29%2C%0A++++++++Shape%3A%3ATriangle%28a%2C+b%2C+c%29+%3D%3E+%7B%0A++++++++++++%2F%2F+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88+%EA%B3%B5%EC%8B%9D%0A++++++++++++let+p+%3D+a+%2B+b+%2B+c%3B%0A++++++++++++%2F%2F+%EB%91%98%EB%A0%88%EA%B0%80+%EC%9D%8C%EC%88%98%EB%A9%B4+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%0A++++++++++++if+p+%3C+0.0+%7B%0A++++++++++++++++panic%21%28%22Invalid+triangle%22%29%3B%0A++++++++++++%7D+else+%7B%0A++++++++++++++++p%0A++++++++++++%7D%0A++++++++%7D%0A++++%7D%0A%7D%0A%0A%2F%2F+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+is_square%28shape%3A+%26Shape%29+-%3E+bool+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28_%29+%3D%3E+false%2C%0A++++++++%2F%2F+FIXME+%EB%8B%A4%EB%A5%B8+%EB%8F%84%ED%98%95...%0A++++%7D%0A%7D%0A%0A%2F%2F+%EA%B2%B0%EA%B3%BC%0A%2F*%0A%EC%9B%90+%EB%84%93%EC%9D%B4%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+12%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+6%0A%EC%9B%90+%EB%91%98%EB%A0%88%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+14%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+12%0A%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A*%2F%0Afn+main%28%29+%7B%0A++++%2F%2F+Shape+%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EB%93%A4%EC%9D%84+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+circle+%3D+Shape%3A%3ACircle%282.0%29%3B%0A++++let+rectangle+%3D+Shape%3A%3ARectangle%283.0%2C+4.0%29%3B%0A++++let+triangle+%3D+%2F%2F+FIXME%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26triangle%29%29%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
+        </div>
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/25_ko.html b/docs/25_ko.html
deleted file mode 100644
index 3405789193c2caa3b70243c7d212980fc07a79db..0000000000000000000000000000000000000000
--- a/docs/25_ko.html
+++ /dev/null
@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-    <html lang="ko">
-    <head>
-        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
-
-        <meta charset="UTF-8">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
-        <meta name="keywords" content="Rust, Programming, Learning">
-        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
-        <meta name="theme-color" content="#ff6801"/>
-        <meta http-equiv="Cache-Control" content="max-age=3600">
-        
-        <link rel="stylesheet" href="tour.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
-        
-        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
-        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
-        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
-        <link rel="/manifest" href="./site.webmanifest">
-        
-        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
-
-        <script src="./tour.js" defer></script>
-        <!-- <script>hljs.highlightAll();</script> -->
-        <script src="./highlight.badge.min.js"></script>
-    </head>
-    <body>
-        <div class="tour">
-            <div class="header">
-                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
-                <span class="nav">
-                <span class="toc"><a href="TOC_ko.html">목차</a></span>
-            </div>
-            <div class="page">
-            <h1>소유권과 빌림 검사기</h1>
-            <p>Rust의 메모리 관리가 소유권, 빌림, 그리고 수명의 개념에 기반한다는 것을 설명합니다.</p>
-<p>Rust의 시스템은 가비지 컬렉터가 필요 없이 컴파일 시간에 메모리 관리 문제를 방지하도록 설계되어 있다는 것을 강조합니다.</p>
-<ol>
-<li>Rust의 메모리 관리 방식 소개:<ol>
-<li>Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하여 메모리 안전성을 보장합니다.</li>
-<li>이 시스템은 컴파일 시간에 메모리 관리 문제를 확인하고 방지하므로, 런타임 시 메모리 누수나 <code>세그멘테이션 폴트</code>와 같은 문제가 발생하지 않습니다.</li></ol></li>
-<li>가비지 컬렉터 없이 메모리 관리 문제 방지:<ol>
-<li>Rust의 메모리 관리 시스템은 가비지 컬렉터가 필요 없이 메모리를 안전하게 관리할 수 있게 해줍니다.</li>
-<li>소유권과 빌림 규칙을 통해 컴파일러가 메모리 사용에 대한 제약 조건을 검사하고, 문제가 있는 경우 컴파일 오류를 발생시킵니다.</li>
-<li>이를 통해 런타임 시 메모리 관리 문제가 발생할 여지가 없도록 합니다.</li></ol></li>
-</ol>
-<p>이렇게 Rust는 소유권, 빌림, 그리고 수명을 기반으로 하는 메모리 관리 시스템을 통해 가비지 컬렉터 없이도 메모리 안전성을 보장하며,</p>
-<p>컴파일 시간에 메모리 관리 문제를 방지하는 방식으로 문제를 해결합니다.</p>
-<p>이 시스템은 런타임에 발생할 수 있는 메모리 관련 문제를 최소화하여 성능과 안정성을 높입니다.</p>
-            <div class="bottomnav">
-                <span class="back"><a href="chapter_2_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="26_ko.html" rel="next">다음 ❯</a></span>
-            </div>
-            </div>
-            <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EC%9D%B4+%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C%2C+%EB%A8%BC%EC%A0%80+%22hello%22+%EA%B0%92%EC%9D%84+%EA%B0%96%EB%8A%94+%EA%B0%80%EB%B3%80+String+%EB%B3%80%EC%88%98+s%EB%A5%BC+%EC%84%A0%EC%96%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0+r1%EC%9D%84+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%80+%EB%B9%8C%EB%A6%BC%28borrowing%29%EC%9D%98+%EC%98%88%EC%8B%9C%EB%A1%9C%2C+s%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EA%B0%80%EC%A0%B8%EA%B0%80%EC%A7%80+%EC%95%8A%EA%B3%A0+%EA%B7%B8+%EA%B0%92%EC%9D%84+%EC%9D%BD%EC%9D%84+%EC%88%98+%EC%9E%88%EC%A7%80%EB%A7%8C+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98%EB%8A%94+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%9C+%ED%9B%84%2C+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26mut+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0+r2%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar2%EC%9D%80+%EB%98%90+%EB%8B%A4%EB%A5%B8+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EC%98%88%EC%8B%9C%EC%9E%85%EB%8B%88%EB%8B%A4.+%EC%9D%B4%EB%B2%88%EC%97%90%EB%8A%94+s%EB%A5%BC+%EA%B0%80%EB%B3%80%EC%9C%BC%EB%A1%9C+%EB%B9%8C%EB%A0%A4%EC%99%80%EC%84%9C+%EA%B0%92%EC%9D%84+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98+%EC%9E%88%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EC%9A%B0%EB%A6%AC%EB%8A%94+push_str%28%29+%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC+%ED%86%B5%ED%95%B4+r2%EB%A5%BC+%ED%86%B5%ED%95%B4+%EB%AC%B8%EC%9E%90%EC%97%B4+%22%2C+world%21%22%EB%A5%BC+s%EC%97%90+%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%2C+r2%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%98%EB%A9%B4%2C+s%EB%8A%94+%EB%8B%A4%EC%8B%9C+%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0A%EC%9D%B4+%EC%BD%94%EB%93%9C+%EC%8A%A4%EB%8B%88%ED%8E%AB%EC%9D%80+Rust%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4+%EA%B0%80%EB%B9%84%EC%A7%80+%EC%BB%AC%EB%A0%89%ED%84%B0+%EC%97%86%EC%9D%B4+%EC%95%88%EC%A0%84%ED%95%98%EA%B3%A0+%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8+%EB%A9%94%EB%AA%A8%EB%A6%AC+%EA%B4%80%EB%A6%AC%EB%A5%BC+%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C+%ED%95%98%EB%8A%94+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0A%0ARust%EB%8A%94+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%8B%9C%EA%B0%84%EC%97%90+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EA%B7%9C%EC%B9%99%EC%9D%84+%EA%B0%95%EC%A0%9C%ED%95%A8%EC%9C%BC%EB%A1%9C%EC%8D%A8%0A%0A%EB%A9%94%EB%AA%A8%EB%A6%AC+%EB%88%84%EC%88%98%EB%82%98+%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98+%ED%8F%B4%ED%8A%B8%EC%99%80+%EA%B0%99%EC%9D%80+%EB%9F%B0%ED%83%80%EC%9E%84+%EC%98%A4%EB%A5%98%EB%A5%BC+%EB%B0%A9%EC%A7%80%ED%95%98%EB%AF%80%EB%A1%9C+Rust+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%80+%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B4%EB%A9%B4%EC%84%9C%EB%8F%84+%EB%86%92%EC%9D%80+%EC%84%B1%EB%8A%A5%EC%9D%84+%EB%B3%B4%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A*%2F%0A%0Afn+main%28%29+%7B%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22Hello%22%29%3B%0A%0A++++%7B%0A++++++++let+r1+%3D+%26s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++++++println%21%28%22%7B%7D%22%2C+r1%29%3B%0A++++%7D+%2F%2F+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%0A%0A++++let+r2+%3D+%26mut+s%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++r2.push_str%28%22%2C+world%21%22%29%3B%0A++++println%21%28%22%7B%7D%22%2C+r2%29%3B%0A%7D+%2F%2F+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%2C+s%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EC%9D%8C%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
-            </div>
-        </div>
-        <script>
-        var pres = document.querySelectorAll("pre>code");
-        for (var i = 0; i < pres.length; i++) {
-            hljs.highlightElement(pres[i]);
-        }
-        var options = {
-            loadDelay: 0,
-            copyIconClass: "far fa-clipboard",
-            checkIconClass: "fa fa-check text-success",
-            blogURL: "http://rust-study.ajousw.kr/"
-        };
-        window.highlightJsBadge(options);
-        </script>
-
-        <footer>
-          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
-        </footer>
-    </body>
-</html>
\ No newline at end of file
diff --git a/docs/26_ko.html b/docs/26_ko.html
index 461d3844a3b7ab5f111356bcd4f1577fc12cb0ea..29613c133eaeefab82426abc4c535f38c634048c 100644
--- a/docs/26_ko.html
+++ b/docs/26_ko.html
@@ -35,57 +35,28 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>소유권</h1>
-            <p><strong>🎯 Ownership</strong></p>
-<p>소유권 정의: Rust에서 각 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 값이 할당 해제됩니다.</p>
-<p>소유권 이전 방법을 예제를 통해 설명합니다 (예: 값을 새 변수에 할당하거나 함수에 전달할 때).</p>
-<p>값이 범위를 벗어날 때 자동으로 호출되는 drop 함수를 소개합니다.</p>
-<p>소유권 정의:</p>
-<p>Rust에서는 각 값에 대해 하나의 소유자가 존재하며, 소유자가 해당 값을 관리합니다.</p>
-<p>소유자가 범위를 벗어나면 Rust는 자동으로 해당 값의 메모리를 해제합니다.</p>
-<p>소유권 이전 예제:</p>
-<p>예제 1: 값을 새 변수에 할당할 때</p>
-<p>s1이 가리키는 값의 소유권이 s2로 이전되어 s1은 사용할 수 없습니다.</p>
-<pre><code class="rust">let s1 = String::from("hello");
-let s2 = s1;</code></pre>
-<p>예제 2: 함수에 값을 전달할 때</p>
-<p>s가 takes_ownership 함수에 전달되면서 소유권이 이전되고 함수 내에서 값의 메모리가 해제됩니다.</p>
-<pre><code class="rust">fn takes_ownership(s: String) {
-    println!("{}", s);
-}
-
-fn main() {
-    let s = String::from("hello");
-    takes_ownership(s);
-    // 여기에서 s는 사용할 수 없습니다.
-}</code></pre>
-<p><code>drop</code> 함수 소개:</p>
-<p>Rust에서는 값이 범위를 벗어날 때 자동으로 drop 함수가 호출됩니다.</p>
-<p>drop 함수는 메모리를 안전하게 해제하는 역할을 합니다.</p>
-<p>이를 통해 개발자가 직접 메모리 해제를 관리할 필요가 없습니다.</p>
-<p>소유권, 소유권 이전 방법, 그리고 drop 함수를 통해 Rust는 메모리 관리를 단순화하고 안전하게 할 수 있습니다.</p>
-<p>이로 인해 메모리 누수나 세그멘테이션 폴트와 같은 문제를 효과적으로 방지할 수 있습니다.</p>
-<hr />
-<h1 id="advanced">Advanced</h1>
-<h2 id="clone"><code>clone</code> 메서드를 사용한 소유권 이전 방지</h2>
-<pre><code class="rust">let s1 = String::from("hello"); let s2 = s1.clone();</code></pre>
-<h2 id="">함수로 소유권 이전 후 반환</h2>
-<pre><code class="rust">fn takes_and_gives_back(s: String) -> String {
-    s
-}
-
-fn main() {
-    let s1 = String::from("hello");
-    let s2 = takes_and_gives_back(s1);
-    // 이제 s2를 사용할 수 있지만, s1은 여전히 사용할 수 없습니다.
-}</code></pre>
+            <h1>소유권과 빌림 검사기</h1>
+            <p>Rust의 메모리 관리가 소유권, 빌림, 그리고 수명의 개념에 기반한다는 것을 설명합니다.</p>
+<p>Rust의 시스템은 가비지 컬렉터가 필요 없이 컴파일 시간에 메모리 관리 문제를 방지하도록 설계되어 있다는 것을 강조합니다.</p>
+<ol>
+<li>Rust의 메모리 관리 방식 소개:<ol>
+<li>Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하여 메모리 안전성을 보장합니다.</li>
+<li>이 시스템은 컴파일 시간에 메모리 관리 문제를 확인하고 방지하므로, 런타임 시 메모리 누수나 <code>세그멘테이션 폴트</code>와 같은 문제가 발생하지 않습니다.</li></ol></li>
+<li>가비지 컬렉터 없이 메모리 관리 문제 방지:<ol>
+<li>Rust의 메모리 관리 시스템은 가비지 컬렉터가 필요 없이 메모리를 안전하게 관리할 수 있게 해줍니다.</li>
+<li>소유권과 빌림 규칙을 통해 컴파일러가 메모리 사용에 대한 제약 조건을 검사하고, 문제가 있는 경우 컴파일 오류를 발생시킵니다.</li>
+<li>이를 통해 런타임 시 메모리 관리 문제가 발생할 여지가 없도록 합니다.</li></ol></li>
+</ol>
+<p>이렇게 Rust는 소유권, 빌림, 그리고 수명을 기반으로 하는 메모리 관리 시스템을 통해 가비지 컬렉터 없이도 메모리 안전성을 보장하며,</p>
+<p>컴파일 시간에 메모리 관리 문제를 방지하는 방식으로 문제를 해결합니다.</p>
+<p>이 시스템은 런타임에 발생할 수 있는 메모리 관련 문제를 최소화하여 성능과 안정성을 높입니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="25_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="back"><a href="chapter_2_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="27_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%60drop%60+%ED%95%A8%EC%88%98+%EC%86%8C%EA%B0%9C%3A%0A%2F%2F+Rust%EC%97%90%EC%84%9C%EB%8A%94+%EA%B0%92%EC%9D%B4+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A0+%EB%95%8C+%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+drop+%ED%95%A8%EC%88%98%EB%8A%94+%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%ED%95%98%EB%8A%94+%EC%97%AD%ED%95%A0%EC%9D%84+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9D%B4%EB%A5%BC+%ED%86%B5%ED%95%B4+%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80+%EC%A7%81%EC%A0%91+%EB%A9%94%EB%AA%A8%EB%A6%AC+%ED%95%B4%EC%A0%9C%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%A0+%ED%95%84%EC%9A%94%EA%B0%80+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0Astruct+CustomStruct+%7B%0A++++data%3A+String%2C%0A%7D%0A%0Aimpl+Drop+for+CustomStruct+%7B%0A++++fn+drop%28%26mut+self%29+%7B%0A++++++++println%21%28%22Dropping+CustomStruct+with+data%3A+%7B%7D%22%2C+self.data%29%3B%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++let+custom+%3D+CustomStruct+%7B%0A++++++++data%3A+String%3A%3Afrom%28%22hello%22%29%2C%0A++++%7D%3B%0A++++println%21%28%22Created+CustomStruct+with+data%3A+%7B%7D%22%2C+custom.data%29%3B%0A++++%2F%2F+custom%EC%9D%80+%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98%EB%A9%B4%EC%84%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%98%EC%96%B4+%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EC%9D%B4+%EC%BD%94%EB%93%9C%EC%97%90%EC%84%9C%2C+%EB%A8%BC%EC%A0%80+%22hello%22+%EA%B0%92%EC%9D%84+%EA%B0%96%EB%8A%94+%EA%B0%80%EB%B3%80+String+%EB%B3%80%EC%88%98+s%EB%A5%BC+%EC%84%A0%EC%96%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0+r1%EC%9D%84+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%80+%EB%B9%8C%EB%A6%BC%28borrowing%29%EC%9D%98+%EC%98%88%EC%8B%9C%EB%A1%9C%2C+s%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%84+%EA%B0%80%EC%A0%B8%EA%B0%80%EC%A7%80+%EC%95%8A%EA%B3%A0+%EA%B7%B8+%EA%B0%92%EC%9D%84+%EC%9D%BD%EC%9D%84+%EC%88%98+%EC%9E%88%EC%A7%80%EB%A7%8C+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98%EB%8A%94+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0Ar1%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%9C+%ED%9B%84%2C+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EA%B7%B8%EB%9F%B0+%EB%8B%A4%EC%9D%8C+%26mut+%EC%97%B0%EC%82%B0%EC%9E%90%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+s%EC%97%90+%EB%8C%80%ED%95%9C+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0+r2%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0A%0Ar2%EC%9D%80+%EB%98%90+%EB%8B%A4%EB%A5%B8+%EB%B9%8C%EB%A6%BC%EC%9D%98+%EC%98%88%EC%8B%9C%EC%9E%85%EB%8B%88%EB%8B%A4.+%EC%9D%B4%EB%B2%88%EC%97%90%EB%8A%94+s%EB%A5%BC+%EA%B0%80%EB%B3%80%EC%9C%BC%EB%A1%9C+%EB%B9%8C%EB%A0%A4%EC%99%80%EC%84%9C+%EA%B0%92%EC%9D%84+%EC%88%98%EC%A0%95%ED%95%A0+%EC%88%98+%EC%9E%88%EA%B2%8C+%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%0A%EC%9A%B0%EB%A6%AC%EB%8A%94+push_str%28%29+%EB%A9%94%EC%86%8C%EB%93%9C%EB%A5%BC+%ED%86%B5%ED%95%B4+r2%EB%A5%BC+%ED%86%B5%ED%95%B4+%EB%AC%B8%EC%9E%90%EC%97%B4+%22%2C+world%21%22%EB%A5%BC+s%EC%97%90+%EC%B6%94%EA%B0%80%ED%95%98%EA%B3%A0%2C+r2%EC%9D%98+%EA%B0%92%EC%9D%84+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%88%EC%A7%80%EB%A7%89%EC%9C%BC%EB%A1%9C+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EA%B2%8C+%EB%90%98%EB%A9%B4%2C+s%EB%8A%94+%EB%8B%A4%EC%8B%9C+%EC%9E%90%EC%9C%A0%EB%A1%AD%EA%B2%8C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%0A%EC%9D%B4+%EC%BD%94%EB%93%9C+%EC%8A%A4%EB%8B%88%ED%8E%AB%EC%9D%80+Rust%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4+%EA%B0%80%EB%B9%84%EC%A7%80+%EC%BB%AC%EB%A0%89%ED%84%B0+%EC%97%86%EC%9D%B4+%EC%95%88%EC%A0%84%ED%95%98%EA%B3%A0+%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8+%EB%A9%94%EB%AA%A8%EB%A6%AC+%EA%B4%80%EB%A6%AC%EB%A5%BC+%EA%B0%80%EB%8A%A5%ED%95%98%EA%B2%8C+%ED%95%98%EB%8A%94+%EB%B0%A9%EC%8B%9D%EC%9D%84+%EB%B3%B4%EC%97%AC%EC%A4%8D%EB%8B%88%EB%8B%A4.%0A%0ARust%EB%8A%94+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%8B%9C%EA%B0%84%EC%97%90+%EC%86%8C%EC%9C%A0%EA%B6%8C%EA%B3%BC+%EB%B9%8C%EB%A6%BC+%EA%B7%9C%EC%B9%99%EC%9D%84+%EA%B0%95%EC%A0%9C%ED%95%A8%EC%9C%BC%EB%A1%9C%EC%8D%A8%0A%0A%EB%A9%94%EB%AA%A8%EB%A6%AC+%EB%88%84%EC%88%98%EB%82%98+%EC%84%B8%EA%B7%B8%EB%A9%98%ED%85%8C%EC%9D%B4%EC%85%98+%ED%8F%B4%ED%8A%B8%EC%99%80+%EA%B0%99%EC%9D%80+%EB%9F%B0%ED%83%80%EC%9E%84+%EC%98%A4%EB%A5%98%EB%A5%BC+%EB%B0%A9%EC%A7%80%ED%95%98%EB%AF%80%EB%A1%9C+Rust+%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%80+%EC%95%88%EC%A0%95%EC%A0%81%EC%9D%B4%EB%A9%B4%EC%84%9C%EB%8F%84+%EB%86%92%EC%9D%80+%EC%84%B1%EB%8A%A5%EC%9D%84+%EB%B3%B4%EC%9E%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A*%2F%0A%0Afn+main%28%29+%7B%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22Hello%22%29%3B%0A%0A++++%7B%0A++++++++let+r1+%3D+%26s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++++++println%21%28%22%7B%7D%22%2C+r1%29%3B%0A++++%7D+%2F%2F+r1%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%0A%0A++++let+r2+%3D+%26mut+s%3B+%2F%2F+%EA%B0%80%EB%B3%80+%EB%B9%8C%EB%A6%BC%0A++++r2.push_str%28%22%2C+world%21%22%29%3B%0A++++println%21%28%22%7B%7D%22%2C+r2%29%3B%0A%7D+%2F%2F+r2%EA%B0%80+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A8%2C+s%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EB%B9%8C%EB%A0%A4%EC%A7%80%EC%A7%80+%EC%95%8A%EC%9D%8C%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/27_ko.html b/docs/27_ko.html
index 7660f2cff6b75b45888c9dfa879204a8586cf9f0..341c603675c4d72dde27144a59e339b1d67a2391 100644
--- a/docs/27_ko.html
+++ b/docs/27_ko.html
@@ -35,33 +35,57 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>빌림</h1>
-            <p><strong>🎯 Borrowing</strong></p>
-<p>빌림(borrowing) 개념은 Rust에서 소유권을 이전하지 않고, 값을 참조하거나 사용할 수 있게 해주는 기능입니다.</p>
-<p>빌림은 두 가지 종류: 불변 빌림(immutable borrow), 가변 빌림(mutable borrow)</p>
-<p>빌림(borrowing)에 대한 기본적인 규칙은 다음과 같습니다:</p>
-<p>한 번에 <code>여러 개의 불변 참조</code>를 가져올 수 있지만,</p>
-<p>가변 참조를 가져올 때는 해당 변수의 다른 참조가 없어야 합니다. (<code>오직 한 개의 가변 참조</code>)</p>
-<p>이러한 규칙을 통해 Rust는 컴파일 시점에 데이터 경쟁 문제를 방지합니다.</p>
-<p>가변 빌림의 예제 (mutable borrow):</p>
-<pre><code class="rust">fn main() {
-    let mut s = String::from("hello");
-    change(&mut s);
-    println!("The new string is '{}'.", s);
+            <h1>소유권</h1>
+            <p><strong>🎯 Ownership</strong></p>
+<p>소유권 정의: Rust에서 각 값은 하나의 소유자를 가지며, 소유자가 범위를 벗어나면 값이 할당 해제됩니다.</p>
+<p>소유권 이전 방법을 예제를 통해 설명합니다 (예: 값을 새 변수에 할당하거나 함수에 전달할 때).</p>
+<p>값이 범위를 벗어날 때 자동으로 호출되는 drop 함수를 소개합니다.</p>
+<p>소유권 정의:</p>
+<p>Rust에서는 각 값에 대해 하나의 소유자가 존재하며, 소유자가 해당 값을 관리합니다.</p>
+<p>소유자가 범위를 벗어나면 Rust는 자동으로 해당 값의 메모리를 해제합니다.</p>
+<p>소유권 이전 예제:</p>
+<p>예제 1: 값을 새 변수에 할당할 때</p>
+<p>s1이 가리키는 값의 소유권이 s2로 이전되어 s1은 사용할 수 없습니다.</p>
+<pre><code class="rust">let s1 = String::from("hello");
+let s2 = s1;</code></pre>
+<p>예제 2: 함수에 값을 전달할 때</p>
+<p>s가 takes_ownership 함수에 전달되면서 소유권이 이전되고 함수 내에서 값의 메모리가 해제됩니다.</p>
+<pre><code class="rust">fn takes_ownership(s: String) {
+    println!("{}", s);
 }
 
-fn change(s: &mut String) {
-    s.push_str(", world!");
+fn main() {
+    let s = String::from("hello");
+    takes_ownership(s);
+    // 여기에서 s는 사용할 수 없습니다.
+}</code></pre>
+<p><code>drop</code> 함수 소개:</p>
+<p>Rust에서는 값이 범위를 벗어날 때 자동으로 drop 함수가 호출됩니다.</p>
+<p>drop 함수는 메모리를 안전하게 해제하는 역할을 합니다.</p>
+<p>이를 통해 개발자가 직접 메모리 해제를 관리할 필요가 없습니다.</p>
+<p>소유권, 소유권 이전 방법, 그리고 drop 함수를 통해 Rust는 메모리 관리를 단순화하고 안전하게 할 수 있습니다.</p>
+<p>이로 인해 메모리 누수나 세그멘테이션 폴트와 같은 문제를 효과적으로 방지할 수 있습니다.</p>
+<hr />
+<h1 id="advanced">Advanced</h1>
+<h2 id="clone"><code>clone</code> 메서드를 사용한 소유권 이전 방지</h2>
+<pre><code class="rust">let s1 = String::from("hello"); let s2 = s1.clone();</code></pre>
+<h2 id="">함수로 소유권 이전 후 반환</h2>
+<pre><code class="rust">fn takes_and_gives_back(s: String) -> String {
+    s
+}
+
+fn main() {
+    let s1 = String::from("hello");
+    let s2 = takes_and_gives_back(s1);
+    // 이제 s2를 사용할 수 있지만, s1은 여전히 사용할 수 없습니다.
 }</code></pre>
-<p>빌림(borrowing) 개념을 이해하면, Rust에서 소유권을 이전하지 않고도 값을 안전하게 사용할 수 있습니다.</p>
-<p>이를 통해 데이터 경쟁 문제를 방지하고, 메모리 관리에 대한 안전성을 높일 수 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="26_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="28_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22hello%22%29%3B%0D%0A++++let+s_immutable_borrow+%3D+%26s%3B%0D%0A++++%7B%0D%0A++++++++let+s_mutable_borrow+%3D+%26mut+s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EA%B0%80+%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94+%EB%8F%99%EC%95%88+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0D%0A++++++++replace_content%28s_mutable_borrow%2C+%22world%22%29%3B%0D%0A++++%7D%0D%0A++++println%21%28%22New+String+%27%7B%7D%27.%22%2C+s_immutable_borrow%29%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EA%B0%80+%EC%97%AC%EC%A0%84%ED%9E%88+%EC%9C%A0%ED%9A%A8%ED%95%9C+%EC%83%81%ED%83%9C%EC%97%90%EC%84%9C+%EC%82%AC%EC%9A%A9%EB%90%A9%EB%8B%88%EB%8B%A4.%0D%0A%7D%0D%0A%0D%0Afn+replace_content%28s%3A+%26mut+String%2C+new_content%3A+%26str%29+%7B%0D%0A++++s.clear%28%29%3B%0D%0A++++s.push_str%28new_content%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%60drop%60+%ED%95%A8%EC%88%98+%EC%86%8C%EA%B0%9C%3A%0A%2F%2F+Rust%EC%97%90%EC%84%9C%EB%8A%94+%EA%B0%92%EC%9D%B4+%EB%B2%94%EC%9C%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%A0+%EB%95%8C+%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+drop+%ED%95%A8%EC%88%98%EB%8A%94+%EB%A9%94%EB%AA%A8%EB%A6%AC%EB%A5%BC+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%ED%95%98%EB%8A%94+%EC%97%AD%ED%95%A0%EC%9D%84+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9D%B4%EB%A5%BC+%ED%86%B5%ED%95%B4+%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80+%EC%A7%81%EC%A0%91+%EB%A9%94%EB%AA%A8%EB%A6%AC+%ED%95%B4%EC%A0%9C%EB%A5%BC+%EA%B4%80%EB%A6%AC%ED%95%A0+%ED%95%84%EC%9A%94%EA%B0%80+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4.%0Astruct+CustomStruct+%7B%0A++++data%3A+String%2C%0A%7D%0A%0Aimpl+Drop+for+CustomStruct+%7B%0A++++fn+drop%28%26mut+self%29+%7B%0A++++++++println%21%28%22Dropping+CustomStruct+with+data%3A+%7B%7D%22%2C+self.data%29%3B%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++let+custom+%3D+CustomStruct+%7B%0A++++++++data%3A+String%3A%3Afrom%28%22hello%22%29%2C%0A++++%7D%3B%0A++++println%21%28%22Created+CustomStruct+with+data%3A+%7B%7D%22%2C+custom.data%29%3B%0A++++%2F%2F+custom%EC%9D%80+%EC%9D%B4+%EC%8A%A4%EC%BD%94%ED%94%84%EB%A5%BC+%EB%B2%97%EC%96%B4%EB%82%98%EB%A9%B4%EC%84%9C+drop+%ED%95%A8%EC%88%98%EA%B0%80+%ED%98%B8%EC%B6%9C%EB%90%98%EC%96%B4+%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B0%80+%EC%95%88%EC%A0%84%ED%95%98%EA%B2%8C+%ED%95%B4%EC%A0%9C%EB%90%A9%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/28_ko.html b/docs/28_ko.html
index bad3052e204b22729926f0ea76a1d5eb02b521a5..2064a2f791b4a25299f36e95b996e10b6db3ff3d 100644
--- a/docs/28_ko.html
+++ b/docs/28_ko.html
@@ -35,66 +35,33 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>라이프타임: 참조의 유효 기간 이해하기</h1>
-            <p><strong>🎯 Lifetime</strong></p>
-<p>라이프타임은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장하는 개념입니다.</p>
-<p>이를 통해 Rust에서 참조를 안전하게 사용할 수 있습니다.</p>
-<p>여기선 함수 시그니처와 구조체에서 수명을 어떻게 표시하는지 보여줍니다.</p>
-<p>수명은 주로 빌림 검사기가 메모리 안전성을 보장하기 위한 도구로 사용되며, 컴파일러에 의해 자주 자동으로 추론된다는 것을 강조합니다.</p>
-<p>('hey: lifetime hey로 읽음)</p>
-<p>수명이란 무엇인가:</p>
-<p>수명은 참조와 빌려진 값 사이의 관계를 표현하는데 사용됩니다.</p>
-<p>수명은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장합니다.</p>
-<p>함수 시그니처와 구조체에서의 수명 표시:</p>
-<p>예제 1: 함수 시그니처에서 수명 표시</p>
-<pre><code class="rust">// 여기에서 사용된 'a는 수명을 나타내는 표시입니다.
-// 이를 통해 입력과 출력의 참조들이 동일한 수명을 가지도록 합니다.
-fn longest&lt;'a>(s1: &'a str, s2: &'a str) -> &'a str {
-    if s1.len() > s2.len() {
-        s1
-    } else {
-        s2
-    }
-}</code></pre>
-<p>예제 2: 구조체에서 수명 표시</p>
-<pre><code class="rust">// Person 구조체는 이름을 문자열 슬라이스로 저장합니다.
-// 여기에서 사용된 'a는 구조체의 이름 필드가 참조하는 문자열 슬라이스의 수명을 나타냅니다.
-struct Person&lt;'a> {
-    name: &'a str,
-}</code></pre>
-<p>수명과 빌림 검사기:</p>
-<p>수명은 빌림 검사기가 참조가 유효한 기간 동안 값이 메모리에서 해제되지 않도록 보장하는 데 사용됩니다.</p>
-<p>대부분의 경우, 컴파일러는 수명을 자동으로 추론할 수 있습니다.</p>
-<p>그러나 복잡한 상황에서는 개발자가 수명을 명시해야 할 수도 있습니다.</p>
-<p>수명을 이해하고 올바르게 사용함으로써 Rust의 빌림 검사기가 메모리 관리를 안전하게 수행할 수 있도록 지원할 수 있습니다.</p>
-<p>이는 Rust 프로그램의 성능과 안정성에 크게 기여합니다.</p>
-<pre><code class="rust">struct Wrapper&lt;'a, T: 'a> {
-    value: &'a T,
+            <h1>빌림</h1>
+            <p><strong>🎯 Borrowing</strong></p>
+<p>빌림(borrowing) 개념은 Rust에서 소유권을 이전하지 않고, 값을 참조하거나 사용할 수 있게 해주는 기능입니다.</p>
+<p>빌림은 두 가지 종류: 불변 빌림(immutable borrow), 가변 빌림(mutable borrow)</p>
+<p>빌림(borrowing)에 대한 기본적인 규칙은 다음과 같습니다:</p>
+<p>한 번에 <code>여러 개의 불변 참조</code>를 가져올 수 있지만,</p>
+<p>가변 참조를 가져올 때는 해당 변수의 다른 참조가 없어야 합니다. (<code>오직 한 개의 가변 참조</code>)</p>
+<p>이러한 규칙을 통해 Rust는 컴파일 시점에 데이터 경쟁 문제를 방지합니다.</p>
+<p>가변 빌림의 예제 (mutable borrow):</p>
+<pre><code class="rust">fn main() {
+    let mut s = String::from("hello");
+    change(&mut s);
+    println!("The new string is '{}'.", s);
 }
 
-impl<'a, T> Wrapper<'a, T> {
-    fn new(value: &'a T) -> Self {
-        Wrapper { value }
-    }
-}
-
-fn main() {
-    let x = 42;
-    let y = Box::new(7);
-    {
-        let wrapper = Wrapper::new(&x);
-        println!("Wrapper contains: {}", wrapper.value);
-        let wrapper2 = Wrapper::new(&y);
-        println!("Wrapper2 contains: {}", wrapper2.value);
-    } // y가 메모리에서 해제됩니다.
-} // x가 메모리에서 해제됩니다.</code></pre>
+fn change(s: &mut String) {
+    s.push_str(", world!");
+}</code></pre>
+<p>빌림(borrowing) 개념을 이해하면, Rust에서 소유권을 이전하지 않고도 값을 안전하게 사용할 수 있습니다.</p>
+<p>이를 통해 데이터 경쟁 문제를 방지하고, 메모리 관리에 대한 안전성을 높일 수 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="27_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="29_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EA%B0%80%EC%A7%80%EB%8A%94+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.+%EA%B0%81+%EC%B0%B8%EC%A1%B0%EB%8A%94+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%91%EB%8B%88%EB%8B%A4.%0Astruct+TwoRefs%3C%27a%2C+%27b%3E+%7B%0A++++ref_a%3A+%26%27a+str%2C%0A++++ref_b%3A+%26%27b+str%2C%0A%7D%0A%0A%2F%2F+%ED%95%A8%EC%88%98+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9E%85%EB%A0%A5+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98+%EA%B8%B8%EC%9D%B4%EC%97%90+%EB%94%B0%EB%9D%BC+%EB%91%90+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%A4%91+%ED%95%98%EB%82%98%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%27b%3A+%27a%EB%A1%9C+%EB%91%90+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%EA%B0%84%EC%9D%98+%EA%B4%80%EA%B3%84%EB%A5%BC+%EC%84%A4%EC%A0%95%ED%95%B4%EC%84%9C%0A%2F%2F+%27b+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%80+%27a+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EB%B3%B4%EB%8B%A4+%EA%B8%B8%EA%B1%B0%EB%82%98+%EA%B0%99%EC%95%84%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0Afn+choose_str%3C%27a%2C+%27b%3A+%27a%3E%28str_a%3A+%26%27a+str%2C+str_b%3A+%26%27b+str%29+-%3E+%26%27a+str+%7B%0A++++if+str_a.len%28%29+%3E+str_b.len%28%29+%7B%0A++++++++str_a%0A++++%7D+else+%7B%0A++++++++str_b%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%83%9D%EC%84%B1%0A++++let+a+%3D+String%3A%3Afrom%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.%22%29%3B%0A++++let+b+%3D+String%3A%3Afrom%28%22%EB%B0%98%EA%B0%91%EC%8A%B5%EB%8B%88%EB%8B%A4.%22%29%3B%0A%0A++++%7B%0A++++++++%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%84%9C%EB%A1%9C+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%84+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%83%9D%EC%84%B1%0A++++++++let+c+%3D+%22%EC%97%AC%EA%B8%B0%EC%84%9C+%EB%A7%8C%EB%82%98%EC%84%9C+%EB%B0%98%EA%B0%80%EC%9B%8C%EC%9A%94%21%22%3B%0A++++++++let+two_refs+%3D+TwoRefs+%7B%0A++++++++++++ref_a%3A+%26a%2C%0A++++++++++++ref_b%3A+%26c%2C%0A++++++++%7D%3B%0A%0A++++++++%2F%2F+%ED%95%A8%EC%88%98+%ED%98%B8%EC%B6%9C%0A++++++++let+longest_str+%3D+choose_str%28two_refs.ref_a%2C+two_refs.ref_b%29%3B%0A++++++++println%21%28%22%EA%B0%80%EC%9E%A5+%EA%B8%B4+%EB%AC%B8%EC%9E%90%EC%97%B4%3A+%7B%7D%22%2C+longest_str%29%3B%0A++++%7D%0A%0A++++%2F%2F+%EC%97%AC%EA%B8%B0%EC%84%9C+two_refs%EB%8A%94+%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0%2C+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%27a%EC%99%80+%27b%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80+%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22hello%22%29%3B%0D%0A++++let+s_immutable_borrow+%3D+%26s%3B%0D%0A++++%7B%0D%0A++++++++let+s_mutable_borrow+%3D+%26mut+s%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EA%B0%80+%EC%A1%B4%EC%9E%AC%ED%95%98%EB%8A%94+%EB%8F%99%EC%95%88+%EA%B0%80%EB%B3%80+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.%0D%0A++++++++replace_content%28s_mutable_borrow%2C+%22world%22%29%3B%0D%0A++++%7D%0D%0A++++println%21%28%22New+String+%27%7B%7D%27.%22%2C+s_immutable_borrow%29%3B+%2F%2F+%EB%B6%88%EB%B3%80+%EC%B0%B8%EC%A1%B0%EA%B0%80+%EC%97%AC%EC%A0%84%ED%9E%88+%EC%9C%A0%ED%9A%A8%ED%95%9C+%EC%83%81%ED%83%9C%EC%97%90%EC%84%9C+%EC%82%AC%EC%9A%A9%EB%90%A9%EB%8B%88%EB%8B%A4.%0D%0A%7D%0D%0A%0D%0Afn+replace_content%28s%3A+%26mut+String%2C+new_content%3A+%26str%29+%7B%0D%0A++++s.clear%28%29%3B%0D%0A++++s.push_str%28new_content%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/29_ko.html b/docs/29_ko.html
index bf3577a3622947ba00882948e21a90b3db6e926e..7a85462c8935d5fa0fbd14b1d9db2886963e34bd 100644
--- a/docs/29_ko.html
+++ b/docs/29_ko.html
@@ -35,39 +35,67 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>빌림 검사기</h1>
-            <p><strong>🎯 Borrow checker</strong></p>
-<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하여 메모리 안전성을 보장하는 방법을 설명합니다.</p>
-<p>빌림 검사기는 초기화와 이동을 추적할 뿐 아니라 수명 추론(lifetime inference)도 처리합니다. </p>
-<p>Rust는 lifetime이라는 단어를 두 가지 다른 방식으로 사용합니다.</p>
-<ol>
-<li>첫 번째는 값을 가리키는 수명입: 값이 해제되기 전까지의 시간을 의미</li>
-<li>값의 수명을 가리키는 또 다른 단어는 변수 범위(scope)</li>
-</ol>
-<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하는 방법 설명:</p>
-<p>Rust의 빌림 검사기는 컴파일 시간에 참조 규칙을 적용하여 메모리 안전성을 보장합니다.</p>
-<p>이를 통해 런타임에 발생할 수 있는 메모리 누수, 데이터 경쟁 등의 문제를 사전에 방지할 수 있습니다.</p>
-<p>빌림 검사기가 코드 내 참조의 수명을 분석하는 방법 설명:</p>
-<p>빌림 검사기는 함수, 구조체 및 코드 내에서 참조의 수명을 추적하고 분석합니다.</p>
-<p>이를 통해, 참조의 수명이 끝난 이후에도 사용되거나, 다른 참조가 유효하지 않은 상태에서 접근하는 것을 방지합니다.</p>
-<p>빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 예제:</p>
-<pre><code class="rust">fn main() {
-    let mut x = 5;
-    let y = &mut x;
-    let z = &x;
-    println!("x: {}, y: {}, z: {}", x, y, z);
+            <h1>라이프타임: 참조의 유효 기간 이해하기</h1>
+            <p><strong>🎯 Lifetime</strong></p>
+<p>라이프타임은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장하는 개념입니다.</p>
+<p>이를 통해 Rust에서 참조를 안전하게 사용할 수 있습니다.</p>
+<p>여기선 함수 시그니처와 구조체에서 수명을 어떻게 표시하는지 보여줍니다.</p>
+<p>수명은 주로 빌림 검사기가 메모리 안전성을 보장하기 위한 도구로 사용되며, 컴파일러에 의해 자주 자동으로 추론된다는 것을 강조합니다.</p>
+<p>('hey: lifetime hey로 읽음)</p>
+<p>수명이란 무엇인가:</p>
+<p>수명은 참조와 빌려진 값 사이의 관계를 표현하는데 사용됩니다.</p>
+<p>수명은 참조가 유효한 기간 동안 해당 값이 메모리에서 해제되지 않도록 보장합니다.</p>
+<p>함수 시그니처와 구조체에서의 수명 표시:</p>
+<p>예제 1: 함수 시그니처에서 수명 표시</p>
+<pre><code class="rust">// 여기에서 사용된 'a는 수명을 나타내는 표시입니다.
+// 이를 통해 입력과 출력의 참조들이 동일한 수명을 가지도록 합니다.
+fn longest&lt;'a>(s1: &'a str, s2: &'a str) -> &'a str {
+    if s1.len() > s2.len() {
+        s1
+    } else {
+        s2
+    }
 }</code></pre>
-<ul>
-<li>위 코드는 컴파일 시간에 오류를 발생시킵니다.</li>
-<li>빌림 검사기는 x가 변경 가능한 참조와 불변 참조가 동시에 존재하는 것을 감지합니다.</li>
-<li>빌림 검사기의 오류 메시지를 통해 개발자는 문제가 발생한 원인을 파악하고 코드를 수정할 수 있습니다.</li>
-</ul>
+<p>예제 2: 구조체에서 수명 표시</p>
+<pre><code class="rust">// Person 구조체는 이름을 문자열 슬라이스로 저장합니다.
+// 여기에서 사용된 'a는 구조체의 이름 필드가 참조하는 문자열 슬라이스의 수명을 나타냅니다.
+struct Person&lt;'a> {
+    name: &'a str,
+}</code></pre>
+<p>수명과 빌림 검사기:</p>
+<p>수명은 빌림 검사기가 참조가 유효한 기간 동안 값이 메모리에서 해제되지 않도록 보장하는 데 사용됩니다.</p>
+<p>대부분의 경우, 컴파일러는 수명을 자동으로 추론할 수 있습니다.</p>
+<p>그러나 복잡한 상황에서는 개발자가 수명을 명시해야 할 수도 있습니다.</p>
+<p>수명을 이해하고 올바르게 사용함으로써 Rust의 빌림 검사기가 메모리 관리를 안전하게 수행할 수 있도록 지원할 수 있습니다.</p>
+<p>이는 Rust 프로그램의 성능과 안정성에 크게 기여합니다.</p>
+<pre><code class="rust">struct Wrapper&lt;'a, T: 'a> {
+    value: &'a T,
+}
+
+impl<'a, T> Wrapper<'a, T> {
+    fn new(value: &'a T) -> Self {
+        Wrapper { value }
+    }
+}
+
+fn main() {
+    let x = 42;
+    let y = Box::new(7);
+    {
+        let wrapper = Wrapper::new(&x);
+        println!("Wrapper contains: {}", wrapper.value);
+        let wrapper2 = Wrapper::new(&y);
+        println!("Wrapper2 contains: {}", wrapper2.value);
+    } // y가 메모리에서 해제됩니다.
+} // x가 메모리에서 해제됩니다.</code></pre>
             <div class="bottomnav">
                 <span class="back"><a href="28_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="30_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EA%B0%80%EC%A7%80%EB%8A%94+%EA%B5%AC%EC%A1%B0%EC%B2%B4%EB%A5%BC+%EB%A7%8C%EB%93%AD%EB%8B%88%EB%8B%A4.+%EA%B0%81+%EC%B0%B8%EC%A1%B0%EB%8A%94+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%91%EB%8B%88%EB%8B%A4.%0Astruct+TwoRefs%3C%27a%2C+%27b%3E+%7B%0A++++ref_a%3A+%26%27a+str%2C%0A++++ref_b%3A+%26%27b+str%2C%0A%7D%0A%0A%2F%2F+%ED%95%A8%EC%88%98+%EC%A0%95%EC%9D%98%0A%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%2F%2F+%EC%9E%85%EB%A0%A5+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98+%EA%B8%B8%EC%9D%B4%EC%97%90+%EB%94%B0%EB%9D%BC+%EB%91%90+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%A4%91+%ED%95%98%EB%82%98%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A%2F%2F+%27b%3A+%27a%EB%A1%9C+%EB%91%90+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%EA%B0%84%EC%9D%98+%EA%B4%80%EA%B3%84%EB%A5%BC+%EC%84%A4%EC%A0%95%ED%95%B4%EC%84%9C%0A%2F%2F+%27b+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%80+%27a+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EB%B3%B4%EB%8B%A4+%EA%B8%B8%EA%B1%B0%EB%82%98+%EA%B0%99%EC%95%84%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0Afn+choose_str%3C%27a%2C+%27b%3A+%27a%3E%28str_a%3A+%26%27a+str%2C+str_b%3A+%26%27b+str%29+-%3E+%26%27a+str+%7B%0A++++if+str_a.len%28%29+%3E+str_b.len%28%29+%7B%0A++++++++str_a%0A++++%7D+else+%7B%0A++++++++str_b%0A++++%7D%0A%7D%0A%0Afn+main%28%29+%7B%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4+%EC%83%9D%EC%84%B1%0A++++let+a+%3D+String%3A%3Afrom%28%22%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94.%22%29%3B%0A++++let+b+%3D+String%3A%3Afrom%28%22%EB%B0%98%EA%B0%91%EC%8A%B5%EB%8B%88%EB%8B%A4.%22%29%3B%0A%0A++++%7B%0A++++++++%2F%2F+%EB%91%90+%EA%B0%9C%EC%9D%98+%EC%84%9C%EB%A1%9C+%EB%8B%A4%EB%A5%B8+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84%EC%9D%84+%EA%B0%80%EC%A7%84+%EA%B5%AC%EC%A1%B0%EC%B2%B4+%EC%83%9D%EC%84%B1%0A++++++++let+c+%3D+%22%EC%97%AC%EA%B8%B0%EC%84%9C+%EB%A7%8C%EB%82%98%EC%84%9C+%EB%B0%98%EA%B0%80%EC%9B%8C%EC%9A%94%21%22%3B%0A++++++++let+two_refs+%3D+TwoRefs+%7B%0A++++++++++++ref_a%3A+%26a%2C%0A++++++++++++ref_b%3A+%26c%2C%0A++++++++%7D%3B%0A%0A++++++++%2F%2F+%ED%95%A8%EC%88%98+%ED%98%B8%EC%B6%9C%0A++++++++let+longest_str+%3D+choose_str%28two_refs.ref_a%2C+two_refs.ref_b%29%3B%0A++++++++println%21%28%22%EA%B0%80%EC%9E%A5+%EA%B8%B4+%EB%AC%B8%EC%9E%90%EC%97%B4%3A+%7B%7D%22%2C+longest_str%29%3B%0A++++%7D%0A%0A++++%2F%2F+%EC%97%AC%EA%B8%B0%EC%84%9C+two_refs%EB%8A%94+%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0%2C+%EB%9D%BC%EC%9D%B4%ED%94%84%ED%83%80%EC%9E%84+%27a%EC%99%80+%27b%EB%8A%94+%EB%8D%94+%EC%9D%B4%EC%83%81+%EC%A1%B4%EC%9E%AC%ED%95%98%EC%A7%80+%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/30_ko.html b/docs/30_ko.html
index ce14b75b8ffb9fd69f38149c660540c2ac54f131..afbbaf22737546cdec91159adb820bd96a881f46 100644
--- a/docs/30_ko.html
+++ b/docs/30_ko.html
@@ -35,37 +35,39 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 2 - Conclusion</h1>
-            <p>Rust의 핵심 개념인 소유권, 빌림, 그리고 빌림 검사기에 대해 배웠습니다.</p>
-<p>이러한 개념들은 Rust의 메모리 관리 체계의 핵심이며, 이를 이해하고 올바르게 사용함으로써 메모리 안전성과 효율성을 높일 수 있습니다.</p>
-<p>Rust의 강력한 컴파일러와 빌림 검사기는 코드가 메모리 안전성을 보장하도록 도와줍니다.</p>
-<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p>오류의 원인은 변수 s에 대한 변경 가능한 참조(r3)와 변경 불가능한 참조(r1과 r2)가 동시에 존재하기 때문입니다.
-
-Rust의 빌림 규칙에 따라, 한 번에 여러 개의 변경 불가능한 참조가 허용되지만, 변경 가능한 참조가 있는 동안에는 다른 참조가 허용되지 않습니다.</p>
-
+            <h1>빌림 검사기</h1>
+            <p><strong>🎯 Borrow checker</strong></p>
+<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하여 메모리 안전성을 보장하는 방법을 설명합니다.</p>
+<p>빌림 검사기는 초기화와 이동을 추적할 뿐 아니라 수명 추론(lifetime inference)도 처리합니다. </p>
+<p>Rust는 lifetime이라는 단어를 두 가지 다른 방식으로 사용합니다.</p>
+<ol>
+<li>첫 번째는 값을 가리키는 수명입: 값이 해제되기 전까지의 시간을 의미</li>
+<li>값의 수명을 가리키는 또 다른 단어는 변수 범위(scope)</li>
+</ol>
+<p>빌림 검사기가 컴파일 시간에 빌림 규칙을 적용하는 방법 설명:</p>
+<p>Rust의 빌림 검사기는 컴파일 시간에 참조 규칙을 적용하여 메모리 안전성을 보장합니다.</p>
+<p>이를 통해 런타임에 발생할 수 있는 메모리 누수, 데이터 경쟁 등의 문제를 사전에 방지할 수 있습니다.</p>
+<p>빌림 검사기가 코드 내 참조의 수명을 분석하는 방법 설명:</p>
+<p>빌림 검사기는 함수, 구조체 및 코드 내에서 참조의 수명을 추적하고 분석합니다.</p>
+<p>이를 통해, 참조의 수명이 끝난 이후에도 사용되거나, 다른 참조가 유효하지 않은 상태에서 접근하는 것을 방지합니다.</p>
+<p>빌림 검사기가 컴파일 시간에 메모리 관리 오류를 포착하는 예제:</p>
 <pre><code class="rust">fn main() {
-    let mut s = String::from("hello");
-    {
-        let r1 = &s;
-        let r2 = &s;
-        println!("r1: {}, r2: {}", r1, r2);
-    }
-    let r3 = &mut s;
-    println!("r3: {}", r3);
+    let mut x = 5;
+    let y = &mut x;
+    let z = &x;
+    println!("x: {}, y: {}, z: {}", x, y, z);
 }</code></pre>
-<p> 위 수정된 코드에서는 r1과 r2가 사용되는 범위를 별도의 블록으로 감싸서 변경 불가능한 참조들의 수명을 줄였습니다.
-
-이렇게 하면 r3를 선언할 때 변경 불가능한 참조들이 이미 끝났기 때문에 컴파일 오류가 발생하지 않습니다.
-
-이렇게 수명을 조절하면 Rust의 빌림 규칙을 준수하면서 안전한 코드를 작성할 수 있습니다. </p> </div> </div>
+<ul>
+<li>위 코드는 컴파일 시간에 오류를 발생시킵니다.</li>
+<li>빌림 검사기는 x가 변경 가능한 참조와 불변 참조가 동시에 존재하는 것을 감지합니다.</li>
+<li>빌림 검사기의 오류 메시지를 통해 개발자는 문제가 발생한 원인을 파악하고 코드를 수정할 수 있습니다.</li>
+</ul>
             <div class="bottomnav">
                 <span class="back"><a href="29_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_3_ko.html" rel="next">다음 ❯</a></span>
-            </div>
+                <span class="next"><a href="31_ko.html" rel="next">다음 ❯</a></span>
             </div>
-            <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22hello%22%29%3B%0D%0A++++let+r1+%3D+%26s%3B%0D%0A++++let+r2+%3D+%26s%3B%0D%0A++++let+r3+%3D+%26mut+s%3B+%2F%2F+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%98%A4%EB%A5%98+%EC%97%AC%EB%B6%80+%ED%99%95%EC%9D%B8%0D%0A++++println%21%28%22r1%3A+%7B%7D%2C+r2%3A+%7B%7D%2C+r3%3A+%7B%7D%22%2C+r1%2C+r2%2C+r3%29%3B%0D%0A%7D%0D%0A%0D%0Afn+modify_string%28s%3A+%26mut+String%29+%7B%0D%0A++++s.push_str%28%22+world%22%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
+            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/31_ko.html b/docs/31_ko.html
new file mode 100644
index 0000000000000000000000000000000000000000..ebe22300d1449c9058d2346336e91644fe0c14f7
--- /dev/null
+++ b/docs/31_ko.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 2 - Conclusion</h1>
+            <p>Rust의 핵심 개념인 소유권, 빌림, 그리고 빌림 검사기에 대해 배웠습니다.</p>
+<p>이러한 개념들은 Rust의 메모리 관리 체계의 핵심이며, 이를 이해하고 올바르게 사용함으로써 메모리 안전성과 효율성을 높일 수 있습니다.</p>
+<p>Rust의 강력한 컴파일러와 빌림 검사기는 코드가 메모리 안전성을 보장하도록 도와줍니다.</p>
+<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p>오류의 원인은 변수 s에 대한 변경 가능한 참조(r3)와 변경 불가능한 참조(r1과 r2)가 동시에 존재하기 때문입니다.
+
+Rust의 빌림 규칙에 따라, 한 번에 여러 개의 변경 불가능한 참조가 허용되지만, 변경 가능한 참조가 있는 동안에는 다른 참조가 허용되지 않습니다.</p>
+
+<pre><code class="rust">fn main() {
+    let mut s = String::from("hello");
+    {
+        let r1 = &s;
+        let r2 = &s;
+        println!("r1: {}, r2: {}", r1, r2);
+    }
+    let r3 = &mut s;
+    println!("r3: {}", r3);
+}</code></pre>
+<p> 위 수정된 코드에서는 r1과 r2가 사용되는 범위를 별도의 블록으로 감싸서 변경 불가능한 참조들의 수명을 줄였습니다.
+
+이렇게 하면 r3를 선언할 때 변경 불가능한 참조들이 이미 끝났기 때문에 컴파일 오류가 발생하지 않습니다.
+
+이렇게 수명을 조절하면 Rust의 빌림 규칙을 준수하면서 안전한 코드를 작성할 수 있습니다. </p> </div> </div>
+            <div class="bottomnav">
+                <span class="back"><a href="30_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_3_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+mut+s+%3D+String%3A%3Afrom%28%22hello%22%29%3B%0D%0A++++let+r1+%3D+%26s%3B%0D%0A++++let+r2+%3D+%26s%3B%0D%0A++++let+r3+%3D+%26mut+s%3B+%2F%2F+%EC%BB%B4%ED%8C%8C%EC%9D%BC+%EC%98%A4%EB%A5%98+%EC%97%AC%EB%B6%80+%ED%99%95%EC%9D%B8%0D%0A++++println%21%28%22r1%3A+%7B%7D%2C+r2%3A+%7B%7D%2C+r3%3A+%7B%7D%22%2C+r1%2C+r2%2C+r3%29%3B%0D%0A%7D%0D%0A%0D%0Afn+modify_string%28s%3A+%26mut+String%29+%7B%0D%0A++++s.push_str%28%22+world%22%29%3B%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
+        </div>
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/32_ko.html b/docs/32_ko.html
deleted file mode 100644
index b3d6c5be37c9332e4139a494c249ac9819e2a022..0000000000000000000000000000000000000000
--- a/docs/32_ko.html
+++ /dev/null
@@ -1,91 +0,0 @@
-<!DOCTYPE html>
-    <html lang="ko">
-    <head>
-        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
-
-        <meta charset="UTF-8">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
-        <meta name="keywords" content="Rust, Programming, Learning">
-        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
-        <meta name="theme-color" content="#ff6801"/>
-        <meta http-equiv="Cache-Control" content="max-age=3600">
-        
-        <link rel="stylesheet" href="tour.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
-        
-        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
-        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
-        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
-        <link rel="/manifest" href="./site.webmanifest">
-        
-        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
-
-        <script src="./tour.js" defer></script>
-        <!-- <script>hljs.highlightAll();</script> -->
-        <script src="./highlight.badge.min.js"></script>
-    </head>
-    <body>
-        <div class="tour">
-            <div class="header">
-                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
-                <span class="nav">
-                <span class="toc"><a href="TOC_ko.html">목차</a></span>
-            </div>
-            <div class="page">
-            <h1>주요 컬렉션 타입 소개</h1>
-            <p>러스트는 일반적인 목적의 프로그래밍 데이터 구조에 대한 효율적인 구현을 제공하는 표준 컬렉션 라이브러리를 갖추고 있습니다.</p>
-<p>표준 구현을 사용하면 두 라이브러리 간에 데이터 변환 없이 원활하게 통신할 수 있습니다.</p>
-<p>가장 일반적인 사용 사례를 위해 <code>Vec</code> 또는 <code>HashMap</code>을 사용하는 것이 좋습니다.</p>
-<p>이 두 컬렉션은 대부분의 일반 데이터 저장 및 처리에 사용되며, 뛰어난 성능을 제공합니다.</p>
-<p>표준 라이브러리의 다른 컬렉션들은 특정 사용 사례에서 최적의 선택이지만, 비교적 특수한 경우에 해당합니다.</p>
-<p>실제로 <code>Vec</code>과 <code>HashMap</code>이 기술적으로 최적이 아니더라도, 시작하기에 충분한 선택이 될 것입니다.</p>
-<p>러스트의 컬렉션은 크게 4가지 주요 카테고리로 분류할 수 있습니다.</p>
-<ol>
-<li><strong>Sequences</strong>: <code>Vec</code>, <code>VecDeque</code>, <code>LinkedList</code></li>
-<li><strong>Maps</strong>: <code>HashMap</code>, <code>BTreeMap</code></li>
-<li><strong>Sets</strong>: <code>HashSet</code>, <code>BTreeSet</code></li>
-<li><strong>Misc</strong>: <code>BinaryHeap</code></li>
-</ol>
-<p>여기서는 러스트의 주요 컬렉션 타입인 벡터(Vector), 문자열(String) 및 해시맵(HashMap)에 대해 간략하게 소개하겠습니다.</p>
-<h2 id="vector">벡터(Vector)</h2>
-<p>벡터는 동적 배열로, 연속된 메모리 공간에 저장되는 동일한 타입의 요소들을 가집니다.</p>
-<p>벡터는 크기를 자동으로 조절할 수 있으며, 요소에 빠르게 접근할 수 있는 장점이 있습니다.</p>
-<h2 id="string">문자열(String)</h2>
-<p>문자열은 UTF-8 인코딩된 문자의 연속으로 구성되어 있습니다.</p>
-<p>러스트의 문자열은 변경이 불가능한 <code>&amp;str</code> 타입과 변경 가능한 <code>String</code> 타입이 있습니다.</p>
-<p>문자열은 텍스트 데이터를 저장하고 처리하는데 사용됩니다.</p>
-<h2 id="hashmap">해시맵(HashMap)</h2>
-<p>해시맵은 키-값 쌍을 저장하는 데 사용되는 컬렉션입니다.</p>
-<p>해시 함수를 사용하여 키를 해싱하여 값을 빠르게 찾을 수 있습니다.</p>
-<p>해시맵은 삽입, 검색 및 삭제 작업에 대한 평균 시간 복잡도가 O(1)입니다.</p>
-            <div class="bottomnav">
-                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="33_ko.html" rel="next">다음 ❯</a></span>
-            </div>
-            </div>
-            <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC+%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0D%0Ause+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+names%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84+%EB%B2%A1%ED%84%B0%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++names.push%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+ages%3A+HashMap%3CString%2C+u32%3E+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC+%EC%97%B0%EA%B4%80%EB%90%9C+%EA%B0%92%EC%9D%84+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++ages.insert%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%2C+25%29%3B%0D%0A++++ages.insert%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%2C+24%29%3B%0D%0A++++ages.insert%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%2C+26%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%94%EC%86%8C%EB%93%A4%EC%9D%84+%EB%B0%98%EB%B3%B5%ED%95%98%EB%A9%B0%2C+%EA%B0%81+%EC%9D%B4%EB%A6%84%EC%97%90+%EB%8C%80%ED%95%9C+%EB%82%98%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++for+name+in+names.iter%28%29+%7B%0D%0A++++++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90%EC%84%9C+%EC%9D%B4%EB%A6%84%EC%97%90+%ED%95%B4%EB%8B%B9%ED%95%98%EB%8A%94+%EB%82%98%EC%9D%B4%EB%A5%BC+%EA%B0%80%EC%A0%B8%EC%98%B4%0D%0A++++++++let+age+%3D+ages.get%28name%29.unwrap%28%29%3B%0D%0A%0D%0A++++++++%2F%2F+%EA%B2%B0%EA%B3%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++++++println%21%28%22%7B%7D%EB%8B%98%EC%9D%98+%EB%82%98%EC%9D%B4%EB%8A%94+%7B%7D%EC%82%B4%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C+name%2C+age%29%3B%0D%0A++++%7D%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
-            </div>
-        </div>
-        <script>
-        var pres = document.querySelectorAll("pre>code");
-        for (var i = 0; i < pres.length; i++) {
-            hljs.highlightElement(pres[i]);
-        }
-        var options = {
-            loadDelay: 0,
-            copyIconClass: "far fa-clipboard",
-            checkIconClass: "fa fa-check text-success",
-            blogURL: "http://rust-study.ajousw.kr/"
-        };
-        window.highlightJsBadge(options);
-        </script>
-
-        <footer>
-          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
-        </footer>
-    </body>
-</html>
\ No newline at end of file
diff --git a/docs/33_ko.html b/docs/33_ko.html
index 7af36bd82f0e3338161d7102e9831b43ae7ef49b..3afdd51d25f523a648544c63cb325c696a021ff3 100644
--- a/docs/33_ko.html
+++ b/docs/33_ko.html
@@ -35,54 +35,39 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>벡터(Vector)</h1>
-            <p>벡터는 동적 배열로, 연속된 메모리 공간에 저장되는 동일한 타입의 요소들을 가집니다.</p>
+            <h1>주요 컬렉션 타입 소개</h1>
+            <p>러스트는 일반적인 목적의 프로그래밍 데이터 구조에 대한 효율적인 구현을 제공하는 표준 컬렉션 라이브러리를 갖추고 있습니다.</p>
+<p>표준 구현을 사용하면 두 라이브러리 간에 데이터 변환 없이 원활하게 통신할 수 있습니다.</p>
+<p>가장 일반적인 사용 사례를 위해 <code>Vec</code> 또는 <code>HashMap</code>을 사용하는 것이 좋습니다.</p>
+<p>이 두 컬렉션은 대부분의 일반 데이터 저장 및 처리에 사용되며, 뛰어난 성능을 제공합니다.</p>
+<p>표준 라이브러리의 다른 컬렉션들은 특정 사용 사례에서 최적의 선택이지만, 비교적 특수한 경우에 해당합니다.</p>
+<p>실제로 <code>Vec</code>과 <code>HashMap</code>이 기술적으로 최적이 아니더라도, 시작하기에 충분한 선택이 될 것입니다.</p>
+<p>러스트의 컬렉션은 크게 4가지 주요 카테고리로 분류할 수 있습니다.</p>
+<ol>
+<li><strong>Sequences</strong>: <code>Vec</code>, <code>VecDeque</code>, <code>LinkedList</code></li>
+<li><strong>Maps</strong>: <code>HashMap</code>, <code>BTreeMap</code></li>
+<li><strong>Sets</strong>: <code>HashSet</code>, <code>BTreeSet</code></li>
+<li><strong>Misc</strong>: <code>BinaryHeap</code></li>
+</ol>
+<p>여기서는 러스트의 주요 컬렉션 타입인 벡터(Vector), 문자열(String) 및 해시맵(HashMap)에 대해 간략하게 소개하겠습니다.</p>
+<h2 id="vector">벡터(Vector)</h2>
+<p>벡터는 동적 배열로, 연속된 메모리 공간에 저장되는 동일한 타입의 요소들을 가집니다.</p>
 <p>벡터는 크기를 자동으로 조절할 수 있으며, 요소에 빠르게 접근할 수 있는 장점이 있습니다.</p>
-<h2 id="a">a. 벡터 생성 및 초기화</h2>
-<p>벡터를 생성하려면 다음과 같은 방법을 사용할 수 있습니다.</p>
-<pre><code class="rust">// 빈 벡터 생성
-let mut vec1: Vec&lt;i32> = Vec::new();
-
-// 초기 값이 있는 벡터 생성
-let vec2 = vec![1, 2, 3, 4, 5];</code></pre>
-<h2 id="b">b. 벡터 요소에 접근하고 수정하기</h2>
-<p>벡터 요소에 접근하거나 수정하려면 인덱스를 사용합니다.</p>
-<pre><code class="rust">// 벡터에서 인덱스를 사용해 요소에 접근하기
-let first_element = vec2[0]; // 첫 번째 요소
-
-// 벡터에서 인덱스를 사용해 요소를 수정하기
-vec1.push(10); // 벡터 끝에 10 추가
-vec1[0] = 20;  // 첫 번째 요소를 20으로 변경</code></pre>
-<h2 id="c">c. 벡터 순회하기</h2>
-<p>벡터의 요소를 반복하려면 <code>for</code> 루프를 사용합니다.</p>
-<pre><code class="rust">for element in vec2.iter() {
-    println!("요소: {}", element);
-}</code></pre>
-<h2 id="d">d. 벡터 슬라이싱</h2>
-<p>벡터의 일부분만 참조하려면 슬라이스를 사용합니다.</p>
-<pre><code class="rust">let slice = &vec2[1..3]; // 인덱스 1부터 2까지의 슬라이스 생성</code></pre>
-<h2 id="e">e. 벡터 크기 조절 및 용량 관리</h2>
-<p>벡터의 크기를 조절하거나 용량을 관리하려면 다음과 같은 메서드를 사용합니다.</p>
-<pre><code class="rust">vec1.reserve(10); // 최소한 10개 요소를 저장할 수 있는 공간을 확보
-vec1.shrink_to_fit(); // 벡터의 용량을 최소한으로 줄이기
-vec1.resize(5, 0); // 벡터 크기를 5로 조절하고, 새로운 요소를 0으로 초기화</code></pre>
-<h2 id="f">f. 고급 벡터 사용법</h2>
-<p>벡터의 고급 사용법에는 벡터에서 요소를 제거하거나 벡터의 일부를 다른 벡터로 이동하는 등의 작업이 포함됩니다.</p>
-<pre><code class="rust">// 벡터에서 인덱스 i의 요소 제거
-let i = 2; vec1.remove(i);
-
-// 벡터에서 마지막 요소를 꺼내기
-if let Some(last_element) = vec1.pop() {
-    println!("마지막 요소: {}", last_element);
-}</code></pre>
-<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/alloc/vec/struct.Vec.html#" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
+<h2 id="string">문자열(String)</h2>
+<p>문자열은 UTF-8 인코딩된 문자의 연속으로 구성되어 있습니다.</p>
+<p>러스트의 문자열은 변경이 불가능한 <code>&amp;str</code> 타입과 변경 가능한 <code>String</code> 타입이 있습니다.</p>
+<p>문자열은 텍스트 데이터를 저장하고 처리하는데 사용됩니다.</p>
+<h2 id="hashmap">해시맵(HashMap)</h2>
+<p>해시맵은 키-값 쌍을 저장하는 데 사용되는 컬렉션입니다.</p>
+<p>해시 함수를 사용하여 키를 해싱하여 값을 빠르게 찾을 수 있습니다.</p>
+<p>해시맵은 삽입, 검색 및 삭제 작업에 대한 평균 시간 복잡도가 O(1)입니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="32_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="back"><a href="chapter_3_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="34_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++%2F%2F+%EB%B9%88+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0A++++let+mut+vec1%3A+Vec%3Ci32%3E+%3D+Vec%3A%3Anew%28%29%3B%0A%0A++++%2F%2F+%EC%B4%88%EA%B8%B0+%EA%B0%92%EC%9D%B4+%EC%9E%88%EB%8A%94+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0A++++let+vec2+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A++++%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%B4+%EC%9A%94%EC%86%8C%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0%0A++++let+first_element+%3D+vec2%5B0%5D%3B+%2F%2F+%EC%B2%AB+%EB%B2%88%EC%A7%B8+%EC%9A%94%EC%86%8C%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%B4+%EC%9A%94%EC%86%8C%EB%A5%BC+%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0%0A++++vec1.push%2810%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0+%EB%81%9D%EC%97%90+10+%EC%B6%94%EA%B0%80%0A++++vec1%5B0%5D+%3D+20%3B+%2F%2F+%EC%B2%AB+%EB%B2%88%EC%A7%B8+%EC%9A%94%EC%86%8C%EB%A5%BC+20%EC%9C%BC%EB%A1%9C+%EB%B3%80%EA%B2%BD%0A++++%0A++++for+element+in+vec2.iter%28%29+%7B%0A++++++++println%21%28%22%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+element%29%3B%0A++++%7D%0A++++%0A++++let+slice+%3D+%26vec2%5B1..3%5D%3B+%2F%2F+%EC%9D%B8%EB%8D%B1%EC%8A%A4+1%EB%B6%80%ED%84%B0+2%EA%B9%8C%EC%A7%80%EC%9D%98+%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8A%A4+%EC%83%9D%EC%84%B1%0A++++println%21%28%22%7Bslice%3A%23%3F%7D%22%29%3B%0A++++%0A++++vec1.reserve%2810%29%3B+%2F%2F+%EC%B5%9C%EC%86%8C%ED%95%9C+10%EA%B0%9C+%EC%9A%94%EC%86%8C%EB%A5%BC+%EC%A0%80%EC%9E%A5%ED%95%A0+%EC%88%98+%EC%9E%88%EB%8A%94+%EA%B3%B5%EA%B0%84%EC%9D%84+%ED%99%95%EB%B3%B4%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++vec1.shrink_to_fit%28%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%A9%EB%9F%89%EC%9D%84+%EC%B5%9C%EC%86%8C%ED%95%9C%EC%9C%BC%EB%A1%9C+%EC%A4%84%EC%9D%B4%EA%B8%B0%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++vec1.resize%285%2C+0%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0+%ED%81%AC%EA%B8%B0%EB%A5%BC+5%EB%A1%9C+%EC%A1%B0%EC%A0%88%ED%95%98%EA%B3%A0%2C+%EC%83%88%EB%A1%9C%EC%9A%B4+%EC%9A%94%EC%86%8C%EB%A5%BC+0%EC%9C%BC%EB%A1%9C+%EC%B4%88%EA%B8%B0%ED%99%94%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4+i%EC%9D%98+%EC%9A%94%EC%86%8C+%EC%A0%9C%EA%B1%B0%0A++++let+i+%3D+2%3B%0A++++vec1.remove%28i%29%3B%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EB%A7%88%EC%A7%80%EB%A7%89+%EC%9A%94%EC%86%8C%EB%A5%BC+%EA%BA%BC%EB%82%B4%EA%B8%B0%0A++++if+let+Some%28last_element%29+%3D+vec1.pop%28%29+%7B%0A++++++++println%21%28%22%EB%A7%88%EC%A7%80%EB%A7%89+%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+last_element%29%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC+%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0D%0Ause+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+names%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84+%EB%B2%A1%ED%84%B0%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++names.push%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+ages%3A+HashMap%3CString%2C+u32%3E+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC+%EC%97%B0%EA%B4%80%EB%90%9C+%EA%B0%92%EC%9D%84+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++ages.insert%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%2C+25%29%3B%0D%0A++++ages.insert%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%2C+24%29%3B%0D%0A++++ages.insert%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%2C+26%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%94%EC%86%8C%EB%93%A4%EC%9D%84+%EB%B0%98%EB%B3%B5%ED%95%98%EB%A9%B0%2C+%EA%B0%81+%EC%9D%B4%EB%A6%84%EC%97%90+%EB%8C%80%ED%95%9C+%EB%82%98%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++for+name+in+names.iter%28%29+%7B%0D%0A++++++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90%EC%84%9C+%EC%9D%B4%EB%A6%84%EC%97%90+%ED%95%B4%EB%8B%B9%ED%95%98%EB%8A%94+%EB%82%98%EC%9D%B4%EB%A5%BC+%EA%B0%80%EC%A0%B8%EC%98%B4%0D%0A++++++++let+age+%3D+ages.get%28name%29.unwrap%28%29%3B%0D%0A%0D%0A++++++++%2F%2F+%EA%B2%B0%EA%B3%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++++++println%21%28%22%7B%7D%EB%8B%98%EC%9D%98+%EB%82%98%EC%9D%B4%EB%8A%94+%7B%7D%EC%82%B4%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C+name%2C+age%29%3B%0D%0A++++%7D%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/34_ko.html b/docs/34_ko.html
index 2c12dbfccf364df19490c77f9d6755b8e5709d09..bd18db65619bc1cc7675ecdcf532b5b79756c949 100644
--- a/docs/34_ko.html
+++ b/docs/34_ko.html
@@ -35,55 +35,54 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>벡터의 반복자(Iterators)</h1>
-            <p>벡터와 같은 Iterator trait가 구현된 것들에는 요소들을 반복하고 처리할 때 사용할 수 있는 여러 가지 반복자 메서드가 있습니다.</p>
-<p><code>iter()</code>, <code>iter_mut()</code>, <code>into_iter()</code>는 각각 불변 참조, 가변 참조, 소유권 이동을 수행하는 반복자를 생성합니다.</p>
-<h3 id="1iter">1. iter()</h3>
-<p><code>iter()</code> 메서드는 벡터의 각 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다.</p>
-<p>이 반복자는 벡터의 요소를 읽기 전용으로 사용할 때 유용합니다.</p>
-<pre><code class="rust">let vec = vec![1, 2, 3, 4, 5];
+            <h1>벡터(Vector)</h1>
+            <p>벡터는 동적 배열로, 연속된 메모리 공간에 저장되는 동일한 타입의 요소들을 가집니다.</p>
+<p>벡터는 크기를 자동으로 조절할 수 있으며, 요소에 빠르게 접근할 수 있는 장점이 있습니다.</p>
+<h2 id="a">a. 벡터 생성 및 초기화</h2>
+<p>벡터를 생성하려면 다음과 같은 방법을 사용할 수 있습니다.</p>
+<pre><code class="rust">// 빈 벡터 생성
+let mut vec1: Vec&lt;i32> = Vec::new();
 
-for element in vec.iter() {
+// 초기 값이 있는 벡터 생성
+let vec2 = vec![1, 2, 3, 4, 5];</code></pre>
+<h2 id="b">b. 벡터 요소에 접근하고 수정하기</h2>
+<p>벡터 요소에 접근하거나 수정하려면 인덱스를 사용합니다.</p>
+<pre><code class="rust">// 벡터에서 인덱스를 사용해 요소에 접근하기
+let first_element = vec2[0]; // 첫 번째 요소
+
+// 벡터에서 인덱스를 사용해 요소를 수정하기
+vec1.push(10); // 벡터 끝에 10 추가
+vec1[0] = 20;  // 첫 번째 요소를 20으로 변경</code></pre>
+<h2 id="c">c. 벡터 순회하기</h2>
+<p>벡터의 요소를 반복하려면 <code>for</code> 루프를 사용합니다.</p>
+<pre><code class="rust">for element in vec2.iter() {
     println!("요소: {}", element);
 }</code></pre>
-<h3 id="2iter_mut">2. iter_mut()</h3>
-<p><code>iter_mut()</code> 메서드는 벡터의 각 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다.</p>
-<p>이 반복자는 벡터의 요소를 수정할 때 유용합니다.</p>
-<pre><code class="rust">let mut vec = vec![1, 2, 3, 4, 5];
-
-for element in vec.iter_mut() {
-    *element *= 2; // 각 요소에 2를 곱함
-}
-println!("변경된 벡터: {:?}", vec);</code></pre>
-<h3 id="3into_iter">3. into_iter()</h3>
-<p><code>into_iter()</code> 메서드는 벡터의 각 요소의 소유권을 이동하는 반복자를 반환합니다.</p>
-<p>이 반복자는 벡터의 요소를 소유권을 이동시키며 처리할 때 유용합니다.</p>
-<p>이를 통해 벡터의 요소를 다른 데이터 구조로 쉽게 옮길 수 있습니다.</p>
-<pre><code class="rust">let vec = vec!["a".to_string(), "b".to_string(), "c".to_string()];
-
-let mut uppercased_vec: Vec&lt;String> = Vec::new();
+<h2 id="d">d. 벡터 슬라이싱</h2>
+<p>벡터의 일부분만 참조하려면 슬라이스를 사용합니다.</p>
+<pre><code class="rust">let slice = &vec2[1..3]; // 인덱스 1부터 2까지의 슬라이스 생성</code></pre>
+<h2 id="e">e. 벡터 크기 조절 및 용량 관리</h2>
+<p>벡터의 크기를 조절하거나 용량을 관리하려면 다음과 같은 메서드를 사용합니다.</p>
+<pre><code class="rust">vec1.reserve(10); // 최소한 10개 요소를 저장할 수 있는 공간을 확보
+vec1.shrink_to_fit(); // 벡터의 용량을 최소한으로 줄이기
+vec1.resize(5, 0); // 벡터 크기를 5로 조절하고, 새로운 요소를 0으로 초기화</code></pre>
+<h2 id="f">f. 고급 벡터 사용법</h2>
+<p>벡터의 고급 사용법에는 벡터에서 요소를 제거하거나 벡터의 일부를 다른 벡터로 이동하는 등의 작업이 포함됩니다.</p>
+<pre><code class="rust">// 벡터에서 인덱스 i의 요소 제거
+let i = 2; vec1.remove(i);
 
-for element in vec.into_iter() {
-    uppercased_vec.push(element.to_uppercase());
-}
-
-println!("대문자로 변경된 벡터: {:?}", uppercased_vec);</code></pre>
-<p><code>into_iter()</code>를 사용할 때 원래의 벡터는 더 이상 사용할 수 없습니다.</p>
-<p>소유권이 이동되어 원래 벡터에 대한 참조가 무효화되기 때문입니다.</p>
-<h2 id="">차이점</h2>
-<ul>
-<li><code>iter()</code>: 벡터의 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다. 요소를 읽기 전용으로 사용할 때 사용됩니다.</li>
-<li><code>iter_mut()</code>: 벡터의 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다. 요소를 수정할 때 사용됩니다.</li>
-<li><code>into_iter()</code>: 벡터의 요소의 소유권을 이동하는 반복자를 반환합니다. 요소를 소유권을 이동시키며 처리할 때 사용됩니다.</li>
-</ul>
-<p>이러한 반복자들은 각각 다양한 상황에 따라 벡터를 처리할 수 있습니다.</p>
+// 벡터에서 마지막 요소를 꺼내기
+if let Some(last_element) = vec1.pop() {
+    println!("마지막 요소: {}", last_element);
+}</code></pre>
+<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/alloc/vec/struct.Vec.html#" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
             <div class="bottomnav">
                 <span class="back"><a href="33_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="35_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++let+vec+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A++++println%21%28%22%EB%B3%80%EA%B2%BD+%EC%A0%84+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+vec%29%3B%0A%0A++++for+element+in+vec.iter%28%29+%7B%0A++++++++println%21%28%22%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+element%29%3B%0A++++%7D%0A%0A++++let+mut+vec+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A%0A++++for+element+in+vec.iter_mut%28%29+%7B%0A++++++++*element+*%3D+2%3B+%2F%2F+%EA%B0%81+%EC%9A%94%EC%86%8C%EC%97%90+2%EB%A5%BC+%EA%B3%B1%ED%95%A8%0A++++%7D%0A++++%0A++++println%21%28%22%EB%B3%80%EA%B2%BD%EB%90%9C+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+vec%29%3B%0A%0A++++let+vec+%3D+vec%21%5B%22a%22.to_string%28%29%2C+%22b%22.to_string%28%29%2C+%22c%22.to_string%28%29%5D%3B%0A%0A++++let+mut+uppercased_vec%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0A%0A++++for+element+in+vec.into_iter%28%29+%7B%0A++++++++uppercased_vec.push%28element.to_uppercase%28%29%29%3B%0A++++%7D%0A++++%0A++++%2F%2F+vec%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EB%84%98%EC%96%B4%EA%B0%80%EC%84%9C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%0A++++println%21%28%22%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C+%EB%B3%80%EA%B2%BD%EB%90%9C+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+uppercased_vec%29%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++%2F%2F+%EB%B9%88+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0A++++let+mut+vec1%3A+Vec%3Ci32%3E+%3D+Vec%3A%3Anew%28%29%3B%0A%0A++++%2F%2F+%EC%B4%88%EA%B8%B0+%EA%B0%92%EC%9D%B4+%EC%9E%88%EB%8A%94+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0A++++let+vec2+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A++++%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%B4+%EC%9A%94%EC%86%8C%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0%0A++++let+first_element+%3D+vec2%5B0%5D%3B+%2F%2F+%EC%B2%AB+%EB%B2%88%EC%A7%B8+%EC%9A%94%EC%86%8C%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%B4+%EC%9A%94%EC%86%8C%EB%A5%BC+%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0%0A++++vec1.push%2810%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0+%EB%81%9D%EC%97%90+10+%EC%B6%94%EA%B0%80%0A++++vec1%5B0%5D+%3D+20%3B+%2F%2F+%EC%B2%AB+%EB%B2%88%EC%A7%B8+%EC%9A%94%EC%86%8C%EB%A5%BC+20%EC%9C%BC%EB%A1%9C+%EB%B3%80%EA%B2%BD%0A++++%0A++++for+element+in+vec2.iter%28%29+%7B%0A++++++++println%21%28%22%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+element%29%3B%0A++++%7D%0A++++%0A++++let+slice+%3D+%26vec2%5B1..3%5D%3B+%2F%2F+%EC%9D%B8%EB%8D%B1%EC%8A%A4+1%EB%B6%80%ED%84%B0+2%EA%B9%8C%EC%A7%80%EC%9D%98+%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8A%A4+%EC%83%9D%EC%84%B1%0A++++println%21%28%22%7Bslice%3A%23%3F%7D%22%29%3B%0A++++%0A++++vec1.reserve%2810%29%3B+%2F%2F+%EC%B5%9C%EC%86%8C%ED%95%9C+10%EA%B0%9C+%EC%9A%94%EC%86%8C%EB%A5%BC+%EC%A0%80%EC%9E%A5%ED%95%A0+%EC%88%98+%EC%9E%88%EB%8A%94+%EA%B3%B5%EA%B0%84%EC%9D%84+%ED%99%95%EB%B3%B4%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++vec1.shrink_to_fit%28%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%A9%EB%9F%89%EC%9D%84+%EC%B5%9C%EC%86%8C%ED%95%9C%EC%9C%BC%EB%A1%9C+%EC%A4%84%EC%9D%B4%EA%B8%B0%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++vec1.resize%285%2C+0%29%3B+%2F%2F+%EB%B2%A1%ED%84%B0+%ED%81%AC%EA%B8%B0%EB%A5%BC+5%EB%A1%9C+%EC%A1%B0%EC%A0%88%ED%95%98%EA%B3%A0%2C+%EC%83%88%EB%A1%9C%EC%9A%B4+%EC%9A%94%EC%86%8C%EB%A5%BC+0%EC%9C%BC%EB%A1%9C+%EC%B4%88%EA%B8%B0%ED%99%94%0A++++println%21%28%22Vector+%EC%88%98%EC%9A%A9%EB%9F%89%3A+%7B%7D%22%2C+vec1.capacity%28%29%29%3B%0A++++%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EC%9D%B8%EB%8D%B1%EC%8A%A4+i%EC%9D%98+%EC%9A%94%EC%86%8C+%EC%A0%9C%EA%B1%B0%0A++++let+i+%3D+2%3B%0A++++vec1.remove%28i%29%3B%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%97%90%EC%84%9C+%EB%A7%88%EC%A7%80%EB%A7%89+%EC%9A%94%EC%86%8C%EB%A5%BC+%EA%BA%BC%EB%82%B4%EA%B8%B0%0A++++if+let+Some%28last_element%29+%3D+vec1.pop%28%29+%7B%0A++++++++println%21%28%22%EB%A7%88%EC%A7%80%EB%A7%89+%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+last_element%29%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/35_ko.html b/docs/35_ko.html
index 3d8b010ea49230f1b24cd5d3213de35a4ff479cb..2770095579ab6c607eb3aedd2606f67ac27d67d2 100644
--- a/docs/35_ko.html
+++ b/docs/35_ko.html
@@ -35,73 +35,55 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>해시맵(HashMap)</h1>
-            <p>해시맵은 키-값 쌍을 저장하는 데 사용되는 컬렉션입니다.</p>
-<p>해시 함수를 사용하여 키를 해싱하여 값을 빠르게 찾을 수 있습니다.</p>
-<p>해시맵은 삽입, 검색 및 삭제 작업에 대한 평균 시간 복잡도가 <code>O(1)</code>입니다.</p>
-<h2 id="a">a. 해시맵 생성 및 초기화</h2>
-<p>해시맵을 생성하려면 다음과 같은 방법을 사용할 수 있습니다.</p>
-<pre><code class="rust">use std::collections::HashMap;
+            <h1>벡터의 반복자(Iterators)</h1>
+            <p>벡터와 같은 Iterator trait가 구현된 것들에는 요소들을 반복하고 처리할 때 사용할 수 있는 여러 가지 반복자 메서드가 있습니다.</p>
+<p><code>iter()</code>, <code>iter_mut()</code>, <code>into_iter()</code>는 각각 불변 참조, 가변 참조, 소유권 이동을 수행하는 반복자를 생성합니다.</p>
+<h3 id="1iter">1. iter()</h3>
+<p><code>iter()</code> 메서드는 벡터의 각 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다.</p>
+<p>이 반복자는 벡터의 요소를 읽기 전용으로 사용할 때 유용합니다.</p>
+<pre><code class="rust">let vec = vec![1, 2, 3, 4, 5];
 
-// 빈 해시맵 생성
-let mut scores: HashMap&lt;String, u32> = HashMap::new();
-
-// 초기 값이 있는 해시맵 생성
-let scores = vec![("Alice", 50), ("Bob", 60)]
-    .into_iter()
-    .map(|(k, v)| (k.to_string(), v))
-    .collect::<HashMap<String, u32>>();</code></pre>
-<h2 id="b">b. 키-값 쌍 삽입 및 업데이트</h2>
-<p>해시맵에 키-값 쌍을 삽입하거나 업데이트하려면 <code>insert</code> 메서드를 사용합니다.</p>
-<pre><code class="rust">// 키-값 쌍 삽입
-scores.insert("Alice".to_string(), 50);
-scores.insert("Bob".to_string(), 60);
+for element in vec.iter() {
+    println!("요소: {}", element);
+}</code></pre>
+<h3 id="2iter_mut">2. iter_mut()</h3>
+<p><code>iter_mut()</code> 메서드는 벡터의 각 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다.</p>
+<p>이 반복자는 벡터의 요소를 수정할 때 유용합니다.</p>
+<pre><code class="rust">let mut vec = vec![1, 2, 3, 4, 5];
 
-// 키-값 쌍 업데이트
-scores.insert("Alice".to_string(), 55);</code></pre>
-<h2 id="c">c. 값에 접근하고 삭제하기</h2>
-<p>해시맵에서 값을 접근하거나 삭제하려면 <code>get</code> 또는 <code>remove</code> 메서드를 사용합니다.</p>
-<pre><code class="rust">// 값에 접근하기
-if let Some(score) = scores.get("Alice") {
-    println!("Alice의 점수: {}", score);
+for element in vec.iter_mut() {
+    *element *= 2; // 각 요소에 2를 곱함
 }
+println!("변경된 벡터: {:?}", vec);</code></pre>
+<h3 id="3into_iter">3. into_iter()</h3>
+<p><code>into_iter()</code> 메서드는 벡터의 각 요소의 소유권을 이동하는 반복자를 반환합니다.</p>
+<p>이 반복자는 벡터의 요소를 소유권을 이동시키며 처리할 때 유용합니다.</p>
+<p>이를 통해 벡터의 요소를 다른 데이터 구조로 쉽게 옮길 수 있습니다.</p>
+<pre><code class="rust">let vec = vec!["a".to_string(), "b".to_string(), "c".to_string()];
 
-// 값 삭제하기
-scores.remove("Alice");</code></pre>
-<h2 id="d">d. 해시맵 순회하기</h2>
-<p>해시맵의 키-값 쌍을 반복하려면 <code>for</code> 루프를 사용합니다.</p>
-<pre><code class="rust">for (key, value) in &scores {
-    println!("{}: {}", key, value);
-}</code></pre>
-<h2 id="e">e. 일반적인 해시맵 작업</h2>
-<p>해시맵에서 자주 사용되는 작업들은 다음과 같습니다.</p>
-<ul>
-<li><code>contains_key</code>: 특정 키가 해시맵에 있는지 확인합니다.</li>
-<li><code>keys</code>: 해시맵의 모든 키를 반환합니다.</li>
-<li><code>values</code>: 해시맵의 모든 값을 반환합니다.</li>
-</ul>
-<pre><code class="rust">// 키가 해시맵에 있는지 확인하기
-if scores.contains_key("Alice") {
-    println!("Alice의 점수가 있습니다.");
-}
+let mut uppercased_vec: Vec&lt;String> = Vec::new();
 
-// 해시맵의 모든 키 출력하기
-for key in scores.keys() {
-    println!("키: {}", key);
+for element in vec.into_iter() {
+    uppercased_vec.push(element.to_uppercase());
 }
 
-// 해시맵의 모든 값 출력하기
-for value in scores.values() {
-    println!("값: {}", value);
-}</code></pre>
-<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/std/collections/struct.HashMap.html" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
+println!("대문자로 변경된 벡터: {:?}", uppercased_vec);</code></pre>
+<p><code>into_iter()</code>를 사용할 때 원래의 벡터는 더 이상 사용할 수 없습니다.</p>
+<p>소유권이 이동되어 원래 벡터에 대한 참조가 무효화되기 때문입니다.</p>
+<h2 id="">차이점</h2>
+<ul>
+<li><code>iter()</code>: 벡터의 요소에 대한 불변 참조를 생성하는 반복자를 반환합니다. 요소를 읽기 전용으로 사용할 때 사용됩니다.</li>
+<li><code>iter_mut()</code>: 벡터의 요소에 대한 가변 참조를 생성하는 반복자를 반환합니다. 요소를 수정할 때 사용됩니다.</li>
+<li><code>into_iter()</code>: 벡터의 요소의 소유권을 이동하는 반복자를 반환합니다. 요소를 소유권을 이동시키며 처리할 때 사용됩니다.</li>
+</ul>
+<p>이러한 반복자들은 각각 다양한 상황에 따라 벡터를 처리할 수 있습니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="34_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="36_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC+%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0D%0Ause+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+names%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84+%EB%B2%A1%ED%84%B0%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++names.push%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+ages%3A+HashMap%3CString%2C+u32%3E+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC+%EC%97%B0%EA%B4%80%EB%90%9C+%EA%B0%92%EC%9D%84+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++ages.insert%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%2C+25%29%3B%0D%0A++++ages.insert%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%2C+24%29%3B%0D%0A++++ages.insert%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%2C+26%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%94%EC%86%8C%EB%93%A4%EC%9D%84+%EB%B0%98%EB%B3%B5%ED%95%98%EB%A9%B0%2C+%EA%B0%81+%EC%9D%B4%EB%A6%84%EC%97%90+%EB%8C%80%ED%95%9C+%EB%82%98%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++for+name+in+names.iter%28%29+%7B%0D%0A++++++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90%EC%84%9C+%EC%9D%B4%EB%A6%84%EC%97%90+%ED%95%B4%EB%8B%B9%ED%95%98%EB%8A%94+%EB%82%98%EC%9D%B4%EB%A5%BC+%EA%B0%80%EC%A0%B8%EC%98%B4%0D%0A++++++++let+age+%3D+ages.get%28name%29.unwrap%28%29%3B%0D%0A%0D%0A++++++++%2F%2F+%EA%B2%B0%EA%B3%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++++++println%21%28%22%7B%7D%EB%8B%98%EC%9D%98+%EB%82%98%EC%9D%B4%EB%8A%94+%7B%7D%EC%82%B4%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C+name%2C+age%29%3B%0D%0A++++%7D%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++let+vec+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A++++println%21%28%22%EB%B3%80%EA%B2%BD+%EC%A0%84+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+vec%29%3B%0A%0A++++for+element+in+vec.iter%28%29+%7B%0A++++++++println%21%28%22%EC%9A%94%EC%86%8C%3A+%7B%7D%22%2C+element%29%3B%0A++++%7D%0A%0A++++let+mut+vec+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%5D%3B%0A%0A++++for+element+in+vec.iter_mut%28%29+%7B%0A++++++++*element+*%3D+2%3B+%2F%2F+%EA%B0%81+%EC%9A%94%EC%86%8C%EC%97%90+2%EB%A5%BC+%EA%B3%B1%ED%95%A8%0A++++%7D%0A++++%0A++++println%21%28%22%EB%B3%80%EA%B2%BD%EB%90%9C+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+vec%29%3B%0A%0A++++let+vec+%3D+vec%21%5B%22a%22.to_string%28%29%2C+%22b%22.to_string%28%29%2C+%22c%22.to_string%28%29%5D%3B%0A%0A++++let+mut+uppercased_vec%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0A%0A++++for+element+in+vec.into_iter%28%29+%7B%0A++++++++uppercased_vec.push%28element.to_uppercase%28%29%29%3B%0A++++%7D%0A++++%0A++++%2F%2F+vec%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EB%84%98%EC%96%B4%EA%B0%80%EC%84%9C+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%0A++++println%21%28%22%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C+%EB%B3%80%EA%B2%BD%EB%90%9C+%EB%B2%A1%ED%84%B0%3A+%7B%3A%3F%7D%22%2C+uppercased_vec%29%3B%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/36_ko.html b/docs/36_ko.html
index 6f36d69f36e45b69f390aa67ea25d6215c223463..e33040c9c4e2e7425facda0a5b69094f7906f21d 100644
--- a/docs/36_ko.html
+++ b/docs/36_ko.html
@@ -35,46 +35,73 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>이터레이터(Iterators) 소개</h1>
-            <p>이터레이터는 Rust에서 컬렉션의 요소를 순회하고 처리하는 데 중요한 역할을 하는 추상화 개념입니다.</p>
-<p>이터레이터는 컬렉션의 요소를 효율적이고 간결한 방법으로 처리할 수 있게 도와줍니다.</p>
-<h2 id="arust">a. 이터레이터 개념 및 Rust에서의 중요성</h2>
-<p>이터레이터는 데이터 집합을 순차적으로 접근하는 데 사용되는 개체입니다.</p>
-<p>Rust에서 이터레이터는 컬렉션의 요소를 처리하는 데 사용되며, 함수형 프로그래밍 패턴과 함께 사용할 수 있습니다.</p>
-<p>이터레이터는 함수형 프로그래밍을 지원하며, 일반적으로 Rust의 for 루프에서 사용됩니다.</p>
-<p>Rust에서 이터레이터의 중요성은 다음과 같습니다:</p>
-<ol>
-<li>코드의 간결성: 이터레이터를 사용하면 반복문을 사용하는 코드를 보다 간결하게 작성할 수 있습니다.</li>
-<li>느긋한 평가(Lazy evaluation): 이터레이터는 필요한 경우에만 요소를 처리하므로, 메모리 사용량과 실행 시간을 줄일 수 있습니다.</li>
-<li>컴포지션: 이터레이터를 사용하면 여러 이터레이터 메서드를 연결하여 작업을 쉽게 구성할 수 있습니다.</li>
-</ol>
-<h2 id="biteratornextcollect">b. Iterator 트레잇과 메서드 소개 (next, collect 등)</h2>
-<p><code>Iterator</code> 트레잇은 Rust의 이터레이터를 구현하는 데 사용되는 트레잇입니다.</p>
-<p>이 트레잇에는 다음과 같은 메서드가 정의되어 있습니다.</p>
-<h3 id="next">next</h3>
-<p><code>next</code> 메서드는 이터레이터의 다음 요소를 반환합니다.</p>
-<p>모든 요소를 순회한 경우, <code>None</code>을 반환합니다.</p>
-<pre><code class="rust">let mut numbers = vec![1, 2, 3, 4, 5].into_iter();
+            <h1>해시맵(HashMap)</h1>
+            <p>해시맵은 키-값 쌍을 저장하는 데 사용되는 컬렉션입니다.</p>
+<p>해시 함수를 사용하여 키를 해싱하여 값을 빠르게 찾을 수 있습니다.</p>
+<p>해시맵은 삽입, 검색 및 삭제 작업에 대한 평균 시간 복잡도가 <code>O(1)</code>입니다.</p>
+<h2 id="a">a. 해시맵 생성 및 초기화</h2>
+<p>해시맵을 생성하려면 다음과 같은 방법을 사용할 수 있습니다.</p>
+<pre><code class="rust">use std::collections::HashMap;
 
-while let Some(number) = numbers.next() {
-    println!("Number: {}", number);
+// 빈 해시맵 생성
+let mut scores: HashMap&lt;String, u32> = HashMap::new();
+
+// 초기 값이 있는 해시맵 생성
+let scores = vec![("Alice", 50), ("Bob", 60)]
+    .into_iter()
+    .map(|(k, v)| (k.to_string(), v))
+    .collect::<HashMap<String, u32>>();</code></pre>
+<h2 id="b">b. 키-값 쌍 삽입 및 업데이트</h2>
+<p>해시맵에 키-값 쌍을 삽입하거나 업데이트하려면 <code>insert</code> 메서드를 사용합니다.</p>
+<pre><code class="rust">// 키-값 쌍 삽입
+scores.insert("Alice".to_string(), 50);
+scores.insert("Bob".to_string(), 60);
+
+// 키-값 쌍 업데이트
+scores.insert("Alice".to_string(), 55);</code></pre>
+<h2 id="c">c. 값에 접근하고 삭제하기</h2>
+<p>해시맵에서 값을 접근하거나 삭제하려면 <code>get</code> 또는 <code>remove</code> 메서드를 사용합니다.</p>
+<pre><code class="rust">// 값에 접근하기
+if let Some(score) = scores.get("Alice") {
+    println!("Alice의 점수: {}", score);
+}
+
+// 값 삭제하기
+scores.remove("Alice");</code></pre>
+<h2 id="d">d. 해시맵 순회하기</h2>
+<p>해시맵의 키-값 쌍을 반복하려면 <code>for</code> 루프를 사용합니다.</p>
+<pre><code class="rust">for (key, value) in &scores {
+    println!("{}: {}", key, value);
 }</code></pre>
-<h3 id="collect">collect</h3>
-<p><code>collect</code> 메서드는 이터레이터의 요소를 다른 컬렉션 타입으로 변환합니다.</p>
-<pre><code class="rust">let numbers = vec![1, 2, 3, 4, 5];
-let doubled_numbers: Vec&lt;_> = numbers.iter().map(|x| x * 2).collect();
+<h2 id="e">e. 일반적인 해시맵 작업</h2>
+<p>해시맵에서 자주 사용되는 작업들은 다음과 같습니다.</p>
+<ul>
+<li><code>contains_key</code>: 특정 키가 해시맵에 있는지 확인합니다.</li>
+<li><code>keys</code>: 해시맵의 모든 키를 반환합니다.</li>
+<li><code>values</code>: 해시맵의 모든 값을 반환합니다.</li>
+</ul>
+<pre><code class="rust">// 키가 해시맵에 있는지 확인하기
+if scores.contains_key("Alice") {
+    println!("Alice의 점수가 있습니다.");
+}
 
-println!("Doubled numbers: {:?}", doubled_numbers);</code></pre>
-<p>이 외에도 다양한 이터레이터 메서드가 있습니다.</p>
-<p>예를 들어, <code>filter</code>, <code>map</code>, <code>fold</code>, <code>take</code>, <code>skip</code>, <code>all</code>, <code>any</code> 등의 메서드를 사용하여 이터레이터를 처리할 수 있습니다.</p>
-<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/core/iter/trait.Iterator.html" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
+// 해시맵의 모든 키 출력하기
+for key in scores.keys() {
+    println!("키: {}", key);
+}
+
+// 해시맵의 모든 값 출력하기
+for value in scores.values() {
+    println!("값: {}", value);
+}</code></pre>
+<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/std/collections/struct.HashMap.html" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
             <div class="bottomnav">
                 <span class="back"><a href="35_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="37_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct+MyNumbers+%7B%0A++++numbers%3A+Vec%3Ci32%3E%2C%0A%7D%0A%0A%2F%2F+Iterator+for+%60iter%28%29%60%0Astruct+MyNumbersIter%3C%27a%3E+%7B%0A++++inner%3A+std%3A%3Aslice%3A%3AIter%3C%27a%2C+i32%3E%2C%0A%7D%0A%0Aimpl%3C%27a%3E+Iterator+for+MyNumbersIter%3C%27a%3E+%7B%0A++++type+Item+%3D+%26%27a+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0A%2F%2F+Iterator+for+%60iter_mut%28%29%60%0Astruct+MyNumbersIterMut%3C%27a%3E+%7B%0A++++inner%3A+std%3A%3Aslice%3A%3AIterMut%3C%27a%2C+i32%3E%2C%0A%7D%0A%0Aimpl%3C%27a%3E+Iterator+for+MyNumbersIterMut%3C%27a%3E+%7B%0A++++type+Item+%3D+%26%27a+mut+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0A%2F%2F+Iterator+for+%60into_iter%28%29%60%0Astruct+MyNumbersIntoIter+%7B%0A++++inner%3A+std%3A%3Avec%3A%3AIntoIter%3Ci32%3E%2C%0A%7D%0A%0Aimpl+Iterator+for+MyNumbersIntoIter+%7B%0A++++type+Item+%3D+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0Aimpl+MyNumbers+%7B%0A++++fn+iter%28%26self%29+-%3E+MyNumbersIter+%7B%0A++++++++MyNumbersIter+%7B%0A++++++++++++inner%3A+self.numbers.iter%28%29%2C%0A++++++++%7D%0A++++%7D%0A%0A++++fn+iter_mut%28%26mut+self%29+-%3E+MyNumbersIterMut+%7B%0A++++++++MyNumbersIterMut+%7B%0A++++++++++++inner%3A+self.numbers.iter_mut%28%29%2C%0A++++++++%7D%0A++++%7D%0A%7D%0A%0Aimpl+IntoIterator+for+MyNumbers+%7B%0A++++type+Item+%3D+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIntoIter%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++MyNumbersIntoIter+%7B%0A++++++++++++inner%3A+self.numbers.into_iter%28%29%2C%0A++++++++%7D%0A++++%7D%0A%7D%0A%0Aimpl%3C%27a%3E+IntoIterator+for+%26%27a+MyNumbers+%7B%0A++++type+Item+%3D+%26%27a+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIter%3C%27a%3E%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++self.iter%28%29%0A++++%7D%0A%7D%0A%0Aimpl%3C%27a%3E+IntoIterator+for+%26%27a+mut+MyNumbers+%7B%0A++++type+Item+%3D+%26%27a+mut+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIterMut%3C%27a%3E%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++self.iter_mut%28%29%0A++++%7D%0A%7D%0A%0A%0Afn+main%28%29+%7B%0A++++let+my+%3D+MyNumbers+%7B+numbers%3A+vec%21%5B1%2C2%2C3%2C4%2C5%5D+%7D%3B%0A++++%0A++++%2F%2F+%EB%82%B4%EA%B0%80+%EB%A7%8C%EB%93%A0+Itertaor%0A++++for+a+in+my.iter%28%29+%7B%0A++++++++println%21%28%22a+%7Ba%7D%22%29%3B%0A++++%7D%0A++++%0A++++let+data+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%2C+6%5D%3B%0A++++let+filtered_data%3A+Vec%3C_%3E+%3D+data.into_iter%28%29.filter%28%7Cx%7C+x+%25+2+%3D%3D+0%29.collect%28%29%3B%0A++++println%21%28%22Filtered%3A+%7B%3A%23%3F%7D%22%2C+filtered_data%29%3B+%2F%2F+Debug+Format+%EC%B6%9C%EB%A0%A5%0A%0A++++%0A++++let+items+%3D+vec%21%5B%22apple%22%2C+%22banana%22%2C+%22orange%22%5D%3B%0A%0A++++%2F%2F+%EB%AC%B4%ED%95%9C+Iterator%0A++++let+cycle_iter+%3D+items.into_iter%28%29.cycle%28%29%3B%0A%0A++++%2F%2F+Create+an+infinite+iterator+of+incrementing+numbers+starting+from+1%0A++++let+count_iter+%3D+1..%3B%0A%0A++++%2F%2F+Zip+the+two+iterators+to+create+pairs%0A++++let+result_iter+%3D+cycle_iter.zip%28count_iter%29%3B%0A%0A++++%2F%2F+Take+the+first+10+pairs+and+print+them%0A++++for+%28item%2C+count%29+in+result_iter.take%2810%29+%7B%0A++++++++println%21%28%22%7B%7D%3A+%7B%7D%22%2C+count%2C+item%29%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC+%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0%0D%0Ause+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+names%3A+Vec%3CString%3E+%3D+Vec%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84+%EB%B2%A1%ED%84%B0%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++names.push%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%29%3B%0D%0A++++names.push%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5+%EC%83%9D%EC%84%B1%0D%0A++++let+mut+ages%3A+HashMap%3CString%2C+u32%3E+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%AC%B8%EC%9E%90%EC%97%B4%EA%B3%BC+%EC%97%B0%EA%B4%80%EB%90%9C+%EA%B0%92%EC%9D%84+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90+%EC%B6%94%EA%B0%80%0D%0A++++ages.insert%28%22%EC%B2%A0%EC%88%98%22.to_string%28%29%2C+25%29%3B%0D%0A++++ages.insert%28%22%EC%98%81%ED%9D%AC%22.to_string%28%29%2C+24%29%3B%0D%0A++++ages.insert%28%22%EB%AF%BC%EC%88%98%22.to_string%28%29%2C+26%29%3B%0D%0A%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9A%94%EC%86%8C%EB%93%A4%EC%9D%84+%EB%B0%98%EB%B3%B5%ED%95%98%EB%A9%B0%2C+%EA%B0%81+%EC%9D%B4%EB%A6%84%EC%97%90+%EB%8C%80%ED%95%9C+%EB%82%98%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++for+name+in+names.iter%28%29+%7B%0D%0A++++++++%2F%2F+%ED%95%B4%EC%8B%9C%EB%A7%B5%EC%97%90%EC%84%9C+%EC%9D%B4%EB%A6%84%EC%97%90+%ED%95%B4%EB%8B%B9%ED%95%98%EB%8A%94+%EB%82%98%EC%9D%B4%EB%A5%BC+%EA%B0%80%EC%A0%B8%EC%98%B4%0D%0A++++++++let+age+%3D+ages.get%28name%29.unwrap%28%29%3B%0D%0A%0D%0A++++++++%2F%2F+%EA%B2%B0%EA%B3%BC+%EC%B6%9C%EB%A0%A5%0D%0A++++++++println%21%28%22%7B%7D%EB%8B%98%EC%9D%98+%EB%82%98%EC%9D%B4%EB%8A%94+%7B%7D%EC%82%B4%EC%9E%85%EB%8B%88%EB%8B%A4.%22%2C+name%2C+age%29%3B%0D%0A++++%7D%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/37_ko.html b/docs/37_ko.html
index cb16302c0ababff6f07696c82374142d0b81ea18..9bc2b3a335acc596e3bca9357080b8ead7a2ecce 100644
--- a/docs/37_ko.html
+++ b/docs/37_ko.html
@@ -35,49 +35,46 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 3 - Conclusion</h1>
-            <p>다음은 여러분들이 Vec와 HashMap을 사용하여 문제를 해결해 보는 고급 문제입니다.</p>
-<p>아래 주석을 참고하여 코드를 완성해보세요.</p>
-<p>문제 설명:<br />
-이름과 점수가 주어진 학생들의 정보를 Vec와 HashMap을 사용해 관리하고, 평균 점수를 계산하고 출력하는 프로그램을 작성하세요.</p>
+            <h1>이터레이터(Iterators) 소개</h1>
+            <p>이터레이터는 Rust에서 컬렉션의 요소를 순회하고 처리하는 데 중요한 역할을 하는 추상화 개념입니다.</p>
+<p>이터레이터는 컬렉션의 요소를 효율적이고 간결한 방법으로 처리할 수 있게 도와줍니다.</p>
+<h2 id="arust">a. 이터레이터 개념 및 Rust에서의 중요성</h2>
+<p>이터레이터는 데이터 집합을 순차적으로 접근하는 데 사용되는 개체입니다.</p>
+<p>Rust에서 이터레이터는 컬렉션의 요소를 처리하는 데 사용되며, 함수형 프로그래밍 패턴과 함께 사용할 수 있습니다.</p>
+<p>이터레이터는 함수형 프로그래밍을 지원하며, 일반적으로 Rust의 for 루프에서 사용됩니다.</p>
+<p>Rust에서 이터레이터의 중요성은 다음과 같습니다:</p>
 <ol>
-<li>Vec를 사용하여 학생들의 이름 목록을 저장하세요.</li>
-<li>HashMap을 사용하여 학생들의 이름과 점수를 저장하세요.</li>
-<li>학생들의 평균 점수를 계산하고 출력하세요.</li>
+<li>코드의 간결성: 이터레이터를 사용하면 반복문을 사용하는 코드를 보다 간결하게 작성할 수 있습니다.</li>
+<li>느긋한 평가(Lazy evaluation): 이터레이터는 필요한 경우에만 요소를 처리하므로, 메모리 사용량과 실행 시간을 줄일 수 있습니다.</li>
+<li>컴포지션: 이터레이터를 사용하면 여러 이터레이터 메서드를 연결하여 작업을 쉽게 구성할 수 있습니다.</li>
 </ol>
-<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p> <pre><code class="rust">use std::collections::HashMap;
+<h2 id="biteratornextcollect">b. Iterator 트레잇과 메서드 소개 (next, collect 등)</h2>
+<p><code>Iterator</code> 트레잇은 Rust의 이터레이터를 구현하는 데 사용되는 트레잇입니다.</p>
+<p>이 트레잇에는 다음과 같은 메서드가 정의되어 있습니다.</p>
+<h3 id="next">next</h3>
+<p><code>next</code> 메서드는 이터레이터의 다음 요소를 반환합니다.</p>
+<p>모든 요소를 순회한 경우, <code>None</code>을 반환합니다.</p>
+<pre><code class="rust">let mut numbers = vec![1, 2, 3, 4, 5].into_iter();
 
-fn main() {
-    let students = vec![
-        ("김철수", 80),
-        ("이영희", 90),
-        ("박지민", 85),
-        ("최영수", 95),
-    ];
+while let Some(number) = numbers.next() {
+    println!("Number: {}", number);
+}</code></pre>
+<h3 id="collect">collect</h3>
+<p><code>collect</code> 메서드는 이터레이터의 요소를 다른 컬렉션 타입으로 변환합니다.</p>
+<pre><code class="rust">let numbers = vec![1, 2, 3, 4, 5];
+let doubled_numbers: Vec&lt;_> = numbers.iter().map(|x| x * 2).collect();
 
-    let mut names = Vec::new();
-    let mut scores = HashMap::new();
-
-    for (name, score) in students {
-        // 이름 목록 Vec에 학생 이름을 추가합니다.
-        names.push(name);
-
-        // 이름과 점수를 HashMap에 저장합니다.
-        scores.insert(name, score);
-    }
-
-    // 학생들의 평균 점수를 계산하고 출력합니다.
-    let total_score: i32 = scores.values().sum();
-    let average_score: f64 = total_score as f64 / names.len() as f64;
-    println!("학생들의 평균 점수: {:.2}", average_score);
-}</code></pre> </div> </div>
+println!("Doubled numbers: {:?}", doubled_numbers);</code></pre>
+<p>이 외에도 다양한 이터레이터 메서드가 있습니다.</p>
+<p>예를 들어, <code>filter</code>, <code>map</code>, <code>fold</code>, <code>take</code>, <code>skip</code>, <code>all</code>, <code>any</code> 등의 메서드를 사용하여 이터레이터를 처리할 수 있습니다.</p>
+<p>더 많은 메소드는 <a href="https://doc.rust-lang.org/core/iter/trait.Iterator.html" target="_blank" rel="noopener">공식 문서</a>를 참고하세요.</p>
             <div class="bottomnav">
                 <span class="back"><a href="36_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="38_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=use+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+students+%3D+vec%21%5B%0D%0A++++++++%28%22%EA%B9%80%EC%B2%A0%EC%88%98%22%2C+80%29%2C%0D%0A++++++++%28%22%EC%9D%B4%EC%98%81%ED%9D%AC%22%2C+90%29%2C%0D%0A++++++++%28%22%EB%B0%95%EC%A7%80%EB%AF%BC%22%2C+85%29%2C%0D%0A++++++++%28%22%EC%B5%9C%EC%98%81%EC%88%98%22%2C+95%29%2C%0D%0A++++%5D%3B%0D%0A%0D%0A++++let+mut+names+%3D+Vec%3A%3Anew%28%29%3B%0D%0A++++let+mut+scores+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++for+%28name%2C+score%29+in+students+%7B%0D%0A++++++++%2F%2F+TODO+1%3A+%EC%9D%B4%EB%A6%84+%EB%AA%A9%EB%A1%9D+Vec%EC%97%90+%ED%95%99%EC%83%9D+%EC%9D%B4%EB%A6%84%EC%9D%84+%EC%B6%94%EA%B0%80%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%0D%0A++++++++%2F%2F+TODO+2%3A+%EC%9D%B4%EB%A6%84%EA%B3%BC+%EC%A0%90%EC%88%98%EB%A5%BC+HashMap%EC%97%90+%EC%A0%80%EC%9E%A5%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+TODO+3%3A+%ED%95%99%EC%83%9D%EB%93%A4%EC%9D%98+%ED%8F%89%EA%B7%A0+%EC%A0%90%EC%88%98%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EA%B3%A0+%EC%B6%9C%EB%A0%A5%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=struct+MyNumbers+%7B%0A++++numbers%3A+Vec%3Ci32%3E%2C%0A%7D%0A%0A%2F%2F+Iterator+for+%60iter%28%29%60%0Astruct+MyNumbersIter%3C%27a%3E+%7B%0A++++inner%3A+std%3A%3Aslice%3A%3AIter%3C%27a%2C+i32%3E%2C%0A%7D%0A%0Aimpl%3C%27a%3E+Iterator+for+MyNumbersIter%3C%27a%3E+%7B%0A++++type+Item+%3D+%26%27a+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0A%2F%2F+Iterator+for+%60iter_mut%28%29%60%0Astruct+MyNumbersIterMut%3C%27a%3E+%7B%0A++++inner%3A+std%3A%3Aslice%3A%3AIterMut%3C%27a%2C+i32%3E%2C%0A%7D%0A%0Aimpl%3C%27a%3E+Iterator+for+MyNumbersIterMut%3C%27a%3E+%7B%0A++++type+Item+%3D+%26%27a+mut+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0A%2F%2F+Iterator+for+%60into_iter%28%29%60%0Astruct+MyNumbersIntoIter+%7B%0A++++inner%3A+std%3A%3Avec%3A%3AIntoIter%3Ci32%3E%2C%0A%7D%0A%0Aimpl+Iterator+for+MyNumbersIntoIter+%7B%0A++++type+Item+%3D+i32%3B%0A%0A++++fn+next%28%26mut+self%29+-%3E+Option%3CSelf%3A%3AItem%3E+%7B%0A++++++++self.inner.next%28%29%0A++++%7D%0A%7D%0A%0Aimpl+MyNumbers+%7B%0A++++fn+iter%28%26self%29+-%3E+MyNumbersIter+%7B%0A++++++++MyNumbersIter+%7B%0A++++++++++++inner%3A+self.numbers.iter%28%29%2C%0A++++++++%7D%0A++++%7D%0A%0A++++fn+iter_mut%28%26mut+self%29+-%3E+MyNumbersIterMut+%7B%0A++++++++MyNumbersIterMut+%7B%0A++++++++++++inner%3A+self.numbers.iter_mut%28%29%2C%0A++++++++%7D%0A++++%7D%0A%7D%0A%0Aimpl+IntoIterator+for+MyNumbers+%7B%0A++++type+Item+%3D+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIntoIter%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++MyNumbersIntoIter+%7B%0A++++++++++++inner%3A+self.numbers.into_iter%28%29%2C%0A++++++++%7D%0A++++%7D%0A%7D%0A%0Aimpl%3C%27a%3E+IntoIterator+for+%26%27a+MyNumbers+%7B%0A++++type+Item+%3D+%26%27a+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIter%3C%27a%3E%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++self.iter%28%29%0A++++%7D%0A%7D%0A%0Aimpl%3C%27a%3E+IntoIterator+for+%26%27a+mut+MyNumbers+%7B%0A++++type+Item+%3D+%26%27a+mut+i32%3B%0A++++type+IntoIter+%3D+MyNumbersIterMut%3C%27a%3E%3B%0A%0A++++fn+into_iter%28self%29+-%3E+Self%3A%3AIntoIter+%7B%0A++++++++self.iter_mut%28%29%0A++++%7D%0A%7D%0A%0A%0Afn+main%28%29+%7B%0A++++let+my+%3D+MyNumbers+%7B+numbers%3A+vec%21%5B1%2C2%2C3%2C4%2C5%5D+%7D%3B%0A++++%0A++++%2F%2F+%EB%82%B4%EA%B0%80+%EB%A7%8C%EB%93%A0+Itertaor%0A++++for+a+in+my.iter%28%29+%7B%0A++++++++println%21%28%22a+%7Ba%7D%22%29%3B%0A++++%7D%0A++++%0A++++let+data+%3D+vec%21%5B1%2C+2%2C+3%2C+4%2C+5%2C+6%5D%3B%0A++++let+filtered_data%3A+Vec%3C_%3E+%3D+data.into_iter%28%29.filter%28%7Cx%7C+x+%25+2+%3D%3D+0%29.collect%28%29%3B%0A++++println%21%28%22Filtered%3A+%7B%3A%23%3F%7D%22%2C+filtered_data%29%3B+%2F%2F+Debug+Format+%EC%B6%9C%EB%A0%A5%0A%0A++++%0A++++let+items+%3D+vec%21%5B%22apple%22%2C+%22banana%22%2C+%22orange%22%5D%3B%0A%0A++++%2F%2F+%EB%AC%B4%ED%95%9C+Iterator%0A++++let+cycle_iter+%3D+items.into_iter%28%29.cycle%28%29%3B%0A%0A++++%2F%2F+Create+an+infinite+iterator+of+incrementing+numbers+starting+from+1%0A++++let+count_iter+%3D+1..%3B%0A%0A++++%2F%2F+Zip+the+two+iterators+to+create+pairs%0A++++let+result_iter+%3D+cycle_iter.zip%28count_iter%29%3B%0A%0A++++%2F%2F+Take+the+first+10+pairs+and+print+them%0A++++for+%28item%2C+count%29+in+result_iter.take%2810%29+%7B%0A++++++++println%21%28%22%7B%7D%3A+%7B%7D%22%2C+count%2C+item%29%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/38_ko.html b/docs/38_ko.html
new file mode 100644
index 0000000000000000000000000000000000000000..f6394853a54c7179ef3905d5066e86272b5853c7
--- /dev/null
+++ b/docs/38_ko.html
@@ -0,0 +1,101 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 3 - Conclusion</h1>
+            <p>다음은 여러분들이 Vec와 HashMap을 사용하여 문제를 해결해 보는 고급 문제입니다.</p>
+<p>아래 주석을 참고하여 코드를 완성해보세요.</p>
+<p>문제 설명:<br />
+이름과 점수가 주어진 학생들의 정보를 Vec와 HashMap을 사용해 관리하고, 평균 점수를 계산하고 출력하는 프로그램을 작성하세요.</p>
+<ol>
+<li>Vec를 사용하여 학생들의 이름 목록을 저장하세요.</li>
+<li>HashMap을 사용하여 학생들의 이름과 점수를 저장하세요.</li>
+<li>학생들의 평균 점수를 계산하고 출력하세요.</li>
+</ol>
+<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p> <pre><code class="rust">use std::collections::HashMap;
+
+fn main() {
+    let students = vec![
+        ("김철수", 80),
+        ("이영희", 90),
+        ("박지민", 85),
+        ("최영수", 95),
+    ];
+
+    let mut names = Vec::new();
+    let mut scores = HashMap::new();
+
+    for (name, score) in students {
+        // 이름 목록 Vec에 학생 이름을 추가합니다.
+        names.push(name);
+
+        // 이름과 점수를 HashMap에 저장합니다.
+        scores.insert(name, score);
+    }
+
+    // 학생들의 평균 점수를 계산하고 출력합니다.
+    let total_score: i32 = scores.values().sum();
+    let average_score: f64 = total_score as f64 / names.len() as f64;
+    println!("학생들의 평균 점수: {:.2}", average_score);
+}</code></pre> </div> </div>
+            <div class="bottomnav">
+                <span class="back"><a href="37_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_4_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=use+std%3A%3Acollections%3A%3AHashMap%3B%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+students+%3D+vec%21%5B%0D%0A++++++++%28%22%EA%B9%80%EC%B2%A0%EC%88%98%22%2C+80%29%2C%0D%0A++++++++%28%22%EC%9D%B4%EC%98%81%ED%9D%AC%22%2C+90%29%2C%0D%0A++++++++%28%22%EB%B0%95%EC%A7%80%EB%AF%BC%22%2C+85%29%2C%0D%0A++++++++%28%22%EC%B5%9C%EC%98%81%EC%88%98%22%2C+95%29%2C%0D%0A++++%5D%3B%0D%0A%0D%0A++++let+mut+names+%3D+Vec%3A%3Anew%28%29%3B%0D%0A++++let+mut+scores+%3D+HashMap%3A%3Anew%28%29%3B%0D%0A%0D%0A++++for+%28name%2C+score%29+in+students+%7B%0D%0A++++++++%2F%2F+TODO+1%3A+%EC%9D%B4%EB%A6%84+%EB%AA%A9%EB%A1%9D+Vec%EC%97%90+%ED%95%99%EC%83%9D+%EC%9D%B4%EB%A6%84%EC%9D%84+%EC%B6%94%EA%B0%80%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%0D%0A++++++++%2F%2F+TODO+2%3A+%EC%9D%B4%EB%A6%84%EA%B3%BC+%EC%A0%90%EC%88%98%EB%A5%BC+HashMap%EC%97%90+%EC%A0%80%EC%9E%A5%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+TODO+3%3A+%ED%95%99%EC%83%9D%EB%93%A4%EC%9D%98+%ED%8F%89%EA%B7%A0+%EC%A0%90%EC%88%98%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EA%B3%A0+%EC%B6%9C%EB%A0%A5%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
+        </div>
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/39_ko.html b/docs/39_ko.html
deleted file mode 100644
index 9b74448be62c7071e149679e56a732081103178f..0000000000000000000000000000000000000000
--- a/docs/39_ko.html
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE html>
-    <html lang="ko">
-    <head>
-        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
-
-        <meta charset="UTF-8">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
-        <meta name="keywords" content="Rust, Programming, Learning">
-        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
-        <meta name="theme-color" content="#ff6801"/>
-        <meta http-equiv="Cache-Control" content="max-age=3600">
-        
-        <link rel="stylesheet" href="tour.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
-        
-        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
-        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
-        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
-        <link rel="/manifest" href="./site.webmanifest">
-        
-        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
-
-        <script src="./tour.js" defer></script>
-        <!-- <script>hljs.highlightAll();</script> -->
-        <script src="./highlight.badge.min.js"></script>
-    </head>
-    <body>
-        <div class="tour">
-            <div class="header">
-                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
-                <span class="nav">
-                <span class="toc"><a href="TOC_ko.html">목차</a></span>
-            </div>
-            <div class="page">
-            <h1>동시성(Concurrency)</h1>
-            <h2 id="a">a. 동시성의 개념 및 중요성</h2>
-<p>동시성(Concurrency)은 여러 작업이 동시에 실행되는 것처럼 보이게 만드는 프로그래밍 기법입니다.</p>
-<p>동시성을 사용하면 애플리케이션의 성능을 향상시킬 수 있으며, 멀티코어 프로세서와 같은 병렬 컴퓨팅 기술을 최대한 활용할 수 있습니다.</p>
-<p>Rust는 동시성 문제를 안전하게 다루기 위한 독특한 기능을 제공하며,</p>
-<p>이러한 기능 덕분에 데이터 경쟁이나 교착 상태와 같은 동시성 문제가 발생할 가능성을 줄일 수 있습니다.</p>
-<h2 id="bthread">b. 스레드(Thread) 사용하기</h2>
-<p>스레드는 프로세스 내에서 실행되는 독립적인 작업 단위입니다.</p>
-<p>Rust에서 스레드를 생성하고 관리하려면 <code>std::thread</code> 모듈을 사용합니다.</p>
-<pre><code class="rust">use std::thread;
-use std::time::Duration;
-
-fn main() {
-    let handle = thread::spawn(|| {
-        for i in 1..10 {
-            println!("스레드에서: {}", i);
-            thread::sleep(Duration::from_millis(1));
-        }
-    });
-
-    for i in 1..5 {
-        println!("메인 스레드에서: {}", i);
-        thread::sleep(Duration::from_millis(1));
-    }
-
-    handle.join().unwrap();
-}</code></pre>
-<h2 id="cchannels">c. 채널(Channels)을 사용한 통신</h2>
-<p>채널은 스레드 간에 메시지를 전달하는 동기화 primitive입니다.</p>
-<p>Rust에서는 <code>std::sync::mpsc</code>(multiple producer, single consumer) 모듈을 사용하여 채널을 구현할 수 있습니다.</p>
-<pre><code class="rust">use std::sync::mpsc;
-use std::thread;
-
-fn main() {
-    let (tx, rx) = mpsc::channel();
-
-    thread::spawn(move || {
-        let val = String::from("안녕하세요");
-        tx.send(val).unwrap();
-    });
-
-    let received = rx.recv().unwrap();
-    println!("수신: {}", received);
-}</code></pre>
-<h2 id="dmutex">d. 뮤텍스(Mutex) 및 동기화 프리미티브</h2>
-<p>뮤텍스(Mutex)는 한 번에 하나의 스레드만 데이터에 접근할 수 있도록 하는 동기화 프리미티브입니다.</p>
-<p>Rust에서 뮤텍스를 사용하려면 <code>std::sync::Mutex</code>를 사용합니다.</p>
-<pre><code class="rust">use std::sync::{Arc, Mutex};
-use std::thread;
-
-fn main() {
-    let counter = Arc::new(Mutex::new(0::new()));
-    let mut handles = vec![];
-    for _ in 0..10 {
-    let counter = Arc::clone(&counter);
-    let handle = thread::spawn(move || {
-          let mut num = counter.lock().unwrap();
-          *num += 1;
-      });
-      handles.push(handle);
-    }
-
-    for handle in handles {
-        handle.join().unwrap();
-    }
-
-    println!("결과: {}", *counter.lock().unwrap());
-}</code></pre>
-<h2 id="easyncawait">e. 비동기 프로그래밍 및 async/await</h2>
-<p>비동기 프로그래밍은 동시에 실행되어야 하는 작업을 더 효율적으로 관리할 수 있도록 합니다.</p>
-<p>Rust에서는 <code>async</code>와 <code>await</code> 키워드를 사용하여 비동기 코드를 작성할 수 있습니다.</p>
-<pre><code class="rust">use futures::executor::block_on;
-
-async fn hello_world() {
-    println!("안녕, 비동기 세계!");
-}
-
-fn main() {
-    let future = hello_world(); // async 함수는 호출되면 Future를 반환합니다.
-    block_on(future); // 비동기 함수를 실행하기 위해 블로킹 실행기 사용
-}</code></pre>
-<p>비동기 프로그래밍에서 주요한 것은 비동기 함수와 Future, 실행기(executor) 등의 개념입니다.</p>
-<p>비동기 함수는 async fn으로 정의되며, Future를 반환합니다.</p>
-<p>Future는 실행 결과를 나타내는 값으로, 실행기를 사용하여 평가할 수 있습니다.</p>
-<p>이를 통해 동시에 실행되어야 하는 작업을 효율적으로 관리할 수 있습니다.</p>
-<p>Rust에서는 주로 <code>tokio</code>라는 라이브러를 사용하여 async를 좀 더 쉽게 사용하고 더 많은 기능을 제공 받습니다.</p>
-<p>tokio를 공부하고 싶으신 분들은 <a href="https://tokio.rs/" target="_blank" rel="noopener">@여기</a>를 참고하세요.</p>
-            <div class="bottomnav">
-                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="40_ko.html" rel="next">다음 ❯</a></span>
-            </div>
-            </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
-        </div>
-        <script>
-        var pres = document.querySelectorAll("pre>code");
-        for (var i = 0; i < pres.length; i++) {
-            hljs.highlightElement(pres[i]);
-        }
-        var options = {
-            loadDelay: 0,
-            copyIconClass: "far fa-clipboard",
-            checkIconClass: "fa fa-check text-success",
-            blogURL: "http://rust-study.ajousw.kr/"
-        };
-        window.highlightJsBadge(options);
-        </script>
-
-        <footer>
-          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
-        </footer>
-    </body>
-</html>
\ No newline at end of file
diff --git a/docs/40_ko.html b/docs/40_ko.html
index ea18f1cbb2b1bdca72e35c96dec8f5cd4d559e77..c07344937188e25b037b79bac18b9208d1f53b8a 100644
--- a/docs/40_ko.html
+++ b/docs/40_ko.html
@@ -35,107 +35,99 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>매크로(Macros)</h1>
-            <p>Rust의 매크로 시스템은 코드를 생성하고 추상화하는 강력한 방법을 제공합니다.</p>
-<h2 id="a">a. 매크로의 개념 및 사용 사례</h2>
-<p>매크로는 코드를 생성하거나 특정 패턴에 따라 코드를 변형하는 데 사용되는 메타 프로그래밍 기술입니다.</p>
-<p>Rust에서는 매크로를 사용하여 코드 중복을 줄이고, 가독성을 향상시키며, 유연한 추상화를 구현할 수 있습니다.</p>
-<p>매크로는 주로 컴파일 시간에 코드를 생성하거나 수정하는 작업에 사용됩니다. (ex. <code>println!</code>)</p>
-<h2 id="bdeclarativemacros">b. 선언형 매크로(Declarative Macros) 생성하기</h2>
-<p>선언형 매크로는 매크로 규칙을 사용하여 코드를 생성하는 매크로입니다.</p>
-<p><code>macro_rules!</code> 키워드를 사용하여 선언형 매크로를 정의할 수 있습니다.</p>
-<pre><code class="rust">macro_rules! vec {
-    ( $( $x:expr ),* ) => {
-        {
-            let mut temp_vec = Vec::new();
-            $(
-                temp_vec.push($x);
-            )*
-            temp_vec
-        }
-    };
-}
+            <h1>동시성(Concurrency)</h1>
+            <h2 id="a">a. 동시성의 개념 및 중요성</h2>
+<p>동시성(Concurrency)은 여러 작업이 동시에 실행되는 것처럼 보이게 만드는 프로그래밍 기법입니다.</p>
+<p>동시성을 사용하면 애플리케이션의 성능을 향상시킬 수 있으며, 멀티코어 프로세서와 같은 병렬 컴퓨팅 기술을 최대한 활용할 수 있습니다.</p>
+<p>Rust는 동시성 문제를 안전하게 다루기 위한 독특한 기능을 제공하며,</p>
+<p>이러한 기능 덕분에 데이터 경쟁이나 교착 상태와 같은 동시성 문제가 발생할 가능성을 줄일 수 있습니다.</p>
+<h2 id="bthread">b. 스레드(Thread) 사용하기</h2>
+<p>스레드는 프로세스 내에서 실행되는 독립적인 작업 단위입니다.</p>
+<p>Rust에서 스레드를 생성하고 관리하려면 <code>std::thread</code> 모듈을 사용합니다.</p>
+<pre><code class="rust">use std::thread;
+use std::time::Duration;
 
 fn main() {
-    let v = vec![1, 2, 3];
-    println!("v: {:?}", v);
-}</code></pre>
-<h2 id="cproceduralmacros">c. 프로시저 매크로(Procedural Macros) 생성하기</h2>
-<p>프로시저 매크로는 Rust의 컴파일러에 플러그인으로 동작하는 함수입니다.</p>
-<p>프로시저 매크로는 주로 속성(attribute)에 사용되며, 소스 코드를 받아 변형된 소스 코드를 반환합니다.</p>
-<p>프로시저 매크로를 정의하려면 <code>proc_macro</code> 라이브러리를 사용하고, 별도의 크레이트로 구성해야 합니다.</p>
-<pre><code class="rust">// 프로시저 매크로를 정의하는 크레이트입니다.
-use proc_macro::TokenStream;
-use quote::quote;
-use syn::{parse_macro_input, DeriveInput};
-
-#[proc_macro_derive(HelloMacro)]
-pub fn hello_macro_derive(input: TokenStream) -> TokenStream {
-    let ast = parse_macro_input!(input as DeriveInput);
-    let name = &ast.ident;
-    let gen = quote! {
-        impl HelloMacro for #name {
-            fn hello_macro() {
-                println!("안녕하세요, 여기는 {}입니다.", stringify!(#name));
-            }
+    let handle = thread::spawn(|| {
+        for i in 1..10 {
+            println!("스레드에서: {}", i);
+            thread::sleep(Duration::from_millis(1));
         }
-    };
-    gen.into()
+    });
+
+    for i in 1..5 {
+        println!("메인 스레드에서: {}", i);
+        thread::sleep(Duration::from_millis(1));
+    }
+
+    handle.join().unwrap();
 }</code></pre>
-<pre><code class="rust">// 프로시저 매크로를 사용하는 크레이트입니다.
-use hello_macro::HelloMacro;
-use hello_macro_derive::HelloMacro;
+<h2 id="cchannels">c. 채널(Channels)을 사용한 통신</h2>
+<p>채널은 스레드 간에 메시지를 전달하는 동기화 primitive입니다.</p>
+<p>Rust에서는 <code>std::sync::mpsc</code>(multiple producer, single consumer) 모듈을 사용하여 채널을 구현할 수 있습니다.</p>
+<pre><code class="rust">use std::sync::mpsc;
+use std::thread;
+
+fn main() {
+    let (tx, rx) = mpsc::channel();
 
-#[derive(HelloMacro)]
-struct Pancakes;
+    thread::spawn(move || {
+        let val = String::from("안녕하세요");
+        tx.send(val).unwrap();
+    });
+
+    let received = rx.recv().unwrap();
+    println!("수신: {}", received);
+}</code></pre>
+<h2 id="dmutex">d. 뮤텍스(Mutex) 및 동기화 프리미티브</h2>
+<p>뮤텍스(Mutex)는 한 번에 하나의 스레드만 데이터에 접근할 수 있도록 하는 동기화 프리미티브입니다.</p>
+<p>Rust에서 뮤텍스를 사용하려면 <code>std::sync::Mutex</code>를 사용합니다.</p>
+<pre><code class="rust">use std::sync::{Arc, Mutex};
+use std::thread;
 
 fn main() {
-    Pancakes::hello_macro();
+    let counter = Arc::new(Mutex::new(0::new()));
+    let mut handles = vec![];
+    for _ in 0..10 {
+    let counter = Arc::clone(&counter);
+    let handle = thread::spawn(move || {
+          let mut num = counter.lock().unwrap();
+          *num += 1;
+      });
+      handles.push(handle);
+    }
+
+    for handle in handles {
+        handle.join().unwrap();
+    }
+
+    println!("결과: {}", *counter.lock().unwrap());
 }</code></pre>
-<h2 id="d">d. 매크로 규칙 및 패턴 매칭</h2>
-<p>Rust의 매크로는 패턴 매칭을 통해 매개 변수를 추출하고, 규칙에 따라 코드를 생성합니다.</p>
-<p>매크로에서 패턴 매칭을 사용하려면 다음 구문을 사용합니다.</p>
-<ul>
-<li><code>$name:expr</code>: 표현식(Expressions) 매치</li>
-<li><code>$name:ident</code>: 식별자(Identifiers) 매치</li>
-<li><code>$name:ty</code>: 타입(Types) 매치</li>
-<li><code>$name:pat</code>: 패턴(Patterns) 매치</li>
-<li><code>$name:stmt</code>: 문장(Statements) 매치</li>
-<li><code>$name:block</code>: 블록(Blocks) 매치</li>
-<li><code>$name:meta</code>: 메타 데이터(Meta-data) 매치</li>
-<li><code>$name:tt</code>: 토큰 트리(Token Tree) 매치</li>
-<li><code>$name:item</code>: 항목(Items) 매치</li>
-</ul>
-<p>또한, 매크로에서 사용할 수 있는 반복자 구문도 있습니다.</p>
-<ul>
-<li><code>$(...)*</code>: 0회 이상 반복</li>
-<li><code>$(...)+</code>: 1회 이상 반복</li>
-</ul>
-<pre><code class="rust">macro_rules! create_function {
-    ($func_name:ident) => (
-        fn $func_name() {
-            println!("함수 {}가 호출되었습니다.", stringify!($func_name));
-        }
-    );
-}
+<h2 id="easyncawait">e. 비동기 프로그래밍 및 async/await</h2>
+<p>비동기 프로그래밍은 동시에 실행되어야 하는 작업을 더 효율적으로 관리할 수 있도록 합니다.</p>
+<p>Rust에서는 <code>async</code>와 <code>await</code> 키워드를 사용하여 비동기 코드를 작성할 수 있습니다.</p>
+<pre><code class="rust">use futures::executor::block_on;
 
-create_function!(foo);
-create_function!(bar);
+async fn hello_world() {
+    println!("안녕, 비동기 세계!");
+}
 
 fn main() {
-    foo();
-    bar();
+    let future = hello_world(); // async 함수는 호출되면 Future를 반환합니다.
+    block_on(future); // 비동기 함수를 실행하기 위해 블로킹 실행기 사용
 }</code></pre>
-<p>이렇게 매크로를 사용하여 코드 생성 및 추상화를 구현하면, 유연한 프로그래밍을 할 수 있고, 가독성 및 유지보수성을 높일 수 있습니다.</p>
-<p>매크로의 핵심은 패턴 매칭과 규칙을 통해 코드를 재사용하고, 확장성을 높이는 것입니다.</p>
+<p>비동기 프로그래밍에서 주요한 것은 비동기 함수와 Future, 실행기(executor) 등의 개념입니다.</p>
+<p>비동기 함수는 async fn으로 정의되며, Future를 반환합니다.</p>
+<p>Future는 실행 결과를 나타내는 값으로, 실행기를 사용하여 평가할 수 있습니다.</p>
+<p>이를 통해 동시에 실행되어야 하는 작업을 효율적으로 관리할 수 있습니다.</p>
+<p>Rust에서는 주로 <code>tokio</code>라는 라이브러를 사용하여 async를 좀 더 쉽게 사용하고 더 많은 기능을 제공 받습니다.</p>
+<p>tokio를 공부하고 싶으신 분들은 <a href="https://tokio.rs/" target="_blank" rel="noopener">@여기</a>를 참고하세요.</p>
             <div class="bottomnav">
-                <span class="back"><a href="39_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="back"><a href="chapter_4_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="41_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=macro_rules%21+times+%7B%0D%0A++++%28%24num%3Aexpr%2C+%24body%3Ablock%29+%3D%3E+%7B%0D%0A++++++++times%21%28None%2C+%24num%2C+%24body%29%3B%0D%0A++++%7D%3B%0D%0A++++%28%24label%3Aexpr%2C+%24num%3Aexpr%2C+%24body%3Ablock%29+%3D%3E+%7B%0D%0A++++++++if+let+Some%28label%29+%3D+%24label+%7B%0D%0A++++++++++++println%21%28%22Task%3A+%7B%7D%22%2C+label%29%3B%0D%0A++++++++%7D%0D%0A%0D%0A++++++++let+mut+total_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Anew%280%2C+0%29%3B%0D%0A++++++++let+mut+min_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Afrom_secs%28u64%3A%3AMAX%29%3B%0D%0A++++++++let+mut+max_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Afrom_secs%280%29%3B%0D%0A%0D%0A++++++++for+_+in+0..%24num+%7B%0D%0A++++++++++++let+start_time+%3D+std%3A%3Atime%3A%3AInstant%3A%3Anow%28%29%3B%0D%0A++++++++++++%24body%0D%0A++++++++++++let+elapsed+%3D+start_time.elapsed%28%29%3B%0D%0A++++++++++++total_time+%2B%3D+elapsed%3B%0D%0A++++++++++++min_time+%3D+min_time.min%28elapsed%29%3B%0D%0A++++++++++++max_time+%3D+max_time.max%28elapsed%29%3B%0D%0A++++++++++++println%21%28%0D%0A++++++++++++++++%22Execution+time+for+iteration%3A+%7B%7D+ms%22%2C%0D%0A++++++++++++++++elapsed.as_millis%28%29%0D%0A++++++++++++%29%3B%0D%0A++++++++%7D%0D%0A%0D%0A++++++++let+avg_time+%3D+total_time+%2F+%24num%3B%0D%0A++++++++println%21%28%22Average+execution+time%3A+%7B%7D+ms%22%2C+avg_time.as_millis%28%29%29%3B%0D%0A++++++++println%21%28%22Minimum+execution+time%3A+%7B%7D+ms%22%2C+min_time.as_millis%28%29%29%3B%0D%0A++++++++println%21%28%22Maximum+execution+time%3A+%7B%7D+ms%22%2C+max_time.as_millis%28%29%29%3B%0D%0A++++%7D%3B%0D%0A%7D%0D%0A%0D%0Afn+is_prime%28n%3A+u64%29+-%3E+bool+%7B%0D%0A++++if+n+%3C%3D+1+%7B%0D%0A++++++++return+false%3B%0D%0A++++%7D%0D%0A++++for+i+in+2..%3D%28%28n+as+f64%29.sqrt%28%29+as+u64%29+%7B%0D%0A++++++++if+n+%25+i+%3D%3D+0+%7B%0D%0A++++++++++++return+false%3B%0D%0A++++++++%7D%0D%0A++++%7D%0D%0A++++true%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++times%21%28Some%28%22Prime+number+summation%22%29%2C+3%2C+%7B%0D%0A++++++++let+mut+sum+%3D+0u64%3B%0D%0A++++++++let+mut+num+%3D+2u64%3B%0D%0A++++++++let+mut+counter+%3D+0%3B%0D%0A%0D%0A++++++++while+counter+%3C+10_000+%7B%0D%0A++++++++++++if+is_prime%28num%29+%7B%0D%0A++++++++++++++++sum+%2B%3D+num%3B%0D%0A++++++++++++++++counter+%2B%3D+1%3B%0D%0A++++++++++++%7D%0D%0A++++++++++++num+%2B%3D+1%3B%0D%0A++++++++%7D%0D%0A++++++++println%21%28%22Sum+of+first+10%2C000+prime+numbers%3A+%7B%7D%22%2C+sum%29%3B%0D%0A++++%7D%29%3B%0D%0A%7D" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
-            </div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/41_ko.html b/docs/41_ko.html
index 3387a9974b836b79725a9ddee4aeae6653d3e8e9..89533905613007fa440993311741b3ec41f03a75 100644
--- a/docs/41_ko.html
+++ b/docs/41_ko.html
@@ -35,64 +35,106 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>unsafe 코드</h1>
-            <p>Rust는 기본적으로 안전한 프로그래밍을 위한 다양한 기능을 제공합니다.</p>
-<p>하지만, 때로는 안전성을 포기하고, 저수준의 시스템 작업을 수행해야 하는 경우가 있습니다.</p>
-<p>이 때 <code>unsafe</code> 키워드를 사용합니다.</p>
-<h2 id="aunsafe">a. unsafe의 개념 및 필요성</h2>
-<p><code>unsafe</code>는 Rust 컴파일러가 안전성을 보장할 수 없는 코드를 표시하는 키워드입니다.</p>
-<p>이를 사용하면 Rust의 안전성 검사를 우회하고, 저수준의 시스템 작업을 수행할 수 있습니다.</p>
-<p>주로 외부 함수, 원시 포인터, 정적 변수에 접근하는 등의 작업에 사용됩니다.</p>
-<h2 id="bunsafe">b. unsafe 함수 및 메서드</h2>
-<p><code>unsafe</code> 키워드를 사용하여 함수와 메서드를 정의할 수 있습니다.</p>
-<p>이를 사용하면 안전하지 않은 작업을 수행할 수 있습니다.</p>
-<p>호출하는 쪽에서도 <code>unsafe</code> 블록 내에서 호출해야 합니다.</p>
-<pre><code class="rust">unsafe fn dangerous_function() {
-    // 안전하지 않은 작업 수행
+            <h1>매크로(Macros)</h1>
+            <p>Rust의 매크로 시스템은 코드를 생성하고 추상화하는 강력한 방법을 제공합니다.</p>
+<h2 id="a">a. 매크로의 개념 및 사용 사례</h2>
+<p>매크로는 코드를 생성하거나 특정 패턴에 따라 코드를 변형하는 데 사용되는 메타 프로그래밍 기술입니다.</p>
+<p>Rust에서는 매크로를 사용하여 코드 중복을 줄이고, 가독성을 향상시키며, 유연한 추상화를 구현할 수 있습니다.</p>
+<p>매크로는 주로 컴파일 시간에 코드를 생성하거나 수정하는 작업에 사용됩니다. (ex. <code>println!</code>)</p>
+<h2 id="bdeclarativemacros">b. 선언형 매크로(Declarative Macros) 생성하기</h2>
+<p>선언형 매크로는 매크로 규칙을 사용하여 코드를 생성하는 매크로입니다.</p>
+<p><code>macro_rules!</code> 키워드를 사용하여 선언형 매크로를 정의할 수 있습니다.</p>
+<pre><code class="rust">macro_rules! vec {
+    ( $( $x:expr ),* ) => {
+        {
+            let mut temp_vec = Vec::new();
+            $(
+                temp_vec.push($x);
+            )*
+            temp_vec
+        }
+    };
 }
 
 fn main() {
-    unsafe {
-        dangerous_function();
-    }
+    let v = vec![1, 2, 3];
+    println!("v: {:?}", v);
+}</code></pre>
+<h2 id="cproceduralmacros">c. 프로시저 매크로(Procedural Macros) 생성하기</h2>
+<p>프로시저 매크로는 Rust의 컴파일러에 플러그인으로 동작하는 함수입니다.</p>
+<p>프로시저 매크로는 주로 속성(attribute)에 사용되며, 소스 코드를 받아 변형된 소스 코드를 반환합니다.</p>
+<p>프로시저 매크로를 정의하려면 <code>proc_macro</code> 라이브러리를 사용하고, 별도의 크레이트로 구성해야 합니다.</p>
+<pre><code class="rust">// 프로시저 매크로를 정의하는 크레이트입니다.
+use proc_macro::TokenStream;
+use quote::quote;
+use syn::{parse_macro_input, DeriveInput};
+
+#[proc_macro_derive(HelloMacro)]
+pub fn hello_macro_derive(input: TokenStream) -> TokenStream {
+    let ast = parse_macro_input!(input as DeriveInput);
+    let name = &ast.ident;
+    let gen = quote! {
+        impl HelloMacro for #name {
+            fn hello_macro() {
+                println!("안녕하세요, 여기는 {}입니다.", stringify!(#name));
+            }
+        }
+    };
+    gen.into()
 }</code></pre>
-<h2 id="crawpointers">c. 원시 포인터(Raw Pointers) 사용하기</h2>
-<p>원시 포인터는 메모리 주소를 직접 가리키는 포인터로, Rust의 안전성을 보장하지 않습니다.</p>
-<p><code>*const T</code>와 <code>*mut T</code> 형식으로 사용할 수 있습니다.</p>
-<p>원시 포인터는 <code>unsafe</code> 블록 내에서 사용해야 합니다.</p>
-<pre><code class="rust">fn main() {
-    let mut num = 5;
-    let r1 = &num as *const i32;
-    let r2 = &mut num as *mut i32;
+<pre><code class="rust">// 프로시저 매크로를 사용하는 크레이트입니다.
+use hello_macro::HelloMacro;
+use hello_macro_derive::HelloMacro;
 
-    unsafe {
-        println!("r1 가리키는 값: {}", *r1);
-        println!("r2 가리키는 값: {}", *r2);
-    }
+#[derive(HelloMacro)]
+struct Pancakes;
+
+fn main() {
+    Pancakes::hello_macro();
 }</code></pre>
-<h2 id="dffiforeignfunctioninterface">d. 외부 함수 및 FFI(Foreign Function Interface) 사용하기</h2>
-<p>외부 함수는 다른 프로그래밍 언어로 작성된 함수를 Rust에서 호출할 수 있도록 해주는 인터페이스입니다.</p>
-<p>외부 함수를 사용하려면 <code>extern</code> 키워드와 <code>unsafe</code>를 사용해야 합니다.</p>
-<pre><code class="rust">// C 언어의 함수를 호출하는 예시
-extern "C" {
-    fn abs(input: i32) -> i32;
+<h2 id="d">d. 매크로 규칙 및 패턴 매칭</h2>
+<p>Rust의 매크로는 패턴 매칭을 통해 매개 변수를 추출하고, 규칙에 따라 코드를 생성합니다.</p>
+<p>매크로에서 패턴 매칭을 사용하려면 다음 구문을 사용합니다.</p>
+<ul>
+<li><code>$name:expr</code>: 표현식(Expressions) 매치</li>
+<li><code>$name:ident</code>: 식별자(Identifiers) 매치</li>
+<li><code>$name:ty</code>: 타입(Types) 매치</li>
+<li><code>$name:pat</code>: 패턴(Patterns) 매치</li>
+<li><code>$name:stmt</code>: 문장(Statements) 매치</li>
+<li><code>$name:block</code>: 블록(Blocks) 매치</li>
+<li><code>$name:meta</code>: 메타 데이터(Meta-data) 매치</li>
+<li><code>$name:tt</code>: 토큰 트리(Token Tree) 매치</li>
+<li><code>$name:item</code>: 항목(Items) 매치</li>
+</ul>
+<p>또한, 매크로에서 사용할 수 있는 반복자 구문도 있습니다.</p>
+<ul>
+<li><code>$(...)*</code>: 0회 이상 반복</li>
+<li><code>$(...)+</code>: 1회 이상 반복</li>
+</ul>
+<pre><code class="rust">macro_rules! create_function {
+    ($func_name:ident) => (
+        fn $func_name() {
+            println!("함수 {}가 호출되었습니다.", stringify!($func_name));
+        }
+    );
 }
 
+create_function!(foo);
+create_function!(bar);
+
 fn main() {
-    let x = -3;
-    let result = unsafe { abs(x) };
-    println!("{}의 절댓값은 {}입니다.", x, result);
+    foo();
+    bar();
 }</code></pre>
-<p>이렇게 <code>unsafe</code>를 사용하여 Rust의 안전성 검사를 우회할 수 있습니다.</p>
-<p>하지만 가능한 한 <code>unsafe</code>를 사용하지 않고, 안전한 코드를 작성하는 것이 좋습니다.</p>
-<p>정말 필요한 경우에만 사용하고, 주의해서 사용해야 합니다.</p>
+<p>이렇게 매크로를 사용하여 코드 생성 및 추상화를 구현하면, 유연한 프로그래밍을 할 수 있고, 가독성 및 유지보수성을 높일 수 있습니다.</p>
+<p>매크로의 핵심은 패턴 매칭과 규칙을 통해 코드를 재사용하고, 확장성을 높이는 것입니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="40_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="42_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++let+mut+vec1+%3D+vec%21%5B1%2C+2%2C+3%5D%3B%0A++++let+mut+vec2+%3D+vec%21%5B4%2C+5%2C+6%5D%3B%0A%0A++++println%21%28%22%EA%B5%90%ED%99%98+%EC%A0%84%3A+vec1+%3D+%7B%3A%3F%7D%2C+vec2+%3D+%7B%3A%3F%7D%22%2C+vec1%2C+vec2%29%3B%0A%0A++++unsafe+%7B%0A++++++++unsafe_swap%28%26mut+vec1%2C+%26mut+vec2%29%3B%0A++++%7D%0A%0A++++println%21%28%22%EA%B5%90%ED%99%98+%ED%9B%84%3A+vec1+%3D+%7B%3A%3F%7D%2C+vec2+%3D+%7B%3A%3F%7D%22%2C+vec1%2C+vec2%29%3B%0A%7D%0A%0A%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%A7%81%EC%A0%91+%EA%B5%90%ED%99%98%ED%95%98%EA%B8%B0+%EC%9C%84%ED%95%B4+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EC%99%80+unsafe%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Aunsafe+fn+unsafe_swap%28vec1%3A+%26mut+%5Bi32%5D%2C+vec2%3A+%26mut+%5Bi32%5D%29+%7B%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EA%B0%99%EC%9D%80%EC%A7%80+%ED%99%95%EC%9D%B8%0A++++assert_eq%21%28vec1.len%28%29%2C+vec2.len%28%29%29%3B%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0+%EC%9C%84%ED%95%B4+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+ptr1+%3D+vec1.as_mut_ptr%28%29%3B%0A++++let+ptr2+%3D+vec2.as_mut_ptr%28%29%3B%0A%0A++++%2F%2F+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9B%90%EC%86%8C%EB%A5%BC+%EA%B5%90%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++for+i+in+0..vec1.len%28%29+%7B%0A++++++++%2F%2F+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%EC%97%B0%EC%82%B0%EC%9D%80+unsafe+%EB%B8%94%EB%A1%9D+%EB%82%B4%EC%97%90%EC%84%9C+%EC%88%98%ED%96%89%ED%95%B4%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++++++let+temp+%3D+*ptr1.add%28i%29%3B%0A++++++++*ptr1.add%28i%29+%3D+*ptr2.add%28i%29%3B%0A++++++++*ptr2.add%28i%29+%3D+temp%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=macro_rules%21+times+%7B%0D%0A++++%28%24num%3Aexpr%2C+%24body%3Ablock%29+%3D%3E+%7B%0D%0A++++++++times%21%28None%2C+%24num%2C+%24body%29%3B%0D%0A++++%7D%3B%0D%0A++++%28%24label%3Aexpr%2C+%24num%3Aexpr%2C+%24body%3Ablock%29+%3D%3E+%7B%0D%0A++++++++if+let+Some%28label%29+%3D+%24label+%7B%0D%0A++++++++++++println%21%28%22Task%3A+%7B%7D%22%2C+label%29%3B%0D%0A++++++++%7D%0D%0A%0D%0A++++++++let+mut+total_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Anew%280%2C+0%29%3B%0D%0A++++++++let+mut+min_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Afrom_secs%28u64%3A%3AMAX%29%3B%0D%0A++++++++let+mut+max_time+%3D+std%3A%3Atime%3A%3ADuration%3A%3Afrom_secs%280%29%3B%0D%0A%0D%0A++++++++for+_+in+0..%24num+%7B%0D%0A++++++++++++let+start_time+%3D+std%3A%3Atime%3A%3AInstant%3A%3Anow%28%29%3B%0D%0A++++++++++++%24body%0D%0A++++++++++++let+elapsed+%3D+start_time.elapsed%28%29%3B%0D%0A++++++++++++total_time+%2B%3D+elapsed%3B%0D%0A++++++++++++min_time+%3D+min_time.min%28elapsed%29%3B%0D%0A++++++++++++max_time+%3D+max_time.max%28elapsed%29%3B%0D%0A++++++++++++println%21%28%0D%0A++++++++++++++++%22Execution+time+for+iteration%3A+%7B%7D+ms%22%2C%0D%0A++++++++++++++++elapsed.as_millis%28%29%0D%0A++++++++++++%29%3B%0D%0A++++++++%7D%0D%0A%0D%0A++++++++let+avg_time+%3D+total_time+%2F+%24num%3B%0D%0A++++++++println%21%28%22Average+execution+time%3A+%7B%7D+ms%22%2C+avg_time.as_millis%28%29%29%3B%0D%0A++++++++println%21%28%22Minimum+execution+time%3A+%7B%7D+ms%22%2C+min_time.as_millis%28%29%29%3B%0D%0A++++++++println%21%28%22Maximum+execution+time%3A+%7B%7D+ms%22%2C+max_time.as_millis%28%29%29%3B%0D%0A++++%7D%3B%0D%0A%7D%0D%0A%0D%0Afn+is_prime%28n%3A+u64%29+-%3E+bool+%7B%0D%0A++++if+n+%3C%3D+1+%7B%0D%0A++++++++return+false%3B%0D%0A++++%7D%0D%0A++++for+i+in+2..%3D%28%28n+as+f64%29.sqrt%28%29+as+u64%29+%7B%0D%0A++++++++if+n+%25+i+%3D%3D+0+%7B%0D%0A++++++++++++return+false%3B%0D%0A++++++++%7D%0D%0A++++%7D%0D%0A++++true%0D%0A%7D%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++times%21%28Some%28%22Prime+number+summation%22%29%2C+3%2C+%7B%0D%0A++++++++let+mut+sum+%3D+0u64%3B%0D%0A++++++++let+mut+num+%3D+2u64%3B%0D%0A++++++++let+mut+counter+%3D+0%3B%0D%0A%0D%0A++++++++while+counter+%3C+10_000+%7B%0D%0A++++++++++++if+is_prime%28num%29+%7B%0D%0A++++++++++++++++sum+%2B%3D+num%3B%0D%0A++++++++++++++++counter+%2B%3D+1%3B%0D%0A++++++++++++%7D%0D%0A++++++++++++num+%2B%3D+1%3B%0D%0A++++++++%7D%0D%0A++++++++println%21%28%22Sum+of+first+10%2C000+prime+numbers%3A+%7B%7D%22%2C+sum%29%3B%0D%0A++++%7D%29%3B%0D%0A%7D" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/42_ko.html b/docs/42_ko.html
index 7504a17319614348df291a3412a34109785aadc7..84562b2d3ed44b97ba012b76a1d6bbc62e269b5f 100644
--- a/docs/42_ko.html
+++ b/docs/42_ko.html
@@ -35,55 +35,64 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 4 - Conclusion</h1>
-            <p>다음은 여러분들이 unsafe와 macro를 사용하여 문제를 해결해 보는 고급 문제입니다.</p>
-<p>아래 주석을 참고하여 코드를 완성해보세요.</p>
-<p>문제 설명:<br />
-두 개의 Vec<i32> 벡터를 더하는 프로그램을 작성하세요.</p>
-<p>이때, 매크로를 사용하여 덧셈 작업을 수행하고, 벡터의 내부 데이터에 직접 접근하기 위해 unsafe를 사용하세요.</p>
-<ol>
-<li>매크로를 사용하여 두 벡터의 덧셈을 수행하는 함수를 작성하세요.</li>
-<li>unsafe를 사용하여 벡터의 내부 데이터에 접근하고 값을 더하세요.</li>
-</ol>
-<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p> <pre><code class="rust">// 매크로를 사용하여 두 벡터의 덧셈을 수행하는 함수를 작성합니다.
-macro_rules! add_vectors {
-    ($vec1:expr, $vec2:expr) => {
-        add_vectors_unsafe(&$vec1, &$vec2)
-    };
+            <h1>unsafe 코드</h1>
+            <p>Rust는 기본적으로 안전한 프로그래밍을 위한 다양한 기능을 제공합니다.</p>
+<p>하지만, 때로는 안전성을 포기하고, 저수준의 시스템 작업을 수행해야 하는 경우가 있습니다.</p>
+<p>이 때 <code>unsafe</code> 키워드를 사용합니다.</p>
+<h2 id="aunsafe">a. unsafe의 개념 및 필요성</h2>
+<p><code>unsafe</code>는 Rust 컴파일러가 안전성을 보장할 수 없는 코드를 표시하는 키워드입니다.</p>
+<p>이를 사용하면 Rust의 안전성 검사를 우회하고, 저수준의 시스템 작업을 수행할 수 있습니다.</p>
+<p>주로 외부 함수, 원시 포인터, 정적 변수에 접근하는 등의 작업에 사용됩니다.</p>
+<h2 id="bunsafe">b. unsafe 함수 및 메서드</h2>
+<p><code>unsafe</code> 키워드를 사용하여 함수와 메서드를 정의할 수 있습니다.</p>
+<p>이를 사용하면 안전하지 않은 작업을 수행할 수 있습니다.</p>
+<p>호출하는 쪽에서도 <code>unsafe</code> 블록 내에서 호출해야 합니다.</p>
+<pre><code class="rust">unsafe fn dangerous_function() {
+    // 안전하지 않은 작업 수행
 }
 
 fn main() {
-    let vec1 = vec![1, 2, 3];
-    let vec2 = vec![4, 5, 6];
-    let result = add_vectors!(vec1, vec2);
-
-    println!("벡터 덧셈 결과: {:?}", result);
-}
-
-fn add_vectors_unsafe(vec1: &[i32], vec2: &[i32]) -> Vec&lt;i32> {
-    // 벡터의 길이가 같은지 확인합니다.
-    assert_eq!(vec1.len(), vec2.len());
-
-    let mut result = Vec::with_capacity(vec1.len());
+    unsafe {
+        dangerous_function();
+    }
+}</code></pre>
+<h2 id="crawpointers">c. 원시 포인터(Raw Pointers) 사용하기</h2>
+<p>원시 포인터는 메모리 주소를 직접 가리키는 포인터로, Rust의 안전성을 보장하지 않습니다.</p>
+<p><code>*const T</code>와 <code>*mut T</code> 형식으로 사용할 수 있습니다.</p>
+<p>원시 포인터는 <code>unsafe</code> 블록 내에서 사용해야 합니다.</p>
+<pre><code class="rust">fn main() {
+    let mut num = 5;
+    let r1 = &num as *const i32;
+    let r2 = &mut num as *mut i32;
 
-    // unsafe를 사용하여 벡터의 내부 데이터에 접근하고 값을 더합니다.
-    let ptr1 = vec1.as_ptr();
-    let ptr2 = vec2.as_ptr();
-    for i in 0..vec1.len() {
-        unsafe {
-            result.push(*ptr1.add(i) + *ptr2.add(i));
-        }
+    unsafe {
+        println!("r1 가리키는 값: {}", *r1);
+        println!("r2 가리키는 값: {}", *r2);
     }
+}</code></pre>
+<h2 id="dffiforeignfunctioninterface">d. 외부 함수 및 FFI(Foreign Function Interface) 사용하기</h2>
+<p>외부 함수는 다른 프로그래밍 언어로 작성된 함수를 Rust에서 호출할 수 있도록 해주는 인터페이스입니다.</p>
+<p>외부 함수를 사용하려면 <code>extern</code> 키워드와 <code>unsafe</code>를 사용해야 합니다.</p>
+<pre><code class="rust">// C 언어의 함수를 호출하는 예시
+extern "C" {
+    fn abs(input: i32) -> i32;
+}
 
-    result
-}</code></pre> </div> </div>
+fn main() {
+    let x = -3;
+    let result = unsafe { abs(x) };
+    println!("{}의 절댓값은 {}입니다.", x, result);
+}</code></pre>
+<p>이렇게 <code>unsafe</code>를 사용하여 Rust의 안전성 검사를 우회할 수 있습니다.</p>
+<p>하지만 가능한 한 <code>unsafe</code>를 사용하지 않고, 안전한 코드를 작성하는 것이 좋습니다.</p>
+<p>정말 필요한 경우에만 사용하고, 주의해서 사용해야 합니다.</p>
             <div class="bottomnav">
                 <span class="back"><a href="41_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="43_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
-            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+TODO+1%3A+%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%91%90+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%8D%A7%EC%85%88%EC%9D%84+%EC%88%98%ED%96%89%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EB%A5%BC+%EC%9E%91%EC%84%B1%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0Amacro_rules%21+...%0D%0A%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+vec1+%3D+vec%21%5B1%2C+2%2C+3%5D%3B%0D%0A++++let+vec2+%3D+vec%21%5B4%2C+5%2C+6%5D%3B%0D%0A++++let+result+%3D+add_vectors%21%28vec1%2C+vec2%29%3B%0D%0A%0D%0A++++println%21%28%22%EB%B2%A1%ED%84%B0+%EB%8D%A7%EC%85%88+%EA%B2%B0%EA%B3%BC%3A+%7B%3A%3F%7D%22%2C+result%29%3B%0D%0A%7D%0D%0A%0D%0A%0D%0Afn+add_vectors_unsafe%28vec1%3A+%26%5Bi32%5D%2C+vec2%3A+%26%5Bi32%5D%29+-%3E+Vec%3Ci32%3E+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EA%B0%99%EC%9D%80%EC%A7%80+%ED%99%95%EC%9D%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++assert_eq%21%28vec1.len%28%29%2C+vec2.len%28%29%29%3B%0D%0A%0D%0A++++let+mut+result+%3D+Vec%3A%3Awith_capacity%28vec1.len%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+TODO+2%3A+unsafe%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B3%A0+%EA%B0%92%EC%9D%84+%EB%8D%94%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%0D%0A++++result%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0A++++let+mut+vec1+%3D+vec%21%5B1%2C+2%2C+3%5D%3B%0A++++let+mut+vec2+%3D+vec%21%5B4%2C+5%2C+6%5D%3B%0A%0A++++println%21%28%22%EA%B5%90%ED%99%98+%EC%A0%84%3A+vec1+%3D+%7B%3A%3F%7D%2C+vec2+%3D+%7B%3A%3F%7D%22%2C+vec1%2C+vec2%29%3B%0A%0A++++unsafe+%7B%0A++++++++unsafe_swap%28%26mut+vec1%2C+%26mut+vec2%29%3B%0A++++%7D%0A%0A++++println%21%28%22%EA%B5%90%ED%99%98+%ED%9B%84%3A+vec1+%3D+%7B%3A%3F%7D%2C+vec2+%3D+%7B%3A%3F%7D%22%2C+vec1%2C+vec2%29%3B%0A%7D%0A%0A%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC+%EC%A7%81%EC%A0%91+%EA%B5%90%ED%99%98%ED%95%98%EA%B8%B0+%EC%9C%84%ED%95%B4+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EC%99%80+unsafe%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Aunsafe+fn+unsafe_swap%28vec1%3A+%26mut+%5Bi32%5D%2C+vec2%3A+%26mut+%5Bi32%5D%29+%7B%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EA%B0%99%EC%9D%80%EC%A7%80+%ED%99%95%EC%9D%B8%0A++++assert_eq%21%28vec1.len%28%29%2C+vec2.len%28%29%29%3B%0A%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B8%B0+%EC%9C%84%ED%95%B4+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+ptr1+%3D+vec1.as_mut_ptr%28%29%3B%0A++++let+ptr2+%3D+vec2.as_mut_ptr%28%29%3B%0A%0A++++%2F%2F+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B2%A1%ED%84%B0%EC%9D%98+%EC%9B%90%EC%86%8C%EB%A5%BC+%EA%B5%90%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++for+i+in+0..vec1.len%28%29+%7B%0A++++++++%2F%2F+%EC%9B%90%EC%8B%9C+%ED%8F%AC%EC%9D%B8%ED%84%B0%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94+%EC%97%B0%EC%82%B0%EC%9D%80+unsafe+%EB%B8%94%EB%A1%9D+%EB%82%B4%EC%97%90%EC%84%9C+%EC%88%98%ED%96%89%ED%95%B4%EC%95%BC+%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++++++let+temp+%3D+*ptr1.add%28i%29%3B%0A++++++++*ptr1.add%28i%29+%3D+*ptr2.add%28i%29%3B%0A++++++++*ptr2.add%28i%29+%3D+temp%3B%0A++++%7D%0A%7D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>
         </div>
         <script>
diff --git a/docs/43_ko.html b/docs/43_ko.html
new file mode 100644
index 0000000000000000000000000000000000000000..a29cdc2174b9cd876161ac2e8bd5ef45b9524d84
--- /dev/null
+++ b/docs/43_ko.html
@@ -0,0 +1,107 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 4 - Conclusion</h1>
+            <p>다음은 여러분들이 unsafe와 macro를 사용하여 문제를 해결해 보는 고급 문제입니다.</p>
+<p>아래 주석을 참고하여 코드를 완성해보세요.</p>
+<p>문제 설명:<br />
+두 개의 Vec<i32> 벡터를 더하는 프로그램을 작성하세요.</p>
+<p>이때, 매크로를 사용하여 덧셈 작업을 수행하고, 벡터의 내부 데이터에 직접 접근하기 위해 unsafe를 사용하세요.</p>
+<ol>
+<li>매크로를 사용하여 두 벡터의 덧셈을 수행하는 함수를 작성하세요.</li>
+<li>unsafe를 사용하여 벡터의 내부 데이터에 접근하고 값을 더하세요.</li>
+</ol>
+<div> <button type="button" class="collapsible">정답 보기</button> <div class="content"> <p> <pre><code class="rust">// 매크로를 사용하여 두 벡터의 덧셈을 수행하는 함수를 작성합니다.
+macro_rules! add_vectors {
+    ($vec1:expr, $vec2:expr) => {
+        add_vectors_unsafe(&$vec1, &$vec2)
+    };
+}
+
+fn main() {
+    let vec1 = vec![1, 2, 3];
+    let vec2 = vec![4, 5, 6];
+    let result = add_vectors!(vec1, vec2);
+
+    println!("벡터 덧셈 결과: {:?}", result);
+}
+
+fn add_vectors_unsafe(vec1: &[i32], vec2: &[i32]) -> Vec&lt;i32> {
+    // 벡터의 길이가 같은지 확인합니다.
+    assert_eq!(vec1.len(), vec2.len());
+
+    let mut result = Vec::with_capacity(vec1.len());
+
+    // unsafe를 사용하여 벡터의 내부 데이터에 접근하고 값을 더합니다.
+    let ptr1 = vec1.as_ptr();
+    let ptr2 = vec2.as_ptr();
+    for i in 0..vec1.len() {
+        unsafe {
+            result.push(*ptr1.add(i) + *ptr2.add(i));
+        }
+    }
+
+    result
+}</code></pre> </div> </div>
+            <div class="bottomnav">
+                <span class="back"><a href="42_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_5_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code">
+            <iframe id="rust-playground" width="100%" src="https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F%2F+TODO+1%3A+%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%91%90+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%8D%A7%EC%85%88%EC%9D%84+%EC%88%98%ED%96%89%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EB%A5%BC+%EC%9E%91%EC%84%B1%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0Amacro_rules%21+...%0D%0A%0D%0A%0D%0Afn+main%28%29+%7B%0D%0A++++let+vec1+%3D+vec%21%5B1%2C+2%2C+3%5D%3B%0D%0A++++let+vec2+%3D+vec%21%5B4%2C+5%2C+6%5D%3B%0D%0A++++let+result+%3D+add_vectors%21%28vec1%2C+vec2%29%3B%0D%0A%0D%0A++++println%21%28%22%EB%B2%A1%ED%84%B0+%EB%8D%A7%EC%85%88+%EA%B2%B0%EA%B3%BC%3A+%7B%3A%3F%7D%22%2C+result%29%3B%0D%0A%7D%0D%0A%0D%0A%0D%0Afn+add_vectors_unsafe%28vec1%3A+%26%5Bi32%5D%2C+vec2%3A+%26%5Bi32%5D%29+-%3E+Vec%3Ci32%3E+%7B%0D%0A++++%2F%2F+%EB%B2%A1%ED%84%B0%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EA%B0%99%EC%9D%80%EC%A7%80+%ED%99%95%EC%9D%B8%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++assert_eq%21%28vec1.len%28%29%2C+vec2.len%28%29%29%3B%0D%0A%0D%0A++++let+mut+result+%3D+Vec%3A%3Awith_capacity%28vec1.len%28%29%29%3B%0D%0A%0D%0A++++%2F%2F+TODO+2%3A+unsafe%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EB%B2%A1%ED%84%B0%EC%9D%98+%EB%82%B4%EB%B6%80+%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%97%90+%EC%A0%91%EA%B7%BC%ED%95%98%EA%B3%A0+%EA%B0%92%EC%9D%84+%EB%8D%94%ED%95%98%EC%84%B8%EC%9A%94.%0D%0A++++%2F%2F+%EC%B1%84%EC%9B%8C%EB%B3%B4%EC%84%B8%EC%9A%94.%0D%0A%0D%0A++++result%0D%0A%7D%0D%0A" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
+            </div>
+        </div>
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/44_ko.html b/docs/44_ko.html
deleted file mode 100644
index 4501cc0bc9ca02878f60766c23db7f577d79bc80..0000000000000000000000000000000000000000
--- a/docs/44_ko.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html>
-    <html lang="ko">
-    <head>
-        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
-
-        <meta charset="UTF-8">
-        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
-        <meta content="utf-8" http-equiv="encoding">
-        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
-        <meta name="keywords" content="Rust, Programming, Learning">
-        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
-        <meta name="theme-color" content="#ff6801"/>
-        <meta http-equiv="Cache-Control" content="max-age=3600">
-        
-        <link rel="stylesheet" href="tour.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
-        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
-        
-        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
-        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
-        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
-        <link rel="/manifest" href="./site.webmanifest">
-        
-        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
-
-        <script src="./tour.js" defer></script>
-        <!-- <script>hljs.highlightAll();</script> -->
-        <script src="./highlight.badge.min.js"></script>
-    </head>
-    <body>
-        <div class="tour">
-            <div class="header">
-                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
-                <span class="nav">
-                <span class="toc"><a href="TOC_ko.html">목차</a></span>
-            </div>
-            <div class="page">
-            <h1>cargo build</h1>
-            <h1 id="">의존성 관리</h1>
-<h3 id="cargotoml">Cargo.toml 파일을 사용한 외부 패키지 의존성 추가</h3>
-<p><code>Cargo.toml</code> 파일을 사용하여 프로젝트에 외부 패키지 의존성을 추가할 수 있습니다.</p>
-<p><code>[dependencies]</code> 섹션에 패키지 이름과 원하는 버전을 기록하면 됩니다.</p>
-<p>예를 들어, <code>serde</code> 패키지를 추가하려면 다음과 같이 <code>Cargo.toml</code> 파일에 기록합니다. (cargo add serde)</p>
-<pre><code class="toml">[dependencies]
-serde = "1.0" </code></pre>
-<p>이렇게 하면 Cargo는 프로젝트를 빌드할 때 자동으로 <code>serde</code> 패키지를 다운로드하고 컴파일하여 프로젝트와 함께 사용할 수 있게 합니다.</p>
-<p><a href="https://github.com/Alfex4936/Rust-Server/blob/main/chatbot/Cargo.toml" target="_blank" rel="noopener">@아주대학교 챗봇의 Cargo.tmol</a></p>
-<h3 id="-1">의존성 업데이트와 관리 방법</h3>
-<p><code>cargo update</code> 명령어를 사용하면 프로젝트의 의존성을 최신 상태로 업데이트할 수 있습니다.</p>
-<p>이 명령어는 <code>Cargo.lock</code> 파일에 기록된 의존성 버전을 업데이트하며, 프로젝트 빌드 시 새로운 의존성 버전이 사용됩니다.</p>
-<pre><code class="bash">cargo update</code></pre>
-<h1 id="-2">빌드 및 실행</h1>
-<h3 id="cargo">cargo 명령어를 사용한 프로젝트 빌드와 실행 방법</h3>
-<p><code>cargo build</code> 명령어를 사용하여 프로젝트를 빌드할 수 있습니다.</p>
-<p>이 명령어는 프로젝트와 그 의존성을 컴파일하고 빌드 결과물을 <code>target</code> 폴더에 저장합니다. (target/debug 폴더에 바이너리)</p>
-<pre><code class="bash">cargo build</code></pre>
-<p><code>cargo run</code> 명령어를 사용하면 프로젝트를 빌드한 후 바로 실행할 수 있습니다. (단축은 r)</p>
-<p>이 명령어는 <code>cargo build</code>와 동일한 빌드 과정을 거친 후 생성된 실행 파일을 호출합니다.</p>
-<pre><code class="bash">cargo r</code></pre>
-<h3 id="-3">릴리즈 빌드와 디버그 빌드의 차이</h3>
-<p>Cargo는 기본적으로 디버그 빌드를 수행합니다.</p>
-<p>디버그 빌드는 최적화되지 않은 상태로 컴파일되며, 디버깅 정보가 포함됩니다.</p>
-<p>따라서 실행 속도는 느리지만 디버깅을 용이하게 합니다.</p>
-<p>릴리즈 빌드는 최적화를 적용하여 더 빠른 실행 속도를 가지지만, 디버깅 정보가 포함되지 않습니다.</p>
-<p>프로덕션 환경에 배포하기 전에 릴리즈 빌드를 사용하는 것이 좋습니다.</p>
-<p>릴리즈 빌드를 수행하려면 <code>--release</code> 플래그를 사용하세요. (target/release 폴더에 바이너리)</p>
-<pre><code class="bash">cargo build -r</code></pre>
-<h1 id="-4">정보</h1>
-<p>cargo korea 처럼 원하는 cargo subcommand를 만들기 위해서는</p>
-<p>cargo-korea 프로젝트로 이름을 만들어서 배포하면 됩니다. <a href="https://choiseokwon.tistory.com/376" target="_blank" rel="noopener">@만드는 법 참고</a></p>
-            <div class="bottomnav">
-                <span class="back"><a href="chapter_5_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="45_ko.html" rel="next">다음 ❯</a></span>
-            </div>
-            </div>
-            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
-        </div>
-        <script>
-        var pres = document.querySelectorAll("pre>code");
-        for (var i = 0; i < pres.length; i++) {
-            hljs.highlightElement(pres[i]);
-        }
-        var options = {
-            loadDelay: 0,
-            copyIconClass: "far fa-clipboard",
-            checkIconClass: "fa fa-check text-success",
-            blogURL: "http://rust-study.ajousw.kr/"
-        };
-        window.highlightJsBadge(options);
-        </script>
-
-        <footer>
-          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
-        </footer>
-    </body>
-</html>
\ No newline at end of file
diff --git a/docs/45_ko.html b/docs/45_ko.html
index 868400cf1ef30f8140c2661f6f9ec49e5c183135..efea85b14a263ddbd57a2fbc99d26ebf48566bd1 100644
--- a/docs/45_ko.html
+++ b/docs/45_ko.html
@@ -35,60 +35,45 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>cargo publish</h1>
-            <h1 id="">테스트 작성 및 실행</h1>
-<h2 id="cargotest">cargo test 명령어를 사용한 테스트 코드 실행 방법</h2>
-<p><code>cargo test</code> 명령어를 사용하여 프로젝트의 테스트 코드를 실행할 수 있습니다.</p>
-<p>이 명령어는 프로젝트와 그 의존성을 컴파일한 후, 프로젝트 내의 모든 테스트 함수를 실행합니다.</p>
-<pre><code class="sh">cargo test</code></pre>
-<h2 id="-1">테스트 코드 작성 가이드</h2>
-<p>테스트 코드는 <code>#[test]</code> 속성을 사용하여 작성할 수 있습니다.</p>
-<p>일반적으로 테스트 함수는 프로젝트의 <code>src</code> 폴더와 같은 경로에 위치한 <code>tests</code> 폴더 내에 작성됩니다.</p>
-<p>다음은 간단한 테스트 함수 예제입니다.</p>
-<pre><code class="rust">#[cfg(test)]
-mod tests {
-    #[test]
-    fn it_works() {
-        assert_eq!(2 + 2, 4);
-    }
-}</code></pre>
-<h1 id="cratesio">Crates.io 소개</h1>
-<h2 id="rust">Rust의 패키지 저장소 및 사용 방법</h2>
-<p>Crates.io는 Rust의 공식 패키지 저장소로, Rust 라이브러리와 애플리케이션을 공유하고 검색할 수 있는 중앙 집중식 저장소입니다.</p>
-<p><code>Cargo.toml</code> 파일의 <code>[dependencies]</code> 섹션에 패키지 이름과 원하는 버전을 추가함으로써 저장소에서 패키지를 가져올 수 있습니다.</p>
-<h2 id="-2">자신의 라이브러리 공개 및 배포 방법</h2>
-<p>자신의 라이브러리를 Crates.io에 공개하고 배포하려면 다음 단계를 수행하세요.</p>
-<ol>
-<li>먼저, <code>Cargo.toml</code> 파일에 라이브러리에 대한 메타데이터를 작성하세요. 예를 들면:</li>
-</ol>
-<pre><code class="toml">[package]
-name = "your_library_name"
-version = "0.1.0"
-authors = ["Your Name &lt;your.email@example.com>"]
-edition = "2021"
-description = "My app!!!!"</code></pre>
-<ol start="2">
-<li>라이브러리를 Crates.io에 업로드하려면 먼저 <a href="https://crates.io/" target="_blank" rel="noopener">Crates.io</a>에서 계정을 생성하고,</li>
-</ol>
-<p>Cargo CLI 도구를 사용하여 로그인하세요.</p>
-<pre><code class="sh">cargo login your-api-token</code></pre>
-<p><em>API 토큰은 Crates.io 계정 설정 페이지에서 발급받을 수 있습니다.</em></p>
-<ol start="3">
-<li>라이브러리를 Crates.io에 게시하세요.</li>
-</ol>
-<pre><code class="sh">cargo publish</code></pre>
-<p>이제 라이브러리가 Crates.io에 등록되었으며, 다른 사용자들이 이를 의존성으로 사용할 수 있습니다.</p>
-<h1 id="-3">정보</h1>
-<p>라이브러리를 배포하고 IDE에서 함수 주석 같은 것을 만들 때는</p>
-<p><code>///</code> 나 <code>//!</code>로 마크다운 형식으로 만들면 됩니다.</p>
-<pre><code class="rust">/// # Hello
-fn hello() {}</code></pre>
+            <h1>cargo build</h1>
+            <h1 id="">의존성 관리</h1>
+<h3 id="cargotoml">Cargo.toml 파일을 사용한 외부 패키지 의존성 추가</h3>
+<p><code>Cargo.toml</code> 파일을 사용하여 프로젝트에 외부 패키지 의존성을 추가할 수 있습니다.</p>
+<p><code>[dependencies]</code> 섹션에 패키지 이름과 원하는 버전을 기록하면 됩니다.</p>
+<p>예를 들어, <code>serde</code> 패키지를 추가하려면 다음과 같이 <code>Cargo.toml</code> 파일에 기록합니다. (cargo add serde)</p>
+<pre><code class="toml">[dependencies]
+serde = "1.0" </code></pre>
+<p>이렇게 하면 Cargo는 프로젝트를 빌드할 때 자동으로 <code>serde</code> 패키지를 다운로드하고 컴파일하여 프로젝트와 함께 사용할 수 있게 합니다.</p>
+<p><a href="https://github.com/Alfex4936/Rust-Server/blob/main/chatbot/Cargo.toml" target="_blank" rel="noopener">@아주대학교 챗봇의 Cargo.tmol</a></p>
+<h3 id="-1">의존성 업데이트와 관리 방법</h3>
+<p><code>cargo update</code> 명령어를 사용하면 프로젝트의 의존성을 최신 상태로 업데이트할 수 있습니다.</p>
+<p>이 명령어는 <code>Cargo.lock</code> 파일에 기록된 의존성 버전을 업데이트하며, 프로젝트 빌드 시 새로운 의존성 버전이 사용됩니다.</p>
+<pre><code class="bash">cargo update</code></pre>
+<h1 id="-2">빌드 및 실행</h1>
+<h3 id="cargo">cargo 명령어를 사용한 프로젝트 빌드와 실행 방법</h3>
+<p><code>cargo build</code> 명령어를 사용하여 프로젝트를 빌드할 수 있습니다.</p>
+<p>이 명령어는 프로젝트와 그 의존성을 컴파일하고 빌드 결과물을 <code>target</code> 폴더에 저장합니다. (target/debug 폴더에 바이너리)</p>
+<pre><code class="bash">cargo build</code></pre>
+<p><code>cargo run</code> 명령어를 사용하면 프로젝트를 빌드한 후 바로 실행할 수 있습니다. (단축은 r)</p>
+<p>이 명령어는 <code>cargo build</code>와 동일한 빌드 과정을 거친 후 생성된 실행 파일을 호출합니다.</p>
+<pre><code class="bash">cargo r</code></pre>
+<h3 id="-3">릴리즈 빌드와 디버그 빌드의 차이</h3>
+<p>Cargo는 기본적으로 디버그 빌드를 수행합니다.</p>
+<p>디버그 빌드는 최적화되지 않은 상태로 컴파일되며, 디버깅 정보가 포함됩니다.</p>
+<p>따라서 실행 속도는 느리지만 디버깅을 용이하게 합니다.</p>
+<p>릴리즈 빌드는 최적화를 적용하여 더 빠른 실행 속도를 가지지만, 디버깅 정보가 포함되지 않습니다.</p>
+<p>프로덕션 환경에 배포하기 전에 릴리즈 빌드를 사용하는 것이 좋습니다.</p>
+<p>릴리즈 빌드를 수행하려면 <code>--release</code> 플래그를 사용하세요. (target/release 폴더에 바이너리)</p>
+<pre><code class="bash">cargo build -r</code></pre>
+<h1 id="-4">정보</h1>
+<p>cargo korea 처럼 원하는 cargo subcommand를 만들기 위해서는</p>
+<p>cargo-korea 프로젝트로 이름을 만들어서 배포하면 됩니다. <a href="https://choiseokwon.tistory.com/376" target="_blank" rel="noopener">@만드는 법 참고</a></p>
             <div class="bottomnav">
-                <span class="back"><a href="44_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="back"><a href="chapter_5_ko.html" rel="prev">❮ 이전</a></span>
                 <span class="next"><a href="46_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/46_ko.html b/docs/46_ko.html
index a12b614f289013535a51129b39f7504c9074b014..adb2d442de0c855196cff573f6235b14b897bc64 100644
--- a/docs/46_ko.html
+++ b/docs/46_ko.html
@@ -35,16 +35,60 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 5 - Conclusion</h1>
-            <p>자신만의 라이브러리를 만들고 퍼블릭에 업로드 해보았습니다.</p>
-<p>여러분들의 독창적인 아이디어로 프로젝트를 만들어 Rust 커뮤니티에 기여하는</p>
-<p>진정한 <strong>Rustacean</strong>이 되보세요!</p>
+            <h1>cargo publish</h1>
+            <h1 id="">테스트 작성 및 실행</h1>
+<h2 id="cargotest">cargo test 명령어를 사용한 테스트 코드 실행 방법</h2>
+<p><code>cargo test</code> 명령어를 사용하여 프로젝트의 테스트 코드를 실행할 수 있습니다.</p>
+<p>이 명령어는 프로젝트와 그 의존성을 컴파일한 후, 프로젝트 내의 모든 테스트 함수를 실행합니다.</p>
+<pre><code class="sh">cargo test</code></pre>
+<h2 id="-1">테스트 코드 작성 가이드</h2>
+<p>테스트 코드는 <code>#[test]</code> 속성을 사용하여 작성할 수 있습니다.</p>
+<p>일반적으로 테스트 함수는 프로젝트의 <code>src</code> 폴더와 같은 경로에 위치한 <code>tests</code> 폴더 내에 작성됩니다.</p>
+<p>다음은 간단한 테스트 함수 예제입니다.</p>
+<pre><code class="rust">#[cfg(test)]
+mod tests {
+    #[test]
+    fn it_works() {
+        assert_eq!(2 + 2, 4);
+    }
+}</code></pre>
+<h1 id="cratesio">Crates.io 소개</h1>
+<h2 id="rust">Rust의 패키지 저장소 및 사용 방법</h2>
+<p>Crates.io는 Rust의 공식 패키지 저장소로, Rust 라이브러리와 애플리케이션을 공유하고 검색할 수 있는 중앙 집중식 저장소입니다.</p>
+<p><code>Cargo.toml</code> 파일의 <code>[dependencies]</code> 섹션에 패키지 이름과 원하는 버전을 추가함으로써 저장소에서 패키지를 가져올 수 있습니다.</p>
+<h2 id="-2">자신의 라이브러리 공개 및 배포 방법</h2>
+<p>자신의 라이브러리를 Crates.io에 공개하고 배포하려면 다음 단계를 수행하세요.</p>
+<ol>
+<li>먼저, <code>Cargo.toml</code> 파일에 라이브러리에 대한 메타데이터를 작성하세요. 예를 들면:</li>
+</ol>
+<pre><code class="toml">[package]
+name = "your_library_name"
+version = "0.1.0"
+authors = ["Your Name &lt;your.email@example.com>"]
+edition = "2021"
+description = "My app!!!!"</code></pre>
+<ol start="2">
+<li>라이브러리를 Crates.io에 업로드하려면 먼저 <a href="https://crates.io/" target="_blank" rel="noopener">Crates.io</a>에서 계정을 생성하고,</li>
+</ol>
+<p>Cargo CLI 도구를 사용하여 로그인하세요.</p>
+<pre><code class="sh">cargo login your-api-token</code></pre>
+<p><em>API 토큰은 Crates.io 계정 설정 페이지에서 발급받을 수 있습니다.</em></p>
+<ol start="3">
+<li>라이브러리를 Crates.io에 게시하세요.</li>
+</ol>
+<pre><code class="sh">cargo publish</code></pre>
+<p>이제 라이브러리가 Crates.io에 등록되었으며, 다른 사용자들이 이를 의존성으로 사용할 수 있습니다.</p>
+<h1 id="-3">정보</h1>
+<p>라이브러리를 배포하고 IDE에서 함수 주석 같은 것을 만들 때는</p>
+<p><code>///</code> 나 <code>//!</code>로 마크다운 형식으로 만들면 됩니다.</p>
+<pre><code class="rust">/// # Hello
+fn hello() {}</code></pre>
             <div class="bottomnav">
                 <span class="back"><a href="45_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_6_ko.html" rel="next">다음 ❯</a></span>
+                <span class="next"><a href="47_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/47_ko.html b/docs/47_ko.html
new file mode 100644
index 0000000000000000000000000000000000000000..f275696dce4764fe7002f3f312a6f04d11459cc3
--- /dev/null
+++ b/docs/47_ko.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+    <html lang="ko">
+    <head>
+        <title>Rust 튜토리얼 - 자기주도프로젝트</title>
+
+        <meta charset="UTF-8">
+        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
+        <meta content="utf-8" http-equiv="encoding">
+        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2">
+        <meta name="keywords" content="Rust, Programming, Learning">
+        <meta name="description" content="Rust tutorial website based on tour_of_rust by 최석원">
+        <meta name="theme-color" content="#ff6801"/>
+        <meta http-equiv="Cache-Control" content="max-age=3600">
+        
+        <link rel="stylesheet" href="tour.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/night-owl.min.css">
+        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.1/css/all.min.css">
+        
+        <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
+        <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
+        <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
+        <link rel="/manifest" href="./site.webmanifest">
+        
+        <script src="//unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>
+
+        <script src="./tour.js" defer></script>
+        <!-- <script>hljs.highlightAll();</script> -->
+        <script src="./highlight.badge.min.js"></script>
+    </head>
+    <body>
+        <div class="tour">
+            <div class="header">
+                <span class="title"><a href="index.html">Rust 튜토리얼</a></span>
+                <span class="nav">
+                <span class="toc"><a href="TOC_ko.html">목차</a></span>
+            </div>
+            <div class="page">
+            <h1>Chapter 5 - Conclusion</h1>
+            <p>자신만의 라이브러리를 만들고 퍼블릭에 업로드 해보았습니다.</p>
+<p>여러분들의 독창적인 아이디어로 프로젝트를 만들어 Rust 커뮤니티에 기여하는</p>
+<p>진정한 <strong>Rustacean</strong>이 되보세요!</p>
+            <div class="bottomnav">
+                <span class="back"><a href="46_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_6_ko.html" rel="next">다음 ❯</a></span>
+            </div>
+            </div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
+        </div>
+        <script>
+        var pres = document.querySelectorAll("pre>code");
+        for (var i = 0; i < pres.length; i++) {
+            hljs.highlightElement(pres[i]);
+        }
+        var options = {
+            loadDelay: 0,
+            copyIconClass: "far fa-clipboard",
+            checkIconClass: "fa fa-check text-success",
+            blogURL: "http://rust-study.ajousw.kr/"
+        };
+        window.highlightJsBadge(options);
+        </script>
+
+        <footer>
+          <p><a target="_blank" rel="noopener" href="https://www.youtube.com/c/SoftwareToolTime">아주대학교 Software Tool Time</a> - Rust 튜토리얼 (Basic)</p>
+        </footer>
+    </body>
+</html>
\ No newline at end of file
diff --git a/docs/49_ko.html b/docs/49_ko.html
index 8a50b363a3261032a14b988b59f938422d664429..4b2c551b0e13245fc71c0cf16376f24220aabd39 100644
--- a/docs/49_ko.html
+++ b/docs/49_ko.html
@@ -35,14 +35,23 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Chapter 6 - Conclusion</h1>
-            <p>CSW</p>
+            <h1>프로젝트 준비</h1>
+            <p>우선 actix-rs로 카카오톡 챗봇을 위한 서버를 만들 것입니다.</p>
+<p>우측처럼 플러스 친구로 추가해서 메시지를 보내면 특정 응답을 받는 봇을 자주 보셨을 겁니다.</p>
+<p>이 강의에서는 간단하게 <a href="https://i.kakao.com/docs/skill-response-format#basiccard" target="_blank" rel="noopener">BasicCard</a> 포맷을 이용해 자신의 정보를 만들어 볼 것 입니다.</p>
+<p><img src="https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGZOnJ%2Fbtra8y6n31j%2FZyIuDLgVyQPqzknNrIXqSk%2Fimg.png" alt="BasicCard" /></p>
+<h1 id="">준비물:</h1>
+<ol>
+<li>public에서 접속 가능한 주소 (포트포워딩이나 AWS EC2를 이용)</li>
+<li>카카오 i 챗봇 만들기 <a href="https://i.kakao.com/" target="_blank" rel="noopener">@링크</a></li>
+<li>카카오톡 채널 만들기 <a href="https://center-pf.kakao.com/profiles" target="_blank" rel="noopener">@링크</a></li>
+</ol>
             <div class="bottomnav">
-                <span class="back"><a href="48_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="chapter_7_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="chapter_6_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="50_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="https://user-images.githubusercontent.com/2356749/236372807-0c1afba9-11b0-45f3-8f32-63c6566b7097.png" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/48_ko.html b/docs/50_ko.html
similarity index 90%
rename from docs/48_ko.html
rename to docs/50_ko.html
index 94e1428aa4c1b1a447b91fb7dd1220675d7a0f46..4c518346b0062b4fa47fc6d0df2594fd7353ece5 100644
--- a/docs/48_ko.html
+++ b/docs/50_ko.html
@@ -35,14 +35,14 @@
                 <span class="toc"><a href="TOC_ko.html">목차</a></span>
             </div>
             <div class="page">
-            <h1>Hey</h1>
+            <h1>Chapter 6 - Conclusion</h1>
             <p>CSW</p>
             <div class="bottomnav">
-                <span class="back"><a href="chapter_6_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="49_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="49_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="chapter_7_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/TOC_ko.html b/docs/TOC_ko.html
index 21b858349925f42ac4957bb491681302acb98f5d..6ffd90147f67159404eb39d1ae6e5eb38bea625c 100644
--- a/docs/TOC_ko.html
+++ b/docs/TOC_ko.html
@@ -60,33 +60,34 @@
 <li><a href="20_ko.html">Struct and Enum</a></li>
 <li><a href="21_ko.html">Returning Nothing</a></li>
 <li><a href="22_ko.html">Error handling</a></li>
-<li><a href="23_ko.html">Chapter 1 - 마무리</a></li>
+<li><a href="23_ko.html">ref</a></li>
+<li><a href="24_ko.html">Chapter 1 - 마무리</a></li>
 </ul><h3><a href="chapter_2_ko.html">Chapter 2 - Ownership</a></h3><ul>
-<li><a href="25_ko.html">소유권과 빌림 검사기</a></li>
-<li><a href="26_ko.html">소유권</a></li>
-<li><a href="27_ko.html">빌림</a></li>
-<li><a href="28_ko.html">라이프타임: 참조의 유효 기간 이해하기</a></li>
-<li><a href="29_ko.html">빌림 검사기</a></li>
-<li><a href="30_ko.html">Chapter 2 - Conclusion</a></li>
+<li><a href="26_ko.html">소유권과 빌림 검사기</a></li>
+<li><a href="27_ko.html">소유권</a></li>
+<li><a href="28_ko.html">빌림</a></li>
+<li><a href="29_ko.html">라이프타임: 참조의 유효 기간 이해하기</a></li>
+<li><a href="30_ko.html">빌림 검사기</a></li>
+<li><a href="31_ko.html">Chapter 2 - Conclusion</a></li>
 </ul><h3><a href="chapter_3_ko.html">Chapter 3 - Collections and Iterators</a></h3><ul>
-<li><a href="32_ko.html">주요 컬렉션 타입 소개</a></li>
-<li><a href="33_ko.html">벡터(Vector)</a></li>
-<li><a href="34_ko.html">벡터의 반복자(Iterators)</a></li>
-<li><a href="35_ko.html">해시맵(HashMap)</a></li>
-<li><a href="36_ko.html">이터레이터(Iterators) 소개</a></li>
-<li><a href="37_ko.html">Chapter 3 - Conclusion</a></li>
+<li><a href="33_ko.html">주요 컬렉션 타입 소개</a></li>
+<li><a href="34_ko.html">벡터(Vector)</a></li>
+<li><a href="35_ko.html">벡터의 반복자(Iterators)</a></li>
+<li><a href="36_ko.html">해시맵(HashMap)</a></li>
+<li><a href="37_ko.html">이터레이터(Iterators) 소개</a></li>
+<li><a href="38_ko.html">Chapter 3 - Conclusion</a></li>
 </ul><h3><a href="chapter_4_ko.html">Chapter 4 - Advanced</a></h3><ul>
-<li><a href="39_ko.html">동시성(Concurrency)</a></li>
-<li><a href="40_ko.html">매크로(Macros)</a></li>
-<li><a href="41_ko.html">unsafe 코드</a></li>
-<li><a href="42_ko.html">Chapter 4 - Conclusion</a></li>
+<li><a href="40_ko.html">동시성(Concurrency)</a></li>
+<li><a href="41_ko.html">매크로(Macros)</a></li>
+<li><a href="42_ko.html">unsafe 코드</a></li>
+<li><a href="43_ko.html">Chapter 4 - Conclusion</a></li>
 </ul><h3><a href="chapter_5_ko.html">Chapter 5 - Cargo</a></h3><ul>
-<li><a href="44_ko.html">cargo build</a></li>
-<li><a href="45_ko.html">cargo publish</a></li>
-<li><a href="46_ko.html">Chapter 5 - Conclusion</a></li>
+<li><a href="45_ko.html">cargo build</a></li>
+<li><a href="46_ko.html">cargo publish</a></li>
+<li><a href="47_ko.html">Chapter 5 - Conclusion</a></li>
 </ul><h3><a href="chapter_6_ko.html">Chapter 6 - 웹 서버</a></h3><ul>
-<li><a href="48_ko.html">Hey</a></li>
-<li><a href="49_ko.html">Chapter 6 - Conclusion</a></li>
+<li><a href="49_ko.html">프로젝트 준비</a></li>
+<li><a href="50_ko.html">Chapter 6 - Conclusion</a></li>
 </ul><h3><a href="chapter_7_ko.html">마치며</a></h3><ul>
             </ul>
             </div>
diff --git a/docs/chapter_1_ko.html b/docs/chapter_1_ko.html
index f47514918f2e10a4d3cf8c89e35f15a751cbb08a..e16cd455cfa3c87e5d7962688ee1241e1111a3bd 100644
--- a/docs/chapter_1_ko.html
+++ b/docs/chapter_1_ko.html
@@ -46,7 +46,7 @@ println!("Hello, Rustacean!");</code></pre>
                 <span class="next"><a href="07_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/chapter_2_ko.html b/docs/chapter_2_ko.html
index 71af489fe4369b55ea563daeeea4da5bae20ac7d..48ea69c3763c9d041c421c24b1f246635bfde46d 100644
--- a/docs/chapter_2_ko.html
+++ b/docs/chapter_2_ko.html
@@ -59,8 +59,8 @@
 <p>이러한 문제들에 대한 해결책으로 Rust는 소유권, 빌림, 그리고 수명을 기반으로 한 메모리 관리 시스템을 도입하였습니다.</p>
 <p>이를 통해 컴파일 시간에 메모리 안전성을 보장하며, 가비지 컬렉터의 성능 오버헤드를 피할 수 있습니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="23_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="25_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="24_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="26_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
diff --git a/docs/chapter_3_ko.html b/docs/chapter_3_ko.html
index 6ba0a77abbb3dd950be93d6e5fff95949e43e983..6af14ed9256f595cbad57811a828c7e2c0de2e29 100644
--- a/docs/chapter_3_ko.html
+++ b/docs/chapter_3_ko.html
@@ -51,11 +51,11 @@
 <p>이러한 이유로 컬렉션은 프로그래밍에서 핵심 요소로 간주되며, 러스트에서는 이를 효과적으로 활용할 수 있는 다양한 컬렉션 타입을 제공합니다.</p>
 <p>이 챕터에서는 러스트의 주요 컬렉션 타입에 대해 알아보겠습니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="30_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="32_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="31_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="33_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/chapter_4_ko.html b/docs/chapter_4_ko.html
index ba320a37c3d417157f750a5c3d89742675cc626f..2e4964988140bdb5d0273009718755795279cec2 100644
--- a/docs/chapter_4_ko.html
+++ b/docs/chapter_4_ko.html
@@ -59,11 +59,11 @@ b. 선언형 매크로(Declarative Macros) 생성하기<br />
 c. 프로시저 매크로(Procedural Macros) 생성하기<br />
 d. 매크로 규칙 및 패턴 매칭</p>
             <div class="bottomnav">
-                <span class="back"><a href="37_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="39_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="38_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="40_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ajou.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/chapter_5_ko.html b/docs/chapter_5_ko.html
index 1fe2e451399c9ea4dd652cc068538897a2782f1d..cbe6b651fd985565f2f85ed7927df34faa049918 100644
--- a/docs/chapter_5_ko.html
+++ b/docs/chapter_5_ko.html
@@ -58,11 +58,11 @@
 <p>이 외에도 <code>.gitignore</code> 파일이 생성되어 Git을 사용할 때 무시해야 하는 파일 및 폴더를 정의합니다.</p>
 <p>이렇게 생성된 프로젝트는 바로 빌드 및 실행이 가능한 상태입니다.</p>
             <div class="bottomnav">
-                <span class="back"><a href="42_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="44_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="43_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="45_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.webp" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/docs/chapter_6_ko.html b/docs/chapter_6_ko.html
index 494721acc00935b268bc87ef90f921ad7c6c5b45..65d00a3ff0288b558b45b67ca5fb085319a49dd9 100644
--- a/docs/chapter_6_ko.html
+++ b/docs/chapter_6_ko.html
@@ -49,8 +49,8 @@
 </ul>
 <p>실제 어떻게 만들 수 있는지 바로 보고 싶으시면 <a href="https://github.com/Alfex4936/Rust-Server/tree/main/chatbot" target="_blank" rel="noopener">아주대 카카오톡 챗봇을 actix-rs</a>로 만든 버전을 참고하세요.</p>
             <div class="bottomnav">
-                <span class="back"><a href="46_ko.html" rel="prev">❮ 이전</a></span>
-                <span class="next"><a href="48_ko.html" rel="next">다음 ❯</a></span>
+                <span class="back"><a href="47_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="next"><a href="49_ko.html" rel="next">다음 ❯</a></span>
             </div>
             </div>
             <div class="code">
diff --git a/docs/chapter_7_ko.html b/docs/chapter_7_ko.html
index d04c86967ad1369539b6031929e3016274151901..2c8989b0c6d6641392846adf64f7c626bcafa8c1 100644
--- a/docs/chapter_7_ko.html
+++ b/docs/chapter_7_ko.html
@@ -36,13 +36,13 @@
             </div>
             <div class="page">
             <h1>마치며</h1>
-            <p>CSW</p>
+            <p>…</p>
             <div class="bottomnav">
-                <span class="back"><a href="49_ko.html" rel="prev">❮ 이전</a></span>
+                <span class="back"><a href="50_ko.html" rel="prev">❮ 이전</a></span>
                 
             </div>
             </div>
-            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="300" height="100%"></center></div>
+            <div class="code"><center><img src="/ferris_lofi.png" alt="Rust Tutorial" width="80%" height="100%"></center></div>
         </div>
         <script>
         var pres = document.querySelectorAll("pre>code");
diff --git a/frontend/generate.js b/frontend/generate.js
index d7d606040b1d317133babec5a35e068360b7d42f..28bdf01cf75470c4a67d663249587f87165c2494 100644
--- a/frontend/generate.js
+++ b/frontend/generate.js
@@ -216,7 +216,7 @@ function template(
                 ? `<div class="code">
             <iframe id="rust-playground" width="100%" src="${code}" scrolling="no" frameborder="no" allowtransparency="true" allowfullscreen="true" sandbox="allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals" title="Rust Playground" loading="lazy"></iframe>
             </div>`
-                : `<div class="code"><center><img src="${source}" alt="Rust Tutorial" width="300" height="100%"></center></div>`
+                : `<div class="code"><center><img src="${source}" alt="Rust Tutorial" width="80%" height="100%"></center></div>`
             }
         </div>
         <script>
diff --git a/frontend/lessons/ko/chapter_0.yaml b/frontend/lessons/ko/chapter_0.yaml
index e23c823158484d419d0fc92a23eeaa64100505b2..83a9d42763ab29caea320646703dc5ea6482a2a6 100644
--- a/frontend/lessons/ko/chapter_0.yaml
+++ b/frontend/lessons/ko/chapter_0.yaml
@@ -177,7 +177,7 @@
 - title: >-
     Chapter 0 - 마무리
   source: >-
-    /ferris_lofi.png
+    /ferris_lofi.webp
   content_markdown: |
     Rust 소스코드는 `.rs` 확장자를 가집니다.
 
diff --git a/frontend/lessons/ko/chapter_1.yaml b/frontend/lessons/ko/chapter_1.yaml
index 9a98081db9b984e841d8fb2908ecdbaa91a99b24..59a1bdaf9a42d9c33f70625f3cd21a667adf19d2 100644
--- a/frontend/lessons/ko/chapter_1.yaml
+++ b/frontend/lessons/ko/chapter_1.yaml
@@ -1,6 +1,6 @@
 - title: Chapter 1 - The Basics
   source: >-
-    /ferris_lofi.png
+    /ferris_lofi.webp
   content_markdown: >
     무슨 언어를 배우든 똑같이 기본부터 살펴보겠습니다. (변수, 함수, 클래스 등)
 
@@ -903,6 +903,56 @@
 
 
     이러한 고급 기능을 배우는 것도 도움이 될 것입니다.
+- title: ref
+  code: >-
+    https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=fn+main%28%29+%7B%0D%0A++++let+x+%3D+Some%28String%3A%3Afrom%28%22text%22%29%29%3B%0D%0A%0D%0A++++%2F%2F+if+let+%EA%B5%AC%EB%AC%B8%EC%97%90%EC%84%9C+ref+%ED%82%A4%EC%9B%8C%EB%93%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC+%EC%B0%B8%EC%A1%B0%EB%A5%BC+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0D%0A++++if+let+Some%28ref+y%29+%3D+x+%7B%0D%0A++++++++println%21%28%22x+contains%3A+%7B%7D%22%2C+y%29%3B%0D%0A++++%7D%0D%0A%0D%0A++++%2F%2F+x%EC%9D%98+%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9D%B4+%EC%9D%B4%EB%8F%99%ED%95%98%EC%A7%80+%EC%95%8A%EC%95%98%EA%B8%B0+%EB%95%8C%EB%AC%B8%EC%97%90+%EC%97%AC%EC%A0%84%ED%9E%88+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0D%0A++++println%21%28%22x+is+still+available%3A+%7B%3A%3F%7D%22%2C+x%29%3B%0D%0A%7D%0D%0A
+  content_markdown: |
+    `ref` 키워드는 패턴 매칭 과정에서 값의 참조를 만들어 해당 값을 이동(move)하는 대신 빌려오도록(bind by reference) 하는 데 사용됩니다.
+
+    패턴 매칭에 관해서는 매칭 여부에 영향을 주지 않으며, 값이 어떻게 매치되는지만 제어합니다.
+
+    기본적으로, `match` 문은 사용 가능한 모든 값을 소비합니다.
+
+    따라서 값의 소유권이 필요하지 않은 경우에도 문제가 될 수 있습니다.
+
+    ```rust
+    let maybe_name = Some(String::from("Alice"));
+
+    // 변수 'maybe_name'이 여기서 소비됩니다...
+    match maybe_name {
+        Some(n) => println!("Hello, {}", n),
+        _ => println!("Hello, world"),
+    }
+
+    // ... 이제 사용할 수 없습니다.
+    println!("Hello again, {}", maybe_name.unwrap_or("world".into()));
+    ```
+
+    `ref` 키워드를 사용하면 값이 빌려온 것이지만 이동하지 않으므로, `match` 문 이후에도 사용할 수 있습니다.
+
+    ```rust
+    let maybe_name = Some(String::from("Alice"));
+
+    // `ref`를 사용하여 값이 빌려오고 이동하지 않습니다...
+    match maybe_name {
+        Some(ref n) => println!("Hello, {}", n),
+        _ => println!("Hello, world"),
+    }
+
+    // ... 그래서 여기에서 사용할 수 있습니다!
+    println!("Hello again, {}", maybe_name.unwrap_or("world".into()));
+    ```
+
+    `&`와 `ref`의 차이점:
+
+    - `&`는 패턴이 객체에 대한 참조를 기대함을 나타냅니다. 따라서 `&`는 해당 패턴의 일부분입니다. `&Foo`는 `Foo`와 다른 객체와 매치됩니다.
+    - `ref`는 값의 참조를 얻기를 원함을 나타냅니다. 매치 대상이 아닙니다. `Foo(ref foo)`는 `Foo(foo)`와 동일한 객체와 매치됩니다.
+
+    우측 예제에서는 String 타입을 사용하고 있습니다.
+
+    ref 키워드를 사용하지 않을 경우, if let 구문에서 소유권이 이동하게 되어 이후에 x를 사용할 수 없게 됩니다.
+
+    그러나 ref 키워드를 사용함으로써 소유권이 이동하지 않고 참조가 생성되어 이후에도 x를 사용할 수 있습니다.
 - title: Chapter 1 - 마무리
   code: >-
     https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%2F*%0A%EB%AC%B8%EC%A0%9C+1%0A%0A%3E+area%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%A0+%EB%95%8C%EB%8A%94+%ED%8C%8C%EC%9D%B4%28pi%29%EB%A5%BC+3.14%EB%A1%9C+%EA%B0%80%EC%A0%95%ED%95%A9%EB%8B%88%EB%8B%A4.+%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0%0A%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0A%3E+perimeter%28shape%3A+Shape%29+-%3E+f64%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4%EA%B3%A0+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%EA%B0%80+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%84+%EB%A7%8C%EB%93%A4+%EC%88%98+%EC%97%86%EB%8A%94+%EA%B2%BD%EC%9A%B0%EC%97%90%EB%8A%94+%EC%97%90%EB%9F%AC%EB%A5%BC+%EB%B0%9C%EC%83%9D%EC%8B%9C%ED%82%A4%EC%84%B8%EC%9A%94.%0A%0Ais_square%28shape%3A+Shape%29+-%3E+bool%0A%0A%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EC%9D%B4+%EC%A3%BC%EC%96%B4%EC%A1%8C%EC%9D%84+%EB%95%8C%2C+%EA%B7%B8+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%B4%EC%84%9C+%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%EC%9E%85%EB%8B%88%EB%8B%A4.%0A%0A%EB%A7%8C%EC%95%BD+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%95%84%EB%8B%88%EB%A9%B4+false%EB%A5%BC+%EB%B0%98%ED%99%98%ED%95%98%EC%84%B8%EC%9A%94.%0A%0A%EB%8B%B5%EC%9D%80+%EB%A7%88%EC%A7%80%EB%A7%89+%EC%B1%95%ED%84%B0+%EB%B6%80%EB%A1%9D%EC%9D%84+%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94.%0A*%2F%0A%0Aenum+Shape+%7B%0A++++Circle%28f64%29%2C+++++++++++++%2F%2F+%EB%B0%98%EC%A7%80%EB%A6%84%0A++++Rectangle%28f64%2C+f64%29%2C+++++%2F%2F+%EA%B0%80%EB%A1%9C%2C+%EC%84%B8%EB%A1%9C%0A++++Triangle%28f64%2C+f64%2C+f64%29%2C+%2F%2F+%EC%84%B8+%EB%B3%80%EC%9D%98+%EA%B8%B8%EC%9D%B4%0A%7D%0A%0A%2F%2F+%EB%84%93%EC%9D%B4%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+area%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++%2F%2F+FIXME%0A++++%2F%2F+perimeter+%ED%95%A8%EC%88%98%EB%A5%BC+%EC%B0%B8%EA%B3%A0%ED%95%98%EC%84%B8%EC%9A%94.%0A++++%2F%2F+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%EC%9D%80+panic%21+%EB%A7%A4%ED%81%AC%EB%A1%9C%EB%A5%BC+%EC%82%AC%EC%9A%A9%ED%95%A0+%EC%88%98+%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%0A%7D%0A%0A%2F%2F+%EB%91%98%EB%A0%88%EB%A5%BC+%EA%B3%84%EC%82%B0%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+perimeter%28shape%3A+%26Shape%29+-%3E+f64+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28r%29+%3D%3E+2.0+*+3.14+*+r%2C%0A++++++++Shape%3A%3ARectangle%28w%2C+h%29+%3D%3E+2.0+*+%28w+%2B+h%29%2C%0A++++++++Shape%3A%3ATriangle%28a%2C+b%2C+c%29+%3D%3E+%7B%0A++++++++++++%2F%2F+%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88+%EA%B3%B5%EC%8B%9D%0A++++++++++++let+p+%3D+a+%2B+b+%2B+c%3B%0A++++++++++++%2F%2F+%EB%91%98%EB%A0%88%EA%B0%80+%EC%9D%8C%EC%88%98%EB%A9%B4+%EC%97%90%EB%9F%AC+%EB%B0%9C%EC%83%9D%0A++++++++++++if+p+%3C+0.0+%7B%0A++++++++++++++++panic%21%28%22Invalid+triangle%22%29%3B%0A++++++++++++%7D+else+%7B%0A++++++++++++++++p%0A++++++++++++%7D%0A++++++++%7D%0A++++%7D%0A%7D%0A%0A%2F%2F+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%ED%8C%90%EB%B3%84%ED%95%98%EB%8A%94+%ED%95%A8%EC%88%98%0Afn+is_square%28shape%3A+%26Shape%29+-%3E+bool+%7B%0A++++match+shape+%7B%0A++++++++Shape%3A%3ACircle%28_%29+%3D%3E+false%2C%0A++++++++%2F%2F+FIXME+%EB%8B%A4%EB%A5%B8+%EB%8F%84%ED%98%95...%0A++++%7D%0A%7D%0A%0A%2F%2F+%EA%B2%B0%EA%B3%BC%0A%2F*%0A%EC%9B%90+%EB%84%93%EC%9D%B4%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+12%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+6%0A%EC%9B%90+%EB%91%98%EB%A0%88%3A+12.56%0A%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+14%0A%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+12%0A%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+false%0A*%2F%0Afn+main%28%29+%7B%0A++++%2F%2F+Shape+%ED%83%80%EC%9E%85%EC%9D%98+%EA%B0%92%EB%93%A4%EC%9D%84+%EC%83%9D%EC%84%B1%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++let+circle+%3D+Shape%3A%3ACircle%282.0%29%3B%0A++++let+rectangle+%3D+Shape%3A%3ARectangle%283.0%2C+4.0%29%3B%0A++++let+triangle+%3D+%2F%2F+FIXME%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%84%93%EC%9D%B4%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%84%93%EC%9D%B4%3A+%7B%7D%22%2C+area%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%98+%EB%91%98%EB%A0%88%EB%A5%BC+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95+%EB%91%98%EB%A0%88%3A+%7B%7D%22%2C+perimeter%28%26triangle%29%29%3B%0A%0A++++%2F%2F+%EA%B0%81+%EB%8F%84%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EC%A7%80+%EC%B6%9C%EB%A0%A5%ED%95%A9%EB%8B%88%EB%8B%A4.%0A++++println%21%28%22%EC%9B%90%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26circle%29%29%3B%0A++++println%21%28%22%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26rectangle%29%29%3B%0A++++println%21%28%22%EC%82%BC%EA%B0%81%ED%98%95%EC%9D%B4+%EC%A0%95%EC%82%AC%EA%B0%81%ED%98%95%EC%9D%B8%EA%B0%80%3F+%7B%7D%22%2C+is_square%28%26triangle%29%29%3B%0A%7D%0A
diff --git a/frontend/lessons/ko/chapter_6.yaml b/frontend/lessons/ko/chapter_6.yaml
index 1e3d91bb0f3380dce43120956bcd49da99653935..e1f218991666be6fd06c29a9b190dede6225285f 100644
--- a/frontend/lessons/ko/chapter_6.yaml
+++ b/frontend/lessons/ko/chapter_6.yaml
@@ -17,11 +17,24 @@
     - 템플릿 엔진, 데이터베이스, 인증 등과 같은 다른 라이브러리와 쉽게 통합할 수 있습니다.
 
     실제 어떻게 만들 수 있는지 바로 보고 싶으시면 [아주대 카카오톡 챗봇을 actix-rs](https://github.com/Alfex4936/Rust-Server/tree/main/chatbot)로 만든 버전을 참고하세요.
-- title: Hey
+- title: 프로젝트 준비
   source: >-
-    /ferris_lofi.png
+    https://user-images.githubusercontent.com/2356749/236372807-0c1afba9-11b0-45f3-8f32-63c6566b7097.png
   content_markdown: |
-    CSW
+    우선 actix-rs로 카카오톡 챗봇을 위한 서버를 만들 것입니다.
+
+    우측처럼 플러스 친구로 추가해서 메시지를 보내면 특정 응답을 받는 봇을 자주 보셨을 겁니다.
+
+    이 강의에서는 간단하게 [BasicCard](https://i.kakao.com/docs/skill-response-format#basiccard) 포맷을 이용해 자신의 정보를 만들어 볼 것 입니다.
+
+
+    ![BasicCard](https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGZOnJ%2Fbtra8y6n31j%2FZyIuDLgVyQPqzknNrIXqSk%2Fimg.png)
+
+    # 준비물:
+
+    1. public에서 접속 가능한 주소 (포트포워딩이나 AWS EC2를 이용)
+    2. 카카오 i 챗봇 만들기 [@링크](https://i.kakao.com/)
+    3. 카카오톡 채널 만들기 [@링크](https://center-pf.kakao.com/profiles)
 - title: Chapter 6 - Conclusion
   source: >-
     /ferris_lofi.png
diff --git a/frontend/lessons/ko/chapter_7.yaml b/frontend/lessons/ko/chapter_7.yaml
index fae02dda215c2f56488e211369f421c7912cefb6..81dcb4041865b1eaeb2bb4675b653d32901efed8 100644
--- a/frontend/lessons/ko/chapter_7.yaml
+++ b/frontend/lessons/ko/chapter_7.yaml
@@ -2,4 +2,4 @@
   source: >-
     /ferris_lofi.png
   content_markdown: |
-    CSW
+    ...