<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>fafamath 님의 블로그</title>
    <link>https://fafamath.tistory.com/</link>
    <description>fafamath 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 2 Jun 2026 07:34:03 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>fafamath</managingEditor>
    <item>
      <title>[지수함수와 친해지기_001] 지수함수 그래프 개형을 익혀보자~(무한구간의 넓이가 유한? 진짜?)</title>
      <link>https://fafamath.tistory.com/15</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;style&gt;
/* 디자인 시스템 (CLAUDE.md) */
:root {
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;

  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;

  --color-success: #10B981;
  --color-danger: #EF4444;
  --color-warning: #F97316;
  --color-info: #6366F1;

  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0;
  --color-border-strong: #CBD5E1;

  --color-examiner: #7C3AED;
  --color-examiner-light: #8B5CF6;
  --color-examiner-bg: #F5F3FF;
  --color-trap: #DC2626;
  --color-trap-bg: #FEF2F2;

  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  --leading-tight: 1.4;
  --leading-normal: 1.8;
  --leading-relaxed: 2.0;

  --tracking-tight: -0.02em;
  --tracking-normal: -0.01em;
  --tracking-wide: 0.02em;

  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;

  --section-gap: var(--space-16);
  --paragraph-gap: var(--space-6);
  --element-gap: var(--space-4);

  --content-width: 720px;
  --content-padding: var(--space-6);

  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;

  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
  --shadow-glow: 0 0 20px rgba(37,99,235,0.15);
}

body {
  font-family: var(--font-body);
  color: var(--color-text);
  line-height: var(--leading-normal);
  font-size: var(--text-lg);
  background-color: var(--color-bg);
  margin: 0;
  padding: 0;
}

.post-container {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: var(--content-padding);
}

/* Typography */
h1, h2, h3, h4 {
  font-family: var(--font-heading);
  line-height: var(--leading-tight);
  color: var(--color-text);
}
p { margin-bottom: var(--paragraph-gap); }
ul, ol { margin-bottom: var(--paragraph-gap); padding-left: 1.5rem; }
li { margin-bottom: var(--space-2); }

/* 스크롤 등장 애니메이션 */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* 수식 강조 */
.math-highlight {
  display: block;
  padding: var(--space-6) var(--space-8);
  margin: var(--space-8) 0;
  background: var(--color-primary-bg);
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-md);
  position: relative;
  overflow: hidden;
}
.math-highlight.visible {
  animation: mathGlow 1.5s ease-out;
}
@keyframes mathGlow {
  0% { box-shadow: 0 0 0 rgba(37,99,235,0); }
  30% { box-shadow: 0 0 30px rgba(37,99,235,0.2); }
  100% { box-shadow: var(--shadow-sm); }
}

/* 표 스타일 */
.table-interactive {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  margin: var(--space-6) 0;
}
.table-interactive th {
  background: var(--color-primary);
  color: white;
  padding: var(--space-3) var(--space-4);
  font-weight: 600;
  text-align: center;
}
.table-interactive td {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  transition: background 0.2s ease, transform 0.2s ease;
  text-align: center;
}
.table-interactive tbody tr:hover td {
  background: var(--color-primary-bg);
  transform: scale(1.01);
}

/* 아코디언 */
.accordion {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  margin: var(--space-6) 0;
}
.accordion-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-6);
  background: var(--color-examiner-bg);
  color: var(--color-examiner-dark);
  cursor: pointer;
  font-weight: 700;
  user-select: none;
  transition: background 0.2s ease;
}
.accordion-header:hover {
  background: var(--color-border);
}
.accordion-icon {
  transition: transform 0.3s ease;
  font-size: 1.2em;
}
.accordion.open .accordion-icon {
  transform: rotate(180deg);
}
.accordion-body {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease-out, padding 0.3s ease;
  padding: 0 var(--space-6);
}
.accordion.open .accordion-body {
  max-height: 2000px;
  padding: var(--space-6);
}

/* 컴포넌트 */
.section-header {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 2px solid var(--color-primary);
}
.section-number {
  font-size: var(--text-3xl);
  font-weight: 800;
  color: var(--color-primary);
  opacity: 0.3;
  font-family: var(--font-mono);
}
.section-title {
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
}
.key-message {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-accent-bg);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent);
  margin: var(--space-8) 0;
}
.key-message-icon {
  font-size: var(--text-2xl);
  flex-shrink: 0;
}
.key-message-text {
  font-family: var(--font-accent);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--color-text);
  font-weight: 500;
}
.trap-box {
  background: var(--color-trap-bg);
  border-left: 4px solid var(--color-trap);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  margin: var(--space-6) 0;
}

/* 칠판 판서 */
.chalkboard {
  background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%);
  border-radius: var(--radius-lg);
  padding: var(--space-8) var(--space-8) var(--space-12);
  position: relative;
  overflow: hidden;
  margin: var(--space-8) 0;
  box-shadow: var(--shadow-md);
}
.chalkboard::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;);
  pointer-events: none;
  border-radius: var(--radius-lg);
}
.chalk-tray {
  position: absolute;
  bottom: 8px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 12px;
  opacity: 0.45;
}
.chalk-tray-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}
.chalk-row {
  font-size: 24px;
  line-height: 2.1;
  margin-bottom: 0.5rem;
  position: relative;
  white-space: pre-wrap;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive;
}
.ch {
  display: inline-block;
  opacity: 0;
  font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive;
}
.ch.on { opacity: 1; }
.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08), -0.5px 0 1px rgba(235,230,220,0.05); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }
.chalk-dust {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  animation: dustFall 1.2s ease-out forwards;
}
@keyframes dustFall {
  0% { opacity: 0.5; transform: translate(0, 0); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)); }
}
&lt;/style&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script&gt;
document.addEventListener('DOMContentLoaded', function() {
  // 스크롤 애니메이션
  var observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
      }
    });
  }, { threshold: 0.15 });

  document.querySelectorAll('.reveal, .math-highlight').forEach(function(el) {
    observer.observe(el);
  });

  // 아코디언
  document.querySelectorAll('.accordion-header').forEach(function(header) {
    header.addEventListener('click', function() {
      this.parentElement.classList.toggle('open');
    });
  });

  // 칠판
  function runChalkboard(board) {
    var data = JSON.parse(board.dataset.script);
    board.innerHTML = '';
    
    var tray = document.createElement('div');
    tray.className = 'chalk-tray';
    ['#fff', '#fcd34d', '#f87171', '#93c5fd'].forEach(function(c) {
      var d = document.createElement('div');
      d.className = 'chalk-tray-dot';
      d.style.background = c;
      tray.appendChild(d);
    });
    board.appendChild(tray);

    var delay = 0;
    data.forEach(function(line) {
      setTimeout(function() {
        var row = document.createElement('div');
        row.className = 'chalk-row';
        var colorClass = 'chalk-w';
        if (line.color === '#ff6b6b') colorClass = 'chalk-r';
        if (line.color === '#feca57') colorClass = 'chalk-y';
        if (line.color === '#48dbfb') colorClass = 'chalk-b';
        row.classList.add(colorClass);

        var text = line.text;
        var spans = [];
        for (var i = 0; i &lt; text.length; i++) {
          var sp = document.createElement('span');
          sp.className = 'ch';
          sp.textContent = text[i];
          var rot = (Math.random() - 0.5) * 2.5;
          var scl = 0.97 + Math.random() * 0.06;
          var ty = (Math.random() - 0.5) * 1.5;
          sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';
          if (text[i] === ' ') sp.style.width = '0.3em';
          row.appendChild(sp);
          spans.push(sp);
        }
        board.appendChild(row);

        var idx = 0;
        var iv = setInterval(function() {
          if (idx &lt; spans.length) {
            spans[idx].classList.add('on');
            if (idx % 3 === 0 &amp;&amp; text[idx] !== ' ') {
              var d = document.createElement('div');
              d.className = 'chalk-dust';
              d.style.width = '2.5px'; d.style.height = '2.5px';
              d.style.background = line.color || '#fff';
              var rect = spans[idx].getBoundingClientRect();
              var bRect = board.getBoundingClientRect();
              d.style.left = (rect.right - bRect.left) + 'px';
              d.style.top = (rect.bottom - bRect.top) + 'px';
              d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
              d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
              board.appendChild(d);
              setTimeout(function(){ if(d.parentNode) d.parentNode.removeChild(d); }, 1200);
            }
            idx++;
          } else {
            clearInterval(iv);
          }
        }, 32);
      }, delay);
      delay += line.text.length * 32 + 300;
    });
  }

  var chalkObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
        entry.target.dataset.played = 'true';
        runChalkboard(entry.target);
      }
    });
  }, { threshold: 0.3 });

  document.querySelectorAll('.chalkboard').forEach(function(el) {
    chalkObserver.observe(el);
  });
});
&lt;/script&gt;
&lt;script&gt;
window.MathJax = {
  tex: {
    inlineMath: [['$', '$']],
    displayMath: [['$$', '$$']],
    processEscapes: true
  },
  options: { ignoreHtmlClass: 'chalkboard|tex2jax_ignore' }
};
&lt;/script&gt;
&lt;script async src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&quot;post-container&quot;&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;도입 — 시리즈 첫 시간이야&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 오늘부터 &lt;strong&gt;지수함수와 친해지기&lt;/strong&gt; 시리즈를 시작할 거야~&lt;/p&gt;
  &lt;p&gt;총 6편짜리 시리즈인데, 1편인 오늘은 &lt;strong&gt;그냥 가볍게 시작&lt;/strong&gt;할게. &quot;지수함수가 도대체 어떻게 생긴 친구인지&quot; 그 모습부터 익숙해지자는 거야.&lt;/p&gt;
  &lt;p&gt;근데 가볍게 시작한다고 내용이 부실한 건 절대 아니야. 1편에 아빠가 정말 좋아하는 &lt;strong&gt;충격적인 사실&lt;/strong&gt; 하나가 들어가 있거든. 미리 살짝 말해주자면 — &lt;strong&gt;&quot;무한히 긴 구간인데, 넓이는 유한해진다&quot;&lt;/strong&gt; 라는 거야. 이게 뭔 소리야 싶지? 끝까지 읽어봐. 깜짝 놀랄 거야.&lt;/p&gt;
  &lt;p&gt;그리고 마지막엔, 학생들이 시험에서 진짜 많이 헷갈리는 &lt;strong&gt;&quot;세 친구&quot;&lt;/strong&gt; 정리까지 갈 거야. 지수함수랑 원점대칭 함수랑 로그함수 — 셋이 비슷해 보여서 자꾸 헷갈리는 그 친구들 말이야.&lt;/p&gt;
  &lt;p&gt;자, 시작해볼까~&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;지수함수가 뭐냐고?&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;먼저, 지수함수가 뭔지부터 보고 가자.&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_01.png&quot; alt=&quot;지수함수 원본 01&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;지수함수의 모양은 이렇게 생겼어:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_02.png&quot; alt=&quot;지수함수 원본 02&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_03.png&quot; alt=&quot;지수함수 원본 03&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;여기서 한 가지만 더 짚고 갈게. 왜 밑 $a$에 &lt;strong&gt;$a &gt; 0$이고 $a \neq 1$&lt;/strong&gt; 이라는 조건이 붙냐고? 잠깐만 생각해보자.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;$a = 1$이면 어떻게 돼? $1^x$은 $x$가 뭐든 항상 $1$이야. 그냥 상수함수가 돼버려서 &quot;함수&quot;라고 부르기엔 너무 시시해.&lt;/li&gt;
    &lt;li&gt;$a &lt; 0$이면? 예를 들어 $a = -2$일 때 $(-2)^{1/2}$ 같은 게 나오면? 음수의 제곱근... 실수 범위에선 안 돼. 골치 아파져.&lt;/li&gt;
    &lt;li&gt;$a = 0$이면? $0^0$ 같은 게 나오는데 정의가 애매해.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      그래서 깔끔하게 &lt;strong&gt;&quot;양수이면서 1이 아닌 수&quot;&lt;/strong&gt; 로 약속한 거야. 어렵게 생각할 필요 없어 — &quot;잘 정의되도록 하기 위한 약속&quot; 정도로 받아들이면 돼.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;그리고 한 가지 더 — &lt;strong&gt;지수법칙&lt;/strong&gt; 잠깐 짚고 갈게:&lt;/p&gt;
  &lt;div class=&quot;math-highlight&quot;&gt;
    $$
    a^x \cdot a^y = a^{x+y}, \qquad (a^x)^y = a^{xy}, \qquad a^{-x} = \dfrac{1}{a^x}
    $$
  &lt;/div&gt;
  &lt;p&gt;이거 중학교 때 배운 거지? 지수함수에서도 그대로 통해. 특히 세 번째 — $a^{-x} = \dfrac{1}{a^x}$ 이거, 좀 이따 아주 멋진 데서 다시 만날 거야. 기억해둬!&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;그래프 그려보자 — 폭발 + 점근, 그리고 y축 대칭&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;말로만 설명하면 안 와닿잖아. 그래프를 그려보자.&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_04.png&quot; alt=&quot;지수함수 원본 04&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_05.png&quot; alt=&quot;지수함수 원본 05&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;

  &lt;div class=&quot;chalkboard&quot; data-script='[
    {&quot;text&quot;: &quot;y = 2^x  →&quot;, &quot;color&quot;: &quot;#ffffff&quot;},
    {&quot;text&quot;: &quot;오른쪽으로 폭발!&quot;, &quot;color&quot;: &quot;#ff6b6b&quot;},
    {&quot;text&quot;: &quot;왼쪽으론 x축에 한없이 가까이&quot;, &quot;color&quot;: &quot;#feca57&quot;},
    {&quot;text&quot;: &quot; ← 절대 닿지 않는다 (점근선)&quot;, &quot;color&quot;: &quot;#48dbfb&quot;}
  ]'&gt;&lt;/div&gt;

  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_06.png&quot; alt=&quot;지수함수 원본 06&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;어때, 모양 보여? 두 가지 핵심 특징이 한눈에 들어와:&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;오른쪽으론 폭발적으로 커진다.&lt;/strong&gt; $x$가 1만 커져도 $y$값은 2배가 되니까, $x=10$이면 $y=1024$, $x=20$이면 $y$가 100만이 넘어. 진짜 폭발이지. 아빠가 어렸을 때 &quot;한 알이 두 알 되고, 두 알이 네 알 되는 쌀알 이야기&quot; 들어본 적 있어? 그게 바로 지수적 증가야.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;왼쪽으론 x축에 한없이 가까워지지만, 절대 닿지 않는다.&lt;/strong&gt; $x=-2$일 때 $y = 1/4$, $x=-10$이면 $y = 1/1024$. 점점 작아져서 0에 가까워지는데, &lt;strong&gt;절대로 0이 되지는 않아.&lt;/strong&gt; 왜냐고? 2를 아무리 많이 곱하거나 나눠도 0이 될 수는 없잖아? 그래서 x축에 한없이 가까워지기만 해. 이렇게 &lt;strong&gt;함수가 한없이 가까워지지만 닿지 않는 직선&lt;/strong&gt;을 &lt;strong&gt;점근선&lt;/strong&gt;이라고 불러. $y = 2^x$의 점근선은 &lt;strong&gt;x축 (즉 $y=0$)&lt;/strong&gt; 이야.&lt;/p&gt;
  &lt;p&gt;여기서 잠깐 — 한 가지 더 보너스 인사이트 줄게. 학생들이 자주 묻는 질문이야:&lt;/p&gt;
  &lt;div class=&quot;trap-box&quot;&gt;
    &quot;그러면 밑이 1보다 작은 지수함수, 예를 들어 $y = (1/2)^x$는 어떻게 생겼어요?&quot;
  &lt;/div&gt;
  &lt;p&gt;새로 외울 필요 없어! &lt;strong&gt;지수법칙으로 한 방에 정리&lt;/strong&gt;돼.&lt;/p&gt;
  &lt;p&gt;기억나? 위에서 본 $a^{-x} = \dfrac{1}{a^x}$. 이걸 거꾸로 쓰면:&lt;/p&gt;
  &lt;div class=&quot;math-highlight&quot;&gt;
    $$
    \left(\dfrac{1}{2}\right)^x = (2^{-1})^x = 2^{-x}
    $$
  &lt;/div&gt;
  &lt;p&gt;즉 $y = \left(\dfrac{1}{2}\right)^x$는 결국 &lt;strong&gt;$y = 2^{-x}$&lt;/strong&gt; 와 똑같은 함수야! 그런데 $y = 2^{-x}$는 $y = 2^x$에서 $x$ 자리에 $-x$를 넣은 거잖아? &lt;strong&gt;$x$를 $-x$로 바꾸는 것 = y축 대칭&lt;/strong&gt; 이야 (1학기 때 배웠지?).&lt;/p&gt;
  &lt;p&gt;그러니까 &lt;strong&gt;&quot;밑이 1보다 작으면 감소함수&quot;&lt;/strong&gt; 라고 그냥 외우지 마. 그게 아니라 — &lt;strong&gt;&quot;밑이 1보다 작은 지수함수는 밑이 1보다 큰 지수함수의 y축 대칭이라서, 결과적으로 감소함수가 되는 거야.&quot;&lt;/strong&gt; 이렇게 이해해야 진짜야.&lt;/p&gt;
  &lt;p&gt;대박이지? 두 그래프를 따로따로 외우는 게 아니라, 하나의 그래프 + y축 대칭이라는 관계로 이해하는 거야. 이게 1편의 첫 번째 보너스 선물~&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;지수함수의 5대 특징 정리&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 그래프를 봤으니 5대 특징을 깔끔하게 정리해보자. 이거 외워두면 시험에서 1초 컷이야.&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_07.png&quot; alt=&quot;지수함수 원본 07&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_08.png&quot; alt=&quot;지수함수 원본 08&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_09.png&quot; alt=&quot;지수함수 원본 09&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_10.png&quot; alt=&quot;지수함수 원본 10&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_11.png&quot; alt=&quot;지수함수 원본 11&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_12.png&quot; alt=&quot;지수함수 원본 12&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;

  &lt;table class=&quot;table-interactive&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;&lt;th&gt;#&lt;/th&gt;&lt;th&gt;특징&lt;/th&gt;&lt;th&gt;내용&lt;/th&gt;&lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;정의역&lt;/td&gt;&lt;td&gt;모든 실수 ($x \in \mathbb{R}$)&lt;/td&gt;&lt;/tr&gt;
      &lt;tr class=&quot;pattern-found&quot;&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;치역&lt;/td&gt;&lt;td&gt;양의 실수 전체 ($y &gt; 0$) — 절대 0 이하로 안 내려감&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;y절편&lt;/td&gt;&lt;td&gt;항상 $1$ ($a^0 = 1$이니까)&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;점근선&lt;/td&gt;&lt;td&gt;x축 ($y = 0$)&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;단조성&lt;/td&gt;&lt;td&gt;$a &gt; 1$이면 증가, $0 &lt; a &lt; 1$이면 감소 (= 증가함수의 y축 대칭)&lt;/td&gt;&lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

  &lt;p&gt;&lt;strong&gt;여기서 가장 중요한 거 하나만 콕 집자면 — 2번, 치역.&lt;/strong&gt; 지수함수는 &lt;strong&gt;항상 양수&lt;/strong&gt;야. 음수가 되거나 0이 되는 일은 절대 없어. 이거 때문에 이따가 &quot;원점대칭 함수와는 완전히 다른 친구&quot;라는 결론으로 이어져.&lt;/p&gt;
  &lt;p&gt;그리고 한 가지 더 — 이건 1편에서 미리 살짝 던지고 가는 떡밥인데, &lt;strong&gt;&quot;항상 양수&quot;&lt;/strong&gt; 라는 성질 덕분에 지수함수는 &lt;strong&gt;곱해도, 미분해도, 적분해도 모양이 변하지 않는&lt;/strong&gt; 아주 신기한 성질을 가져. 마치 &lt;strong&gt;&quot;마법의 용수철&quot;&lt;/strong&gt; 같아. 이건 다음 2편에서 본격적으로 다룰 거야~&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;무한구간인데 유한값? 진짜야!&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이제 1편의 진짜 하이라이트야. 이거 듣고 아빠는 처음에 너무 신기해서 잠을 못 잤어. 정말이야.&lt;/p&gt;
  &lt;p&gt;질문 하나 할게. $y = 2^x$ 그래프 아래, &lt;strong&gt;마이너스 무한대($-\infty$)에서 0까지&lt;/strong&gt; 영역의 넓이가 얼마일까?&lt;/p&gt;
  &lt;p&gt;&quot;음... 구간이 마이너스 무한대부터 시작이니까, 넓이도 무한이 되겠지?&quot; — 라고 생각하기 쉬워. 근데 &lt;strong&gt;틀렸어!&lt;/strong&gt; 이 넓이는 &lt;strong&gt;유한한 값&lt;/strong&gt;이야. 놀랍지?&lt;/p&gt;
  &lt;p&gt;왜 그럴까? 차근차근 생각해보자. &lt;strong&gt;왼쪽으로 갈수록 곡선이 x축에 점점 달라붙어서, 거의 0이 되어버려.&lt;/strong&gt; $x = -10$일 때 $y$값이 이미 $1/1024$야. $x = -20$이면 $y$값이 거의 $0.0000009$ 정도. &lt;strong&gt;그러니까 왼쪽으로 아무리 길게 늘려도, 곡선 아래 영역은 거의 폭이 0인 종이 한 장에 가까워.&lt;/strong&gt; 무한히 길지만, 두께가 한없이 얇아져서 &lt;strong&gt;넓이의 총합은 유한한 값에 수렴&lt;/strong&gt;하는 거야.&lt;/p&gt;
  &lt;p&gt;이거 진짜 신기하지? 무한대인데 유한이라니. 수학의 마법 같아.&lt;/p&gt;
  &lt;p&gt;실제로 계산해볼까? 부정적분부터 시작하자:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_13.png&quot; alt=&quot;지수함수 원본 13&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;이걸 이용해서 정적분을 해보자. 구간은 마이너스 무한대($-\infty$)에서 0까지:&lt;/p&gt;
  
  &lt;div class=&quot;chalkboard&quot; data-script='[
    {&quot;text&quot;: &quot;-∞ ━━━━━ 0 까지 적분?&quot;, &quot;color&quot;: &quot;#ffffff&quot;},
    {&quot;text&quot;: &quot;구간은 무한! 그런데 넓이는?&quot;, &quot;color&quot;: &quot;#ff6b6b&quot;},
    {&quot;text&quot;: &quot;★ 유한값! 1/ln2 ≈ 1.44 ★&quot;, &quot;color&quot;: &quot;#feca57&quot;}
  ]'&gt;&lt;/div&gt;

  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_14.png&quot; alt=&quot;지수함수 원본 14&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;자, 마이너스 무한대에서 $2^x$가 어떻게 되는지 떠올려보자. 그래프에서 봤지? x가 마이너스로 갈수록 $2^x$는 0에 한없이 가까워져. 그래서:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_15.png&quot; alt=&quot;지수함수 원본 15&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;$\dfrac{1}{\ln 2}$ ≈ 약 1.44&lt;/strong&gt; 라는 유한한 값이 나와! 무한구간인데 1.44라니, 정말 신비롭지?&lt;/p&gt;
  &lt;p&gt;자, 여기서 정말 멋진 게 하나 더 있어. 만약 밑이 자연상수 $e$였다면 어떻게 될까?&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_16.png&quot; alt=&quot;지수함수 원본 16&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;자연상수 $e$는 약 2.718 정도 되는 특별한 수야. 5편에서 본격적으로 다룰 친구인데, 지금은 한 가지 사실만 알고 가자 — &lt;strong&gt;$\ln e = 1$&lt;/strong&gt; 이라는 거.&lt;/p&gt;
  &lt;p&gt;$y = e^x$의 부정적분은:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_17.png&quot; alt=&quot;지수함수 원본 17&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_18.png&quot; alt=&quot;지수함수 원본 18&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;이걸로 정적분을 해보면:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_19.png&quot; alt=&quot;지수함수 원본 19&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;딱! 1이 나와.&lt;/strong&gt; 이게 우연일까? 아니야. 4편에서 이 &quot;1&quot;이라는 숫자가 어떤 의미인지 자세히 풀어줄 거야. 미리 말해두면 — &lt;strong&gt;$e^x$ 위의 점 $(0, 1)$에서, 접선의 기울기도 1이고 그 점까지의 적분값도 1&lt;/strong&gt;이라는, 정말 말도 안 되는 일이 벌어지거든. 기대해줘~&lt;/p&gt;
  &lt;p&gt;아 그리고 한 가지만 더. 이 &quot;무한구간 유한값&quot; 적분, 나중에 너희가 &quot;부분적분&quot;이라는 멋진 기법을 배울 때 핵심 도구로 또 만나게 돼. 그러니까 오늘 잘 봐둬!&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;헷갈리지 마! 비슷하게 생긴 세 친구&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이제 1편 마무리 직전, 정말 중요한 정리 한 번 하자.&lt;/p&gt;
  &lt;p&gt;시험에서 학생들이 진짜 많이 헷갈리는 게 있어. 모양은 좀 비슷해 보이는데 본질은 완전히 다른 &lt;strong&gt;세 친구&lt;/strong&gt;야.&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_20.png&quot; alt=&quot;지수함수 원본 20&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;세 친구는 이렇게야:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;(가) 지수함수&lt;/strong&gt;: $y = 2^x$ (오늘 배운 그 친구)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;(나) 원점대칭 함수&lt;/strong&gt;: $y = -2^{-x} = -(1/2)^x$&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;(다) 로그함수&lt;/strong&gt;: $y = \log_2 x$&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;먼저 지수함수와 그 원점대칭 함수를 같이 보자:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_21.png&quot; alt=&quot;지수함수 원본 21&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;여기서 &lt;strong&gt;(나)가 정말 흥미로워&lt;/strong&gt;. 어떻게 이게 $y = 2^x$의 원점대칭이 되는지, 아빠가 단계별로 보여줄게.&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_22.png&quot; alt=&quot;지수함수 원본 22&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;핵심 아이디어는 이거야 — &lt;strong&gt;원점대칭은 그래프를 원점 $(0, 0)$을 중심으로 180도 뒤집는 거&lt;/strong&gt;거든. 그래서 원래 함수 위의 점 $(x, y)$가 원점대칭 함수에서는 $(-x, -y)$가 되는 거지.&lt;/p&gt;
  &lt;p&gt;$y = 2^x$에서 $y$를 $-y$로, $x$를 $-x$로 바꾸면:&lt;/p&gt;
  &lt;div class=&quot;math-highlight&quot;&gt;
    $$
    -y = 2^{-x} \quad \Rightarrow \quad y = -2^{-x}
    $$
  &lt;/div&gt;
  &lt;p&gt;좋아, 그럼 진짜로 원점대칭이 맞는지 직접 점 찍어서 확인해보자:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_23.png&quot; alt=&quot;지수함수 원본 23&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;깔끔하지? $y = 2^x$의 점 $(1, 2)$는 $y = -2^{-x}$에서 $(-1, -2)$가 돼. 정확히 원점 반대편!&lt;/p&gt;
  &lt;p&gt;그래프로 같이 보면 더 확실해져:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_24.png&quot; alt=&quot;지수함수 원본 24&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;$y = 2^x$가 1·2사분면에 있다면, $y = -2^{-x}$는 3·4사분면에 있어.&lt;/strong&gt; 원점을 가운데 두고 180도 돌려놓은 모양이지. 정말 깔끔한 대칭이야.&lt;/p&gt;
  &lt;p&gt;이제 로그함수도 같이 보자. 로그함수는 어떻게 정의되더라?&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_25.png&quot; alt=&quot;지수함수 원본 25&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;로그함수는 &lt;strong&gt;$y = 2^x$의 역함수&lt;/strong&gt;야. 역함수가 뭐냐면 — $x$와 $y$를 바꾼 함수지. $y = 2^x$에서 $x$와 $y$를 바꾸면 $x = 2^y$가 되는데, 이걸 $y$에 대해 정리한 게 $y = \log_2 x$.&lt;/p&gt;
  &lt;p&gt;특징은 이래:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_26.png&quot; alt=&quot;지수함수 원본 26&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;정의역&lt;/strong&gt;: $x &gt; 0$ (양수만 가능) — 지수함수의 치역이 양수였으니, 역함수는 정의역이 양수.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;치역&lt;/strong&gt;: 모든 실수 — 지수함수의 정의역이 모든 실수였으니, 역함수는 치역이 모든 실수.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;그래프&lt;/strong&gt;: $y = 2^x$를 직선 $y = x$를 기준으로 뒤집은 모양 (역함수의 일반적 성질).&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;이제 세 친구를 모두 한 좌표평면에 올려보자:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_27.png&quot; alt=&quot;지수함수 원본 27&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;다 다르게 생겼지? 이제 표로 정리해줄게:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_28.png&quot; alt=&quot;지수함수 원본 28&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;표로 보면 한 방에 정리되지? 핵심 차이를 다시 정리하면:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_29.png&quot; alt=&quot;지수함수 원본 29&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;자, 마지막으로 실제 값을 넣어서 확인해보자. 같은 $x$값을 넣었을 때 세 함수가 각각 어떤 $y$값을 만드는지:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_30.png&quot; alt=&quot;지수함수 원본 30&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_31.png&quot; alt=&quot;지수함수 원본 31&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_32.png&quot; alt=&quot;지수함수 원본 32&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;차이가 명확하게 보여? 한 줄로 요약하면 이렇게야:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;지수함수&lt;/strong&gt; $y = 2^x$: 정의역이 모든 실수, 치역은 양수만, &lt;strong&gt;1·2사분면&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;원점대칭 함수&lt;/strong&gt; $y = -2^{-x}$: 정의역이 모든 실수, 치역은 음수만, &lt;strong&gt;3·4사분면&lt;/strong&gt; (지수함수의 원점대칭)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;로그함수&lt;/strong&gt; $y = \log_2 x$: 정의역이 양수만, 치역은 모든 실수, &lt;strong&gt;1·4사분면&lt;/strong&gt; (지수함수의 $y = x$ 대칭)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;이 중에서 &lt;strong&gt;(나)와 (다)가 가장 헷갈리는 짝꿍&lt;/strong&gt;이야. 둘 다 그래프가 4사분면(x&gt;0, y&lt;0 영역)을 지나가거든:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;원점대칭 함수&lt;/strong&gt;는 4사분면에서 &lt;strong&gt;점점 내려가&lt;/strong&gt; ($y$가 음수로 더 커짐)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;로그함수&lt;/strong&gt;는 4사분면에서 &lt;strong&gt;점점 올라가&lt;/strong&gt; ($y$가 0에 가까워짐)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;그리고 &lt;strong&gt;결정적 차이&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;원점대칭 함수&lt;/strong&gt;는 &lt;strong&gt;모든 실수 $x$&lt;/strong&gt;에서 정의됨 (-5도 OK)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;로그함수&lt;/strong&gt;는 &lt;strong&gt;$x &gt; 0$에서만&lt;/strong&gt; 정의됨 ($x = -1$ 같은 데서는 그래프가 없음!)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;이 차이 하나만 봐도 시험에서 즉답할 수 있어. 그리고 &lt;strong&gt;&quot;로그함수는 지수함수의 역함수&quot;&lt;/strong&gt; 라는 사실 — 9강에서 본격적으로 다룰 건데, 미리 머릿속에 박아둬!&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;07&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;마무리 — 마법의 용수철로 이어진다&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;오늘 1편에서 챙긴 핵심을 정리해보자:&lt;/p&gt;
  &lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/지수함수_001_v4/original_33.png&quot; alt=&quot;지수함수 원본 33&quot; style=&quot;max-width:100%; height:auto; border-radius:8px; box-shadow:0 4px 12px rgba(0,0,0,0.1); margin:1rem 0;&quot;&gt;&lt;/p&gt;
  &lt;p&gt;크게 다섯 가지를 챙겼지:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;지수함수 $y = a^x$의 모양&lt;/strong&gt; — 오른쪽 폭발, 왼쪽 점근. y절편은 1, 치역은 양수만, 점근선은 x축.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;밑이 1보다 작은 경우&lt;/strong&gt; — 따로 외울 필요 없음. &lt;strong&gt;$y = 2^x$의 y축 대칭&lt;/strong&gt;이 곧 $y = (1/2)^x$니까.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;무한구간인데 유한값&lt;/strong&gt; — $\int_{-\infty}^{0} a^x\, dx = \dfrac{1}{\ln a}$. 왼쪽 꼬리가 너무 얇아져서 가능한 마법! 특히 밑이 $e$이면 정확히 1.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;세 친구 구분&lt;/strong&gt; — 지수함수(1·2사분면) / 원점대칭(3·4사분면) / 로그함수(1·4사분면, 지수의 역함수).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;원점대칭 = y축 대칭 + x축 대칭&lt;/strong&gt; — 두 번의 대칭을 합치면 원점 중심 180도 회전.&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;근데 사실, 오늘 한 거는 &lt;strong&gt;그냥 워밍업&lt;/strong&gt;이야. 1편의 진짜 임무는 &lt;strong&gt;그래프 모양에 익숙해지기&lt;/strong&gt;까지였거든.&lt;/p&gt;
  &lt;p&gt;진짜 신기한 이야기는 &lt;strong&gt;2편부터 시작&lt;/strong&gt;돼. 다음 시간에는 — &lt;strong&gt;&quot;지수함수는 곱해도, 미분해도, 적분해도 자기 모양을 잃지 않는다&quot;&lt;/strong&gt; 는 사실을 본격적으로 보여줄 거야. 아빠가 이걸 처음 알았을 때 &quot;어떻게 이런 일이...?&quot; 하고 충격받았던 그 이야기.&lt;/p&gt;
  &lt;p&gt;비유 하나 미리 던져줄게. 다항함수가 &lt;strong&gt;&quot;찰흙&quot;&lt;/strong&gt; 같다면 — 위아래로 늘이면 모양이 변하고, 미분하면 차수가 깎여 나가니까 — &lt;strong&gt;지수함수는 &quot;마법의 용수철&quot;&lt;/strong&gt; 같아. 아무리 잡아당기고 비틀어도 결국 &lt;strong&gt;자기 자신&lt;/strong&gt;으로 돌아오는 친구야. 신기하지?&lt;/p&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      이 &lt;strong&gt;&quot;마법의 용수철&quot;&lt;/strong&gt; 이라는 단어, 시리즈 내내 자주 들을 거야. 자기 닮음의 끝판왕이거든.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;오늘은 여기까지~ 1편 같이 와줘서 고마워. 2편에서 만나자~  &lt;/p&gt;
&lt;/section&gt;

&lt;!-- 고3 출제자 의도 아코디언 --&gt;
&lt;div class=&quot;accordion&quot;&gt;
  &lt;div class=&quot;accordion-header&quot;&gt;
    &lt;span&gt;  고3 추가: 출제자의 의도 확인하기&lt;/span&gt;
    &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&quot;accordion-body&quot;&gt;
    &lt;div style=&quot;margin-top: 1rem;&quot;&gt;
      &lt;h3 style=&quot;color:var(--color-examiner-dark)&quot;&gt;Q1. 출제자는 왜 이 단원을 냈을까?&lt;/h3&gt;
      &lt;p&gt;지수함수는 &lt;strong&gt;로그함수, 미분, 적분의 전 단원 기초&lt;/strong&gt;라서, 출제자는 &quot;그래프적 직관 + 점근선 처리&quot;가 단단한지를 본단다. 진짜 어려운 문제는 이후 단원에서 나오지만, 출제자는 이 단원의 도입 문제에서 &lt;strong&gt;'기초 도구가 흔들리면 뒤가 다 무너진다'&lt;/strong&gt; 는 걸 알고 일부러 함정을 깔아놔.&lt;/p&gt;

      &lt;h3 style=&quot;color:var(--color-examiner-dark)&quot;&gt;Q2. 핵심 출제 포인트 3가지&lt;/h3&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;strong&gt;점근선의 정확한 위치&lt;/strong&gt; — 밑이 $0&lt;a&lt;1$일 때 점근선이 어디인지 헷갈리게 함&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;무한구간 정적분의 수렴/발산&lt;/strong&gt; — 적분 방향과 점근선 방향이 맞는지 판단&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;지수 vs 원점대칭 vs 로그 매칭&lt;/strong&gt; — y절편·정의역·점근선 3종 즉답 능력&lt;/li&gt;
      &lt;/ol&gt;

      &lt;h3 style=&quot;color:var(--color-examiner-dark)&quot;&gt;Q3. 출제자가 노린 함정&lt;/h3&gt;
      &lt;table class=&quot;table-interactive&quot;&gt;
        &lt;thead&gt;
          &lt;tr&gt;&lt;th&gt;함정&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;th&gt;회피법&lt;/th&gt;&lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;원점대칭 vs x축대칭 혼동&lt;/td&gt;
            &lt;td&gt;&quot;$y=2^x$의 원점대칭은?&quot; 보기에 $y=-2^x$ 두기&lt;/td&gt;
            &lt;td&gt;$y=-2^x$는 x축 대칭일 뿐. 원점대칭은 $y=-2^{-x}$&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;점근선 방향 헷갈리기&lt;/td&gt;
            &lt;td&gt;&quot;$y=(1/2)^x$의 점근선은?&quot; → y축이라고 답함&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;y축 대칭&lt;/strong&gt;을 떠올리면 점근선은 그대로 &lt;strong&gt;x축&lt;/strong&gt;&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;그래프 매칭 4지선다&lt;/td&gt;
            &lt;td&gt;$y=2^x$, $y=-2^x$, $y=2^{-x}$, $y=\log_2 x$ 섞어놓고 매칭&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;y절편·치역·점근선 3종 세트&lt;/strong&gt;로 1초 컷&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr&gt;
            &lt;td&gt;적분 발산/수렴 판단&lt;/td&gt;
            &lt;td&gt;$\int_{0}^{\infty} 2^x dx$와 $\int_{-\infty}^{0} 2^x dx$ 중 수렴은?&lt;/td&gt;
            &lt;td&gt;&lt;strong&gt;점근선 방향 = 수렴 방향&lt;/strong&gt;&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;

      &lt;h3 style=&quot;color:var(--color-examiner-dark)&quot;&gt;Q4. 가능한 변형 예측&lt;/h3&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;strong&gt;원점대칭 vs x축대칭 매칭형&lt;/strong&gt;: &quot;다음 중 $y=2^x$의 원점대칭인 것은?&quot; — $y=-2^x$, $y=2^{-x}$, $y=-2^{-x}$ 보기 매칭&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;수렴 보기 매칭형&lt;/strong&gt;: &quot;다음 중 무한구간 정적분이 수렴하는 것은?&quot;&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;그래프 4지선다&lt;/strong&gt;: 4개 그래프 ↔ 4개 식 매칭&lt;/li&gt;
      &lt;/ul&gt;
      &lt;div class=&quot;trap-box&quot;&gt;
          &lt;strong&gt;핵심 한 줄&lt;/strong&gt;: &lt;strong&gt;&quot;점근선 방향이 수렴 방향이다. 원점대칭은 x축+y축 두 번 대칭이다.&quot;&lt;/strong&gt; 이 두 줄이 1편에서 가장 강력한 무기야.
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>고1수학</category>
      <category>고1수학</category>
      <category>로그함수</category>
      <category>무한구간정적분</category>
      <category>수능수학</category>
      <category>원점대칭함수</category>
      <category>자연상수e</category>
      <category>지수함수</category>
      <category>지수함수그래프</category>
      <category>지수함수와친해지기</category>
      <category>지수함수정적분</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/15</guid>
      <comments>https://fafamath.tistory.com/15#entry15comment</comments>
      <pubDate>Sun, 17 May 2026 20:10:03 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기_005]식은 하나인데,4단으로 변신하는 함수! 4단변신로보트!(feat. 등비수역 극한)</title>
      <link>https://fafamath.tistory.com/13</link>
      <description>&lt;div class=&quot;blog-post-container&quot; style=&quot;max-width: 720px; margin: 0 auto;&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
:root {
  /* ── Primary ── */
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;

  /* ── Accent ── */
  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;

  /* ── Semantic ── */
  --color-success: #10B981;
  --color-danger: #EF4444;
  --color-warning: #F97316;
  --color-info: #6366F1;

  /* ── Neutral ── */
  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0;
  --color-border-strong: #CBD5E1;

  /* ── 폰트 패밀리 ── */
  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;

  /* ── 폰트 크기 ── */
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  /* ── 행간 ── */
  --leading-tight: 1.4;
  --leading-normal: 1.8;
  --leading-relaxed: 2.0;

  /* ── 간격 ── */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;

  /* ── 둥근 모서리 ── */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;

  /* ── 그림자 ── */
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
  --shadow-glow: 0 0 20px rgba(37,99,235,0.15);
}

.blog-post-container {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  line-height: var(--leading-normal);
  color: var(--color-text);
}

/* ── 스크롤 등장 ── */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── 섹션 헤더 ── */
.section-header {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  margin-top: var(--space-12);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 2px solid var(--color-primary);
}

.section-number {
  font-size: var(--text-3xl);
  font-weight: 800;
  color: var(--color-primary);
  opacity: 0.3;
  font-family: var(--font-mono);
}

.section-title {
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
}

/* ── 핵심 메시지 ── */
.key-message {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-accent-bg);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent);
  margin: var(--space-8) 0;
}

.key-message-icon {
  font-size: var(--text-2xl);
  flex-shrink: 0;
}

.key-message-text {
  font-family: var(--font-accent);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--color-text);
  font-weight: 500;
}

/* ── 탭 컴포넌트 ── */
.tabs { margin: var(--space-8) 0; }
.tab-buttons { display: flex; border-bottom: 2px solid var(--color-border); gap: 0; }
.tab-btn { padding: var(--space-3) var(--space-6); border: none; background: none; cursor: pointer; font-weight: 500; color: var(--color-text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s ease; font-size: var(--text-base); }
.tab-btn.active { color: var(--color-primary); border-bottom-color: var(--color-primary); font-weight: 700; }
/* 컬러 적용 */
.tab-btn[data-color=&quot;blue&quot;].active { color: #2563EB; border-bottom-color: #2563EB; }
.tab-btn[data-color=&quot;green&quot;].active { color: #16A34A; border-bottom-color: #16A34A; }
.tab-btn[data-color=&quot;amber&quot;].active { color: #F59E0B; border-bottom-color: #F59E0B; }
.tab-btn[data-color=&quot;red&quot;].active { color: #DC2626; border-bottom-color: #DC2626; }

.tab-btn:hover:not(.active) { color: var(--color-text); background: var(--color-bg-subtle); }
.tab-panel { display: none; padding: var(--space-6) 0; animation: fadeIn 0.3s ease; }
.tab-panel.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* ── 이미지 스타일 ── */
.post-image { max-width: 100%; height: auto; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); display: block; margin: var(--space-6) auto; }
.post-image.formula { max-width: 600px; }
.post-image.graph { max-width: 500px; }
.image-caption { text-align: center; font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: -var(--space-4); margin-bottom: var(--space-8); }

/* ── 수식 강조 ── */
.math-highlight { display: block; padding: var(--space-6) var(--space-8); margin: var(--space-8) 0; background: var(--color-primary-bg); border-left: 4px solid var(--color-primary); border-radius: var(--radius-md); position: relative; overflow: hidden; }
.math-highlight.visible { animation: mathGlow 1.5s ease-out; }
@keyframes mathGlow { 0% { box-shadow: 0 0 0 rgba(37,99,235,0); } 30% { box-shadow: 0 0 30px rgba(37,99,235,0.2); } 100% { box-shadow: var(--shadow-sm); } }
.math-hero { text-align: center; padding: var(--space-8) var(--space-10); margin: var(--space-8) 0; background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF); border: 2px solid var(--color-primary); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }

/* ── 칠판 배경 ── */
.chalkboard { background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-8) var(--space-12); position: relative; overflow: hidden; margin: var(--space-8) 0;}
.chalkboard::before { content: ''; position: absolute; inset: 0; background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;); pointer-events: none; border-radius: var(--radius-lg); }
.chalk-tray { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); display: flex; gap: 12px; opacity: 0.45; }
.chalk-tray-dot { width: 8px; height: 8px; border-radius: 50%; }
.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08), -0.5px 0 1px rgba(235,230,220,0.05); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }
.chalk-row { font-size: 22px; line-height: 2.1; margin-bottom: 0.5rem; position: relative; white-space: pre-wrap; display: flex; flex-wrap: wrap; align-items: baseline; }
.ch { display: inline-block; opacity: 0; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch.on { opacity: 1; }
.chalk-dust { position: absolute; border-radius: 50%; pointer-events: none; animation: dustFall 1.2s ease-out forwards; }
@keyframes dustFall { 0% { opacity: 0.5; transform: translate(0, 0); } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)); } }

p { margin-bottom: var(--space-4); }
&lt;/style&gt;

&lt;!-- 본문 시작 --&gt;

&lt;div class=&quot;reveal&quot;&gt;
  &lt;p&gt;오늘은 합성함수와 친해지기 다섯 번째 시간이야~&lt;/p&gt;
  &lt;p&gt;지금까지 합성함수의 정통을 차근차근 따라왔지?&lt;/p&gt;
  &lt;p&gt;그리는 법 → 미분하기 → 미분가능성으로 꿰매기 → 치환적분으로 거꾸로 풀어내기~&lt;/p&gt;
  &lt;p&gt;오늘은 잠시 쉬어가면서, 아빠가 보고 너무 신기했던 합성함수 하나를 함께 구경해볼까?&lt;/p&gt;
  &lt;p&gt;학습이라기 보단 감상이야. 그러니깐 부담 없이~&lt;/p&gt;
&lt;/div&gt;

&lt;!-- 섹션 1 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;보통 합성함수 vs 오늘의 신기한 함수&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 보통 합성함수 문제는 어떻게 생겼지?&lt;/p&gt;
  &lt;p&gt;대부분 이런 식이야.&lt;/p&gt;
  &lt;p&gt;&quot;x가 -1보다 작은 구간에서는 f(x) = ~~,&lt;br&gt;
  x가 -1보다 크고 1보다 작은 구간에서는 f(x) = ~~,&lt;br&gt;
  x가 1보다 큰 구간에서는 f(x) = ~~&quot;&lt;/p&gt;
  &lt;p&gt;이렇게 &lt;strong&gt;x의 구간을 미리 나눠서, 각 구간마다 함수식을 따로 적어주는 거&lt;/strong&gt;야.&lt;/p&gt;
  &lt;p&gt;그런데 오늘 볼 함수는 좀 달라.&lt;/p&gt;
  &lt;p&gt;이 문제야. 2026학년도 대비 3월 교육청 미적분 28번이란다.&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_001_problem_full.png&quot; alt=&quot;2026 3월 교육청 미적분 28번 문제 원문&quot; class=&quot;post-image&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;2026학년도 3월 교육청 미적분 28번&lt;/div&gt;
  
  &lt;p&gt;문제 안에 함수 g(x)가 이렇게 정의되어 있어.&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_002_gx_definition.png&quot; alt=&quot;g(x) 정의식 확대&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;g(x) 정의식 — 단 하나의 식&lt;/div&gt;
  
  &lt;p&gt;어때? &lt;strong&gt;딱 한 줄. 그것도 단 하나의 식이야.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;구간을 나누지도 않았어. 그냥 x에 어떤 값을 넣든 이 식 하나로 처리한다는 거지.&lt;/p&gt;
  &lt;p&gt;그런데 말이야~ 막상 x 값을 이리 저리 넣어보면…&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &quot;이 단 한 식이 등비수열 극한 때문에 저절로 4가지 모습으로 변신해버려. 이른바 4단 변신로보트~&quot;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;마치 한 대의 로봇이 4단으로 변신하는 것처럼!&lt;/p&gt;
  &lt;p&gt;신기하지?&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 2 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;비밀은 &quot;한 변수씩만 보는 것&quot;&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;이 함수가 좀 헷갈리는 이유가 뭘까?&lt;/p&gt;
  &lt;p&gt;바로 &lt;strong&gt;변수가 두 개라서&lt;/strong&gt;야. x도 변하고, n도 변하니깐.&lt;/p&gt;
  &lt;p&gt;두 개를 동시에 보면 누구나 헷갈려. 그래서 아빠가 비밀 하나 알려줄께~&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &quot;변수가 두 개라 헷갈리는 거야. 한 번에 한 변수씩만 고정해서 보면 패턴이 보여.&quot;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;p&gt;즉, &lt;strong&gt;x 자리에 특정한 숫자를 대입해서 잠시 상수처럼 고정&lt;/strong&gt;시켜놓고, &lt;strong&gt;n만 무한대로 보내보는 거&lt;/strong&gt;야.&lt;/p&gt;
  &lt;p&gt;이걸 3~4번 정도 반복해보면…&lt;/p&gt;
  &lt;p&gt;&quot;아하~ 이런 패턴이구나~&quot;&lt;/p&gt;
  &lt;p&gt;라는 깨달음이 찾아와. 이른바 &lt;strong&gt;아하 모먼트(Aha~ moment)&lt;/strong&gt;~&lt;/p&gt;
  &lt;p&gt;자, 그럼 x를 어떤 값으로 나눠봐야 할까?&lt;/p&gt;
  &lt;p&gt;등비수열의 극한 때문에 4가지로 나누면 돼.&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/formula_001_branches.png&quot; alt=&quot;4단 변신의 분기 조건&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;4단 변신의 분기 조건&lt;/div&gt;
  
  &lt;p&gt;이렇게 4가지! 자, 하나씩 시뮬레이션~&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 3 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;4단 변신 시뮬레이션 — ①, ②, ③&lt;/h2&gt;
  &lt;/div&gt;
  
  &lt;div class=&quot;tabs&quot;&gt;
    &lt;div class=&quot;tab-buttons&quot;&gt;
      &lt;button class=&quot;tab-btn active&quot; data-tab=&quot;tab1&quot; data-color=&quot;blue&quot;&gt;경우 ① |x| &amp;gt; 1&lt;/button&gt;
      &lt;button class=&quot;tab-btn&quot; data-tab=&quot;tab2&quot; data-color=&quot;green&quot;&gt;경우 ② |x| &amp;lt; 1&lt;/button&gt;
      &lt;button class=&quot;tab-btn&quot; data-tab=&quot;tab3&quot; data-color=&quot;amber&quot;&gt;경우 ③ x = 1&lt;/button&gt;
    &lt;/div&gt;
    
    &lt;div id=&quot;tab1&quot; class=&quot;tab-panel active&quot;&gt;
      &lt;p&gt;x의 절댓값이 1보다 크면, n이 무한대로 갈 때 x^n과 x^(2n)은 어떻게 될까?&lt;/p&gt;
      &lt;p&gt;당연히 매우 매우 커지지!&lt;/p&gt;
      &lt;p&gt;그래서 분자와 분모에서 가장 큰 항인 x^(2n)을 기준으로 정리하면…&lt;/p&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_003_case1_abs_greater.png&quot; alt=&quot;경우 1 시뮬레이션 결과&quot; class=&quot;post-image formula&quot;&gt;
      &lt;div class=&quot;image-caption&quot;&gt;경우 1 : |x| &amp;gt; 1 → 2x²&lt;/div&gt;
      &lt;p&gt;결국 &lt;strong&gt;g(x) = 2x²&lt;/strong&gt; 가 돼.&lt;/p&gt;
      &lt;p&gt;어? &lt;strong&gt;갑자기 난데없이 2차함수가 나오네~&lt;/strong&gt; 신기하다~&lt;/p&gt;
    &lt;/div&gt;
    
    &lt;div id=&quot;tab2&quot; class=&quot;tab-panel&quot;&gt;
      &lt;p&gt;이번엔 x의 절댓값이 1보다 작은 경우. n이 무한대로 갈 때 x^n과 x^(2n)은? 0으로 한없이 가까워지지.&lt;/p&gt;
      &lt;p&gt;그래서 이번엔 분자·분모에서 &lt;strong&gt;상수항(=0이 안 되는 항)이 가장 중요해져&lt;/strong&gt;.&lt;/p&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_004_case2_abs_less.png&quot; alt=&quot;경우 2 시뮬레이션 결과&quot; class=&quot;post-image formula&quot;&gt;
      &lt;div class=&quot;image-caption&quot;&gt;경우 2 : |x| &amp;lt; 1 → f(x)&lt;/div&gt;
      &lt;p&gt;결국 &lt;strong&gt;g(x) = f(x)&lt;/strong&gt; 가 돼.&lt;/p&gt;
      &lt;p&gt;&lt;strong&gt;우와~ 이번엔 f(x)가 그대로 나오는구나~&lt;/strong&gt;&lt;/p&gt;
    &lt;/div&gt;
    
    &lt;div id=&quot;tab3&quot; class=&quot;tab-panel&quot;&gt;
      &lt;p&gt;x = 1 이면, 1^n = 1 이고 1^(2n) = 1 이니깐~&lt;/p&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_005_case3_x_equals_1.png&quot; alt=&quot;경우 3 시뮬레이션 결과&quot; class=&quot;post-image formula&quot;&gt;
      &lt;div class=&quot;image-caption&quot;&gt;경우 3 : x = 1&lt;/div&gt;
      &lt;p&gt;값이 (3 + f(1)) / 3 으로 수렴해. f(1) = a + b 이니깐 g(1) = (3 + a + b) / 3.&lt;/p&gt;
      &lt;p&gt;여기까지는 어렵지 않지?&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;p&gt;자, 이제 진짜 신기한 부분이야~&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 4 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;경우 ④ : x = -1 — 진동인데 진동이 사라지는 마법&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;x = -1 일 때를 보자. 이게 오늘의 클라이맥스야~&lt;/p&gt;
  &lt;p&gt;x = -1 이면 (-1)^n 은 어떻게 되지?&lt;/p&gt;
  &lt;p&gt;n이 홀수면 -1이 되고, n이 짝수면 +1이 돼.&lt;/p&gt;
  &lt;p&gt;즉 &lt;strong&gt;n에 따라 값이 왔다 갔다 진동&lt;/strong&gt;해. 정해진 한 값으로 수렴 안 한다는 거야.&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_006_case4_x_equals_minus1.png&quot; alt=&quot;경우 4 진동 분석&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;경우 4 : x = -1 진동 분석&lt;/div&gt;
  
  &lt;p&gt;원칙적으로는 &lt;strong&gt;&quot;수렴하는 극한값을 갖지 못한다&quot;&lt;/strong&gt; 가 정답이야.&lt;/p&gt;
  &lt;p&gt;보통 여기서 끝나야 해.&lt;/p&gt;
  &lt;p&gt;근데~ 잠깐만!&lt;/p&gt;
  &lt;p&gt;문제를 다시 봐봐. 박스 안에 이런 조건이 있었어~&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_007_box_condition.png&quot; alt=&quot;박스 조건&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;박스 조건 (모든 실수 x에 대해 극한 존재)&lt;/div&gt;
  
  &lt;p&gt;&lt;strong&gt;&quot;모든 실수 x에 대해 극한이 존재한다&quot;&lt;/strong&gt; 라고 말이야.&lt;/p&gt;
  &lt;p&gt;모든 실수에는 x = -1 도 당연히 포함되지? 그렇다면 &lt;strong&gt;x = -1 일 때에도 수렴해야 한다&lt;/strong&gt;는 말이잖아!&lt;/p&gt;
  &lt;p&gt;어? 분명히 진동인데 어떻게 수렴해?&lt;/p&gt;
  &lt;p&gt;비밀은 &lt;strong&gt;f(-1) 값&lt;/strong&gt;에 있어.&lt;/p&gt;
  &lt;p&gt;원래는 n이 홀수일 때 g(-1) 과 n이 짝수일 때 g(-1) 이 서로 다른 값이라 진동하는 거였지?&lt;/p&gt;
  &lt;p&gt;그런데 만일~ f(-1) 의 값을 아주아주 특별하게 잡아준다면?&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;두 값이 같아지면서 진동이 사라지고 한 값으로 수렴해버려.&lt;/strong&gt;&lt;/p&gt;
  
  &lt;!-- 칠판 판서 효과 --&gt;
  &lt;div class=&quot;chalkboard&quot; id=&quot;board-1&quot;&gt;
    &lt;div class=&quot;chalk-tray&quot;&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(235,230,220,0.8)&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(252,211,77,0.8)&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(248,113,113,0.8)&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;n 짝수일 때 g(-1) = (3 - a - b) / 3&lt;/p&gt;
  &lt;p&gt;n 홀수일 때 g(-1) = 1 - a - b&lt;/p&gt;
  &lt;p&gt;이 두 식을 같다고 놓고 풀면 &lt;strong&gt;f(-1) = 0&lt;/strong&gt; 이라는 조건이 자동으로 튀어나와.&lt;/p&gt;
  &lt;p&gt;f(-1) = -a - b 였으니깐 a + b = 0 까지 따라 나오지~&lt;/p&gt;
  &lt;p&gt;그리고 f(x)가 원점대칭인 3차함수(ax³ + bx)이므로, &lt;strong&gt;f(1) = 0&lt;/strong&gt; 도 자동으로 따라와.&lt;/p&gt;
  
  &lt;div class=&quot;math-hero&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/formula_002_climax_box.png&quot; alt=&quot;핵심 결론: f(-1)=0, f(1)=0&quot; class=&quot;post-image formula&quot; style=&quot;margin: 0 auto; box-shadow: none;&quot;&gt;
  &lt;/div&gt;
  &lt;div class=&quot;image-caption&quot;&gt;핵심 결론 — f(-1)=0, f(1)=0&lt;/div&gt;
  
  &lt;p&gt;대박이지!&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt;✨&lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &quot;진동인데 진동이 사라지는 마법~ 이건 출제자의 센스가 빛나는 장면이야.&quot;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;p&gt;아빠가 진짜 이 부분이 너무 좋아.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;이건 출제자의 센스가 빛나는 장면이야.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;학생에게 &quot;발산이니 끝~&quot;이라고 단순히 묻지 않고, 박스 조건 한 줄로 &lt;strong&gt;&quot;f(-1) 값을 너가 찾아내봐&quot;&lt;/strong&gt; 라고 우아하게 요구한 거지. 정말 잘 만든 문제야~&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 5 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;짜잔~ 마지막 합쳐진 모습!&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 4가지 경우를 하나씩 시뮬레이션 다 했어.&lt;/p&gt;
  &lt;p&gt;먼저 4단 변신 결과를 한눈에 정리해볼까?&lt;/p&gt;
  
  &lt;div class=&quot;math-highlight visible&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/formula_003_results.png&quot; alt=&quot;4단 변신 결과 한눈 정리&quot; class=&quot;post-image formula&quot; style=&quot;margin: 0 auto; box-shadow: none;&quot;&gt;
  &lt;/div&gt;
  &lt;div class=&quot;image-caption&quot;&gt;4단 변신 결과 한눈 정리&lt;/div&gt;
  
  &lt;p&gt;이걸 따로따로 보면 각각 단순해 보여. 그런데~ 한 그림에 모아 그려보면 더 재미있는 모습이 나와!&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_008_final_graph.png&quot; alt=&quot;최종 g(x) 그래프&quot; class=&quot;post-image graph&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;최종 g(x) 그래프 — 4단 변신의 합쳐진 모습&lt;/div&gt;
  
  &lt;p&gt;봐봐~ &lt;strong&gt;정말 우아하지?&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;|x| &amp;gt; 1 구간에는 2x² 포물선 두 조각이 양쪽에 솟아있고, |x| &amp;lt; 1 구간에는 f(x) 그대로 곡선이 흐르고, x = ±1 위치에는 모두 높이 1로 점이 콕 찍혀있어 (그래프에 그려진 점 (1, 2)는 2x²의 시작 위치인 빈 점이야).&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;단 하나의 식이 만든 그림이라는 게 안 믿겨질 정도야.&lt;/strong&gt;&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &quot;단 하나의 식이 만든 그림이라는 게 안 믿겨질 정도야. 수학의 우아한 일면이지~&quot;
    &lt;/div&gt;
  &lt;/div&gt;
  
  &lt;p&gt;이게 합성함수의 우아한 일면이야. 그동안 1~4편에서 다뤘던 합성함수의 정통과는 또 다른 매력이지~&lt;/p&gt;
  &lt;p&gt;수학이 단지 계산이 아니라, &lt;strong&gt;이런 우아함을 음미하는 학문&lt;/strong&gt;이라는 걸 한 번 더 느끼게 되네~&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 6 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;다음 시간에는~&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;오늘은 여기까지!&lt;/p&gt;
  &lt;p&gt;신기한 g(x) 그래프를 그려봤는데, 사실 이 문제는 여기가 끝이 아니야.&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_005/original_009_meeting_condition.png&quot; alt=&quot;k 조건 문장&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;6편 예고 — 추가 조건&lt;/div&gt;
  
  &lt;p&gt;문제에는 이런 추가 조건도 있었어. &lt;strong&gt;&quot;y = g(x) 의 그래프와 직선 y = k 가 만나는 점의 개수가 1이 되도록 하는 자연수 k 가 존재할 때&quot;&lt;/strong&gt; 라는 거지.&lt;/p&gt;
  &lt;p&gt;이 조건을 사용하면 a, b 값이 완전히 특정돼서 답을 계산할 수 있어.&lt;/p&gt;
  &lt;p&gt;답까지 계산해보는 건 다음 시간(6편)에 해보자~&lt;/p&gt;
  &lt;p&gt;안녕~&lt;/p&gt;
&lt;/section&gt;

&lt;/div&gt;

&lt;script&gt;
// 스크롤 등장 효과
document.addEventListener('DOMContentLoaded', function() {
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
      }
    });
  }, { threshold: 0.15 });

  document.querySelectorAll('.reveal').forEach(function(el) {
    observer.observe(el);
  });
});

// 탭 스크립트
document.addEventListener('DOMContentLoaded', function() {
  document.querySelectorAll('.tab-btn').forEach(function(btn) {
    btn.addEventListener('click', function() {
      var tabGroup = this.closest('.tabs');
      tabGroup.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });
      tabGroup.querySelectorAll('.tab-panel').forEach(function(p) { p.classList.remove('active'); });
      this.classList.add('active');
      tabGroup.querySelector('#' + this.dataset.tab).classList.add('active');
    });
  });
});

// 칠판 판서 효과 관련 스크립트
function makeCharSpans(container, text, size, bold) {
  var spans = [];
  for (var i = 0; i &lt; text.length; i++) {
    var sp = document.createElement('span');
    sp.className = 'ch';
    sp.textContent = text[i];
    if (size) sp.style.fontSize = size + 'px';
    if (bold) sp.style.fontWeight = '700';

    var rot = (Math.random() - 0.5) * 2.5;
    var scl = 0.97 + Math.random() * 0.06;
    var ty = (Math.random() - 0.5) * 1.5;
    sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';

    if (text[i] === ' ') sp.style.width = '0.3em';
    container.appendChild(sp);
    spans.push(sp);
  }
  return spans;
}

function spawnDust(charEl, color, boardId) {
  var board = document.getElementById(boardId);
  var rect = charEl.getBoundingClientRect();
  var bdRect = board.getBoundingClientRect();
  for (var i = 0; i &lt; 2; i++) {
    var d = document.createElement('div');
    d.className = 'chalk-dust';
    var sz = 1.5 + Math.random() * 2;
    d.style.width = sz + 'px';
    d.style.height = sz + 'px';
    d.style.background = color;
    d.style.left = (rect.right - bdRect.left) + 'px';
    d.style.top = (rect.bottom - bdRect.top - 6) + 'px';
    d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
    d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
    board.appendChild(d);
    setTimeout(function(el) {
      return function() { if (el.parentNode) el.parentNode.removeChild(el); };
    }(d), 1300);
  }
}

function animateChars(spans, speed, dustColor, boardId) {
  return new Promise(function(resolve) {
    var i = 0;
    var iv = setInterval(function() {
      if (i &lt; spans.length) {
        spans[i].classList.add('on');
        if (i % 3 === 0 &amp;&amp; spans[i].textContent !== ' ') {
          spawnDust(spans[i], dustColor, boardId);
        }
        i++;
      } else {
        clearInterval(iv);
        resolve();
      }
    }, speed);
  });
}

function runChalkboard(board) {
  var script = [
    { type: 'line', color: 'chalk-w', text: '(-1)^n 은 진동', size: 24 },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-y', text: '→ 그런데 f(-1) = 0 이면?', size: 26, bold: true },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-r', text: '진동이 사라진다!! ★', size: 26, bold: true }
  ];

  var p = Promise.resolve();
  script.forEach(function(cmd) {
    p = p.then(function() {
      if (cmd.type === 'pause') {
        return new Promise(function(r) { setTimeout(r, cmd.ms); });
      } else if (cmd.type === 'line') {
        var row = document.createElement('div');
        row.className = 'chalk-row ' + cmd.color;
        var spans = makeCharSpans(row, cmd.text, cmd.size, cmd.bold);
        board.appendChild(row);
        var dustColor = 'rgba(235,230,220,0.8)';
        if (cmd.color === 'chalk-y') dustColor = 'rgba(252,211,77,0.8)';
        if (cmd.color === 'chalk-r') dustColor = 'rgba(248,113,113,0.8)';
        if (cmd.color === 'chalk-b') dustColor = 'rgba(147,197,253,0.8)';
        return animateChars(spans, 32, dustColor, board.id);
      }
    }).then(function() {
      return new Promise(function(r) { setTimeout(r, 250); });
    });
  });
}

var chalkObserver = new IntersectionObserver(function(entries) {
  entries.forEach(function(entry) {
    if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
      entry.target.dataset.played = 'true';
      runChalkboard(entry.target);
    }
  });
}, { threshold: 0.3 });

document.querySelectorAll('.chalkboard').forEach(function(el) {
  chalkObserver.observe(el);
});
&lt;/script&gt;</description>
      <category>고1수학</category>
      <category>고1수학</category>
      <category>고등수학</category>
      <category>등비수열의극한</category>
      <category>변신로보트</category>
      <category>변호사아빠의수학특강</category>
      <category>분수꼴등비수열</category>
      <category>수학공부</category>
      <category>수학특강</category>
      <category>합성함수</category>
      <category>합성함수와친해지기</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/13</guid>
      <comments>https://fafamath.tistory.com/13#entry13comment</comments>
      <pubDate>Sun, 17 May 2026 08:03:48 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기_006] 2026 3월 교육청 28번을 4단 변신로보트로 완전 정복</title>
      <link>https://fafamath.tistory.com/12</link>
      <description>&lt;div class=&quot;blog-post-container&quot; style=&quot;max-width: 720px; margin: 0 auto;&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
:root {
  /* ── Primary ── */
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;

  /* ── Accent ── */
  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;

  /* ── Semantic ── */
  --color-success: #10B981;
  --color-danger: #DC2626;
  --color-warning: #F97316;
  --color-info: #6366F1;

  /* ── Neutral ── */
  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0;
  --color-border-strong: #CBD5E1;

  /* ── 폰트 패밀리 ── */
  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;

  /* ── 폰트 크기 ── */
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  /* ── 행간 ── */
  --leading-tight: 1.4;
  --leading-normal: 1.8;
  --leading-relaxed: 2.0;

  /* ── 간격 ── */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;

  /* ── 둥근 모서리 ── */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;

  /* ── 그림자 ── */
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
  --shadow-glow: 0 0 20px rgba(37,99,235,0.15);
}

.blog-post-container {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  line-height: var(--leading-normal);
  color: var(--color-text);
}

/* ── 스크롤 등장 ── */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── 섹션 헤더 ── */
.section-header {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  margin-top: var(--space-12);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 2px solid var(--color-primary);
}

.section-number {
  font-size: var(--text-3xl);
  font-weight: 800;
  color: var(--color-primary);
  opacity: 0.3;
  font-family: var(--font-mono);
}

.section-title {
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
}

/* ── 핵심 메시지 ── */
.key-message {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-accent-bg);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent);
  margin: var(--space-8) 0;
}

.key-message-icon {
  font-size: var(--text-2xl);
  flex-shrink: 0;
}

.key-message-text {
  font-family: var(--font-accent);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--color-text);
  font-weight: 500;
}

/* ── 탭 컴포넌트 ── */
.tabs { margin: var(--space-8) 0; }
.tab-buttons { display: flex; border-bottom: 2px solid var(--color-border); gap: 0; }
.tab-btn { padding: var(--space-3) var(--space-6); border: none; background: none; cursor: pointer; font-weight: 500; color: var(--color-text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s ease; font-size: var(--text-base); }
.tab-btn.active { color: var(--color-primary); border-bottom-color: var(--color-primary); font-weight: 700; }
/* 컬러 적용 */
.tab-btn[data-color=&quot;blue&quot;].active { color: #2563EB; border-bottom-color: #2563EB; }
.tab-btn[data-color=&quot;green&quot;].active { color: #16A34A; border-bottom-color: #16A34A; }
.tab-btn[data-color=&quot;amber&quot;].active { color: #F59E0B; border-bottom-color: #F59E0B; }
.tab-btn[data-color=&quot;red&quot;].active { color: #DC2626; border-bottom-color: #DC2626; }

.tab-btn:hover:not(.active) { color: var(--color-text); background: var(--color-bg-subtle); }
.tab-panel { display: none; padding: var(--space-6) 0; animation: fadeIn 0.3s ease; }
.tab-panel.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

/* ── 이미지 스타일 ── */
.post-image { max-width: 100%; height: auto; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); display: block; margin: var(--space-6) auto; }
.post-image.formula { max-width: 600px; }
.post-image.graph { max-width: 500px; }
.image-caption { text-align: center; font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: -var(--space-4); margin-bottom: var(--space-8); }

/* ── 수식 강조 ── */
.math-highlight { display: block; padding: var(--space-6) var(--space-8); margin: var(--space-8) 0; background: var(--color-primary-bg); border-left: 4px solid var(--color-primary); border-radius: var(--radius-md); position: relative; overflow: hidden; }
.math-highlight.visible { animation: mathGlow 1.5s ease-out; }
@keyframes mathGlow { 0% { box-shadow: 0 0 0 rgba(37,99,235,0); } 30% { box-shadow: 0 0 30px rgba(37,99,235,0.2); } 100% { box-shadow: var(--shadow-sm); } }
.math-hero { text-align: center; padding: var(--space-8) var(--space-10); margin: var(--space-8) 0; background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF); border: 2px solid var(--color-primary); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); }

/* ── 칠판 배경 ── */
.chalkboard { background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-8) var(--space-12); position: relative; overflow: hidden; margin: var(--space-8) 0;}
.chalkboard::before { content: ''; position: absolute; inset: 0; background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;); pointer-events: none; border-radius: var(--radius-lg); }
.chalk-tray { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); display: flex; gap: 12px; opacity: 0.45; }
.chalk-tray-dot { width: 8px; height: 8px; border-radius: 50%; }
.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08), -0.5px 0 1px rgba(235,230,220,0.05); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }
.chalk-row { font-size: 22px; line-height: 2.1; margin-bottom: 0.5rem; position: relative; white-space: pre-wrap; display: flex; flex-wrap: wrap; align-items: baseline; }
.ch { display: inline-block; opacity: 0; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch.on { opacity: 1; }
.chalk-dust { position: absolute; border-radius: 50%; pointer-events: none; animation: dustFall 1.2s ease-out forwards; }
@keyframes dustFall { 0% { opacity: 0.5; transform: translate(0, 0); } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)); } }

/* ── 아코디언 컴포넌트 ── */
.accordion { margin: var(--space-8) 0; }
.accordion-item { border: 1px solid var(--color-border); border-radius: var(--radius-md); margin-bottom: var(--space-4); overflow: hidden; }
.accordion-header { background: var(--color-bg-subtle); padding: var(--space-4) var(--space-6); cursor: pointer; display: flex; justify-content: space-between; align-items: center; font-weight: 700; color: var(--color-text); }
.accordion-header:hover { background: var(--color-primary-bg); }
.accordion-content { padding: 0 var(--space-6); max-height: 0; overflow: hidden; transition: max-height 0.3s ease, padding 0.3s ease; background: var(--color-bg); }
.accordion-item.active .accordion-content { padding: var(--space-4) var(--space-6); max-height: 200px; }
.accordion-icon { transition: transform 0.3s ease; }
.accordion-item.active .accordion-icon { transform: rotate(180deg); }

/* 인용 박스 */
.quote-box {
  border-left: 4px solid var(--color-primary);
  background: var(--color-bg-subtle);
  padding: var(--space-4) var(--space-6);
  margin: var(--space-6) 0;
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-style: italic;
  color: var(--color-text-secondary);
}

p { margin-bottom: var(--space-4); }
&lt;/style&gt;

&lt;!-- 본문 시작 --&gt;

&lt;div class=&quot;reveal&quot;&gt;
  &lt;p&gt;오늘은 합성함수와 친해지기 여섯 번째 시간이야~&lt;/p&gt;
  &lt;p&gt;지난 5편 기억나? &lt;strong&gt;&quot;식은 하나인데 4단으로 변신하는 신기한 합성함수&quot;&lt;/strong&gt; 살펴봤지~&lt;/p&gt;
  &lt;p&gt;g(x) 그래프까지 멋지게 그려놓고 끝났는데… 사실 그게 끝이 아니었어.&lt;/p&gt;
  &lt;p&gt;오늘은 &lt;strong&gt;드디어 답까지 계산&lt;/strong&gt;해보자!&lt;/p&gt;

  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_006/original_002_gx_graph.png&quot; alt=&quot;5편에서 완성한 g(x) 그래프&quot; class=&quot;post-image graph&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;5편에서 완성한 g(x) 그래프&lt;/div&gt;

  &lt;p&gt;이 그래프, 다시 봐도 우아하지?&lt;/p&gt;

  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &lt;strong&gt;작은 정정:&lt;/strong&gt; 지난 5편에서 그래프 마지막에 점을 설명하면서 아빠가 살짝 헷갈리게 말했어. &lt;strong&gt;g(-1) = 1, g(1) = 1&lt;/strong&gt; 이 정확한 값이야. 두 채워진 점이 똑같이 높이 1이지~ (그래프에 그려진 점 (1, 2)는 2x²의 시작 위치인 &lt;strong&gt;빈 점&lt;/strong&gt;이야.) 헷갈렸으면 미안~
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;자, 이걸로 정말 끝장을 보자~&lt;/p&gt;
&lt;/div&gt;

&lt;!-- 섹션 1 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;5편 끝났을 때 우리 상태&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;먼저 5편에서 어디까지 왔는지 정리해볼까?&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;f(x)는 ax³ + bx 꼴인 3차함수 (원점대칭)&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;f(-1) = 0, f(1) = 0&lt;/strong&gt; 이라는 조건이 자동으로 따라옴&lt;/li&gt;
    &lt;li&gt;따라서 &lt;strong&gt;a + b = 0&lt;/strong&gt;, 즉 &lt;strong&gt;b = -a&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;여기까지 왔어. 그러니깐 f(x)는 결국 &lt;strong&gt;f(x) = ax³ - ax = ax(x² - 1)&lt;/strong&gt; 꼴.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;근데 아직 a 값을 모르네…&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;미지수가 하나 남았다는 거야. 이 a를 잡으려면 조건 하나가 더 필요해. 자, 그 조건이 뭘까?&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 2 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;추가 조건 — 문제 끝에 숨어있던 한 줄&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;문제 끝에 이런 조건이 있었어.&lt;/p&gt;
  
  &lt;div class=&quot;quote-box&quot;&gt;
    &quot;y = g(x)의 그래프와 직선 y = k가 만나는 점의 개수가 1이 되도록 하는 자연수 k가 존재할 때&quot;
  &lt;/div&gt;
  
  &lt;p&gt;음… 무슨 말이지? 천천히 풀어볼까?&lt;/p&gt;
  &lt;p&gt;직선 y = k 는 &lt;strong&gt;가로선&lt;/strong&gt;이야. k 값에 따라 위로 올라갔다 내려갔다 하는 가로선이지.&lt;/p&gt;
  &lt;p&gt;이 가로선이 g(x) 그래프와 &lt;strong&gt;딱 1번만 만나는 자연수 k가 존재한다&lt;/strong&gt;는 거야.&lt;/p&gt;
  &lt;p&gt;어? 자연수 k 중에 그런 게 있다고?&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 3 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;가로선을 위아래로 움직여보자 ⭐&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이건 그림을 보면서 가야 해. 5편에서 그린 g(x) 그래프 다시 떠올려봐.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;양쪽 끝(|x| &amp;gt; 1)은 &lt;strong&gt;2x² 포물선 두 조각&lt;/strong&gt;, 위로 쭉쭉 솟아오름 (양 끝 시작값은 2부터)&lt;/li&gt;
    &lt;li&gt;가운데(|x| &amp;lt; 1)는 &lt;strong&gt;f(x) 곡선&lt;/strong&gt;, 극대·극소를 가진 3차함수&lt;/li&gt;
    &lt;li&gt;x = ±1 위치엔 &lt;strong&gt;채워진 점 (-1, 1)과 (1, 1)&lt;/strong&gt; 두 개&lt;/li&gt;
  &lt;/ul&gt;
  
  &lt;p&gt;자, 가로선 y = k 를 자연수 k 값으로 올려보면서 만남 횟수를 세어볼까?&lt;/p&gt;
  
  &lt;div class=&quot;math-hero&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_006/formula_001_yk_simulation.png&quot; alt=&quot;y=k 가로선 시뮬레이션&quot; class=&quot;post-image formula&quot; style=&quot;margin: 0 auto; box-shadow: none;&quot;&gt;
  &lt;/div&gt;
  &lt;div class=&quot;image-caption&quot;&gt;y = k 가로선 시뮬레이션 (k=1, 2, 3, 4)&lt;/div&gt;
  
  &lt;p&gt;&lt;strong&gt;k = 1일 때&lt;/strong&gt;: 가로선이 채워진 두 점 (-1, 1)과 (1, 1)을 통과해. 그리고 f(x) 곡선과는 |x|&amp;lt;1 구간에서 2번 만나. 총 &lt;strong&gt;4번&lt;/strong&gt;.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;k = 2일 때&lt;/strong&gt;: 가로선이 (1, 1)과 (-1, 1) 위로 올라갔어. f(x)와는 어떻게 될까? &lt;strong&gt;f(x)의 극대점에서 딱 1번 접한다면&lt;/strong&gt;, 그 1번만 만나~ (2x² 포물선은 |x|&amp;gt;1이라 y=2 위치엔 빈 점이라 안 만남.) 총 &lt;strong&gt;1번&lt;/strong&gt; ★&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;k = 3일 때&lt;/strong&gt;: f(x) 영역과는 안 만남. 2x² 포물선과 양쪽으로 2번 만남. 총 &lt;strong&gt;2번&lt;/strong&gt;.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;k = 4일 때&lt;/strong&gt;: 마찬가지로 2x² 포물선과 2번. 총 &lt;strong&gt;2번&lt;/strong&gt;.&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot; style=&quot;border-left-color: var(--color-warning);&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      자연수 k 중에서 정확히 1번 만나는 건 k = 2 뿐이야~
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 섹션 4 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;결정타 — f(x)의 극댓값은 정확히 2&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, k = 2일 때 정확히 1번 만나려면 어떤 조건이 필요했지?&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;f(x)의 극대점에서 가로선 y = 2 가 정확히 접해야 한다&lt;/strong&gt;는 거였어.&lt;/p&gt;
  &lt;p&gt;다시 말해서 — &lt;strong&gt;f(x)의 극댓값이 정확히 2&lt;/strong&gt;여야 해!&lt;/p&gt;
  &lt;p&gt;만약 극댓값이 2보다 크다면? k=2일 때 가로선이 극대점을 지나가서 f(x)와 2번 만나게 돼. 1번이 아니지.&lt;/p&gt;
  &lt;p&gt;만약 극댓값이 2보다 작다면? k=2일 때 가로선이 f(x)보다 위에 있어서 안 만나. 만남 0번.&lt;/p&gt;
  
  &lt;p&gt;딱 극댓값 = 2 일 때만, k=2 가로선이 극대점에서 접하면서 정확히 1번 만남이 성립하는 거야~&lt;/p&gt;

  &lt;!-- 칠판 판서 효과 --&gt;
  &lt;div class=&quot;chalkboard&quot; id=&quot;board-1&quot;&gt;
    &lt;div class=&quot;chalk-tray&quot;&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(235,230,220,0.8)&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(252,211,77,0.8)&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: rgba(248,113,113,0.8)&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;대박이지~ 추가 조건 한 줄에서 결정적 정보가 빠져나왔어!&lt;/p&gt;

  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt;✨&lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      딱 극댓값 = 2 일 때만, k=2 가로선이 극대점에서 접하면서 정확히 1번 만남이 성립
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 섹션 5 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;a = 3√3 — 미지수 잡기&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;이제 f(x)의 극댓값 = 2 라는 식을 풀어서 a 값을 구해보자.&lt;/p&gt;
  &lt;p&gt;f(x) = ax³ - ax 이니깐, f'(x) = 3ax² - a = a(3x² - 1).&lt;/p&gt;
  &lt;p&gt;f'(x) = 0 이면 x = ±1/√3 = ±√3/3.&lt;/p&gt;
  &lt;p&gt;극댓값은 x = -√3/3 에서 나와 (a &amp;gt; 0 이라고 했으니깐).&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_006/original_003_solution_calculation.png&quot; alt=&quot;f(-√3/3) = 2 풀이로 a = 3√3 도출&quot; class=&quot;post-image formula&quot;&gt;
  &lt;div class=&quot;image-caption&quot;&gt;f(-√3/3) = 2 풀이로 a = 3√3 도출&lt;/div&gt;
  
  &lt;p&gt;f(-√3/3) 을 계산해서 2와 같다고 놓으면…&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;a = 3√3&lt;/strong&gt; 이 딱 나와!&lt;/p&gt;
  &lt;p&gt;그래서 &lt;strong&gt;f(x) = 3√3 · x · (x² - 1)&lt;/strong&gt; 로 완전히 결정됐어~&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 6 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;답 계산 — 4단 변신로보트의 진짜 활용!&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이제 진짜 답을 계산할 차례야.&lt;/p&gt;
  &lt;p&gt;문제가 묻는 건 &lt;strong&gt;g(-1/2) × g(2)&lt;/strong&gt; 이지?&lt;/p&gt;
  &lt;p&gt;여기서 5편에서 배운 &lt;strong&gt;4단 변신로보트&lt;/strong&gt;가 진가를 발휘해!&lt;/p&gt;

  &lt;div class=&quot;tabs&quot;&gt;
    &lt;div class=&quot;tab-buttons&quot;&gt;
      &lt;button class=&quot;tab-btn active&quot; data-tab=&quot;tab-g1&quot; data-color=&quot;green&quot;&gt;g(-1/2) 계산&lt;/button&gt;
      &lt;button class=&quot;tab-btn&quot; data-tab=&quot;tab-g2&quot; data-color=&quot;blue&quot;&gt;g(2) 계산&lt;/button&gt;
    &lt;/div&gt;
    
    &lt;div id=&quot;tab-g1&quot; class=&quot;tab-panel active&quot;&gt;
      &lt;p&gt;-1/2 은 |x| &amp;lt; 1 이지? 그러면 변신 ② 가 적용돼. 즉 &lt;strong&gt;g(-1/2) = f(-1/2)&lt;/strong&gt; 야.&lt;/p&gt;
      &lt;p&gt;f(-1/2) = 3√3 · (-1/2) · ((-1/2)² - 1)&lt;br&gt;= 3√3 · (-1/2) · (-3/4)&lt;br&gt;= &lt;strong&gt;9√3 / 8&lt;/strong&gt;&lt;/p&gt;
    &lt;/div&gt;
    
    &lt;div id=&quot;tab-g2&quot; class=&quot;tab-panel&quot;&gt;
      &lt;p&gt;2는 |x| &amp;gt; 1 이지? 그러면 변신 ① 이 적용돼. 즉 &lt;strong&gt;g(2) = 2 · 2² = 8&lt;/strong&gt;&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;&lt;strong&gt;최종 답:&lt;/strong&gt;&lt;/p&gt;
  &lt;div class=&quot;math-hero&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_006/formula_002_final_answer.png&quot; alt=&quot;최종 답 박스: g(-1/2) × g(2) = 9√3&quot; class=&quot;post-image formula&quot; style=&quot;margin: 0 auto; box-shadow: none;&quot;&gt;
  &lt;/div&gt;
  &lt;div class=&quot;image-caption&quot;&gt;최종 답 박스: g(-1/2) × g(2) = 9√3&lt;/div&gt;
  
  &lt;p&gt;g(-1/2) × g(2) = (9√3 / 8) × 8 = &lt;strong&gt;9√3&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;정답 &lt;strong&gt;5번&lt;/strong&gt;~ 와~ 4단 변신로보트로 깔끔하게 답까지 나왔어!&lt;/p&gt;
&lt;/section&gt;

&lt;!-- 섹션 7 --&gt;
&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;07&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;합성함수와 친해지기 시리즈, 안녕~&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;이렇게 합성함수와 친해지기 시리즈 6편이 모두 끝났네~&lt;/p&gt;
  &lt;p&gt;함께 걸어온 길을 한 번 돌아볼까?&lt;/p&gt;

  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;1편: 합성함수 그리기&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;N축 대신 개미의 눈으로 직관적으로 합성함수 그래프를 그리는 법을 배웠어.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;2편: 합성함수 미분&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;체인룰과 라이프니츠 표기법의 의미를 파헤쳤지!&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;3편: 합성함수 미분가능성&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;부드럽게 꿰매는 법, 첨점과 미분가능성의 관계를 알아봤어.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;4편: 치환적분&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;치환적분이 왜 합성함수 미분의 거울인지 확인해봤지.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;5편: 4단 변신로보트&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;그래프 완성! 단 하나의 식이 만들어낸 우아한 그래프의 매력을 감상했지.&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-item&quot;&gt;
      &lt;div class=&quot;accordion-header&quot;&gt;
        &lt;span&gt;6편: 실전 정복 (오늘!)&lt;/span&gt;
        &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;accordion-content&quot;&gt;
        &lt;p&gt;추가 조건을 해석해서 가로선 시뮬레이션을 하고 미지수를 구한 뒤 최종 답을 냈어!&lt;/p&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;어땠어? 처음엔 합성함수가 좀 낯설었지? 그런데 이제는 좀 친해진 것 같아?&lt;/p&gt;
  &lt;p&gt;특히 오늘 본 2026 3월 교육청 28번 문제는 &lt;strong&gt;출제자의 센스가 정말 빛나는 문제&lt;/strong&gt;였어. 4단 변신로보트, 진동이 사라지는 마법, 그리고 가로선 한 줄로 미지수를 잡는 우아함까지~ 수능 출제진의 내공이 느껴지는 문제였지.&lt;/p&gt;

  &lt;div class=&quot;key-message&quot; style=&quot;border-left-color: var(--color-success); background: #f0fdf4;&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      수학이 단지 답을 맞히는 게 아니라, 이런 우아한 구조를 발견하고 음미하는 학문이라는 걸 다시 한 번 느꼈네~
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;다음 편은 또 재미있는 걸로 준비할께~&lt;/p&gt;
  &lt;p&gt;안녕~&lt;/p&gt;
&lt;/section&gt;

&lt;/div&gt;

&lt;script&gt;
// 스크롤 등장 효과
document.addEventListener('DOMContentLoaded', function() {
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
      }
    });
  }, { threshold: 0.15 });

  document.querySelectorAll('.reveal').forEach(function(el) {
    observer.observe(el);
  });
});

// 탭 스크립트
document.addEventListener('DOMContentLoaded', function() {
  document.querySelectorAll('.tab-btn').forEach(function(btn) {
    btn.addEventListener('click', function() {
      var tabGroup = this.closest('.tabs');
      tabGroup.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });
      tabGroup.querySelectorAll('.tab-panel').forEach(function(p) { p.classList.remove('active'); });
      this.classList.add('active');
      tabGroup.querySelector('#' + this.dataset.tab).classList.add('active');
    });
  });
});

// 아코디언 스크립트
document.addEventListener('DOMContentLoaded', function() {
  document.querySelectorAll('.accordion-header').forEach(function(header) {
    header.addEventListener('click', function() {
      var item = this.parentElement;
      item.classList.toggle('active');
    });
  });
});

// 칠판 판서 효과 관련 스크립트
function makeCharSpans(container, text, size, bold) {
  var spans = [];
  for (var i = 0; i &lt; text.length; i++) {
    var sp = document.createElement('span');
    sp.className = 'ch';
    sp.textContent = text[i];
    if (size) sp.style.fontSize = size + 'px';
    if (bold) sp.style.fontWeight = '700';

    var rot = (Math.random() - 0.5) * 2.5;
    var scl = 0.97 + Math.random() * 0.06;
    var ty = (Math.random() - 0.5) * 1.5;
    sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';

    if (text[i] === ' ') sp.style.width = '0.3em';
    container.appendChild(sp);
    spans.push(sp);
  }
  return spans;
}

function spawnDust(charEl, color, boardId) {
  var board = document.getElementById(boardId);
  var rect = charEl.getBoundingClientRect();
  var bdRect = board.getBoundingClientRect();
  for (var i = 0; i &lt; 2; i++) {
    var d = document.createElement('div');
    d.className = 'chalk-dust';
    var sz = 1.5 + Math.random() * 2;
    d.style.width = sz + 'px';
    d.style.height = sz + 'px';
    d.style.background = color;
    d.style.left = (rect.right - bdRect.left) + 'px';
    d.style.top = (rect.bottom - bdRect.top - 6) + 'px';
    d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
    d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
    board.appendChild(d);
    setTimeout(function(el) {
      return function() { if (el.parentNode) el.parentNode.removeChild(el); };
    }(d), 1300);
  }
}

function animateChars(spans, speed, dustColor, boardId) {
  return new Promise(function(resolve) {
    var i = 0;
    var iv = setInterval(function() {
      if (i &lt; spans.length) {
        spans[i].classList.add('on');
        if (i % 3 === 0 &amp;&amp; spans[i].textContent !== ' ') {
          spawnDust(spans[i], dustColor, boardId);
        }
        i++;
      } else {
        clearInterval(iv);
        resolve();
      }
    }, speed);
  });
}

function runChalkboard(board) {
  var script = [
    { type: 'line', color: 'chalk-w', text: 'k = 2 가로선?', size: 24 },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-y', text: '→ f(x) 극대점에서 딱 접해야', size: 26, bold: true },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-r', text: '극댓값 = 2 !! ★', size: 26, bold: true }
  ];

  var p = Promise.resolve();
  script.forEach(function(cmd) {
    p = p.then(function() {
      if (cmd.type === 'pause') {
        return new Promise(function(r) { setTimeout(r, cmd.ms); });
      } else if (cmd.type === 'line') {
        var row = document.createElement('div');
        row.className = 'chalk-row ' + cmd.color;
        var spans = makeCharSpans(row, cmd.text, cmd.size, cmd.bold);
        board.appendChild(row);
        var dustColor = 'rgba(235,230,220,0.8)';
        if (cmd.color === 'chalk-y') dustColor = 'rgba(252,211,77,0.8)';
        if (cmd.color === 'chalk-r') dustColor = 'rgba(248,113,113,0.8)';
        if (cmd.color === 'chalk-b') dustColor = 'rgba(147,197,253,0.8)';
        return animateChars(spans, 32, dustColor, board.id);
      }
    }).then(function() {
      return new Promise(function(r) { setTimeout(r, 250); });
    });
  });
}

var chalkObserver = new IntersectionObserver(function(entries) {
  entries.forEach(function(entry) {
    if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
      entry.target.dataset.played = 'true';
      runChalkboard(entry.target);
    }
  });
}, { threshold: 0.3 });

document.querySelectorAll('.chalkboard').forEach(function(el) {
  chalkObserver.observe(el);
});
&lt;/script&gt;</description>
      <category>고1수학</category>
      <category>2026학년도3월교육청</category>
      <category>고1수학</category>
      <category>고등수학</category>
      <category>기출문제풀이</category>
      <category>미적분28번</category>
      <category>변신로보트</category>
      <category>변호사아빠의수학특강</category>
      <category>수학특강</category>
      <category>합성함수</category>
      <category>합성함수와친해지기</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/12</guid>
      <comments>https://fafamath.tistory.com/12#entry12comment</comments>
      <pubDate>Sun, 17 May 2026 07:47:58 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기_004] 치환적분, 어렵다고? 합성함수 미분 거꾸로일 뿐이야(featr.라이프니쯔)</title>
      <link>https://fafamath.tistory.com/10</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;[합성함수 4편] 치환적분, 어렵다고? 합성함수 미분 거꾸로일 뿐이야&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script&gt;
  window.MathJax = {
    tex: {inlineMath: [['$', '$']], displayMath: [['$$', '$$']]},
    svg: {fontCache: 'global'}
  };
&lt;/script&gt;
&lt;script id=&quot;MathJax-script&quot; async src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
:root {
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;
  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;
  --color-success: #10B981;
  --color-danger: #EF4444;
  --color-warning: #F97316;
  --color-info: #6366F1;
  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-border: #E2E8F0;
  
  --font-heading: 'Pretendard', sans-serif;
  --font-body: 'Pretendard', sans-serif;
  --font-accent: 'Noto Serif KR', serif;
  
  --space-4: 1rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-12: 3rem;
  --radius-md: 10px;
  --radius-lg: 16px;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --text-lg: 1.125rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --leading-relaxed: 2.0;
}

body {
  font-family: var(--font-body);
  color: var(--color-text);
  line-height: var(--leading-relaxed);
  max-width: 720px;
  margin: 0 auto;
  padding: var(--space-6);
}

.section-divider {
  border: 0;
  border-top: 2px solid var(--color-border);
  margin: var(--space-12) 0;
}

/* Scroll reveal */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Key message */
.key-message {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-accent-bg);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent);
  margin: var(--space-8) 0;
}
.key-message-icon { font-size: var(--text-2xl); flex-shrink: 0; }
.key-message-text {
  font-family: var(--font-accent);
  font-size: var(--text-lg);
  color: var(--color-text);
  font-weight: 600;
}

.math-hero {
  text-align: center;
  padding: var(--space-8);
  background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF);
  border: 2px solid var(--color-primary);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  margin: var(--space-8) 0;
  font-weight: bold;
}

.math-highlight {
  display: block;
  padding: var(--space-6) var(--space-8);
  margin: var(--space-8) 0;
  background: var(--color-primary-bg);
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-md);
}

/* Table */
.table-interactive {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.table-interactive th {
  background: var(--color-primary);
  color: white;
  padding: 12px 16px;
  font-weight: 600;
}
.table-interactive td {
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-border);
  text-align: center;
  transition: transform 0.2s;
}
.table-interactive tbody tr:hover td {
  transform: scale(1.01);
}

/* Chalkboard */
.chalkboard {
  background: linear-gradient(170deg, #2D5016 0%, #243832 40%, #1e3028 100%);
  border-radius: var(--radius-lg);
  padding: var(--space-8) var(--space-8) var(--space-12);
  position: relative;
  overflow: hidden;
  margin: var(--space-8) 0;
  min-height: 150px;
}
.chalkboard::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;);
  pointer-events: none;
}
.chalk-row {
  font-size: 60px;
  text-align: center;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: baseline;
}
.ch {
  display: inline-block;
  opacity: 0;
  font-family: 'Nanum Pen Script', cursive;
  color: #FFE066;
}
.ch.on { opacity: 1; }
.chalk-dust {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  animation: dustFall 1.2s ease-out forwards;
}
@keyframes dustFall {
  0% { opacity: 0.5; transform: translate(0, 0); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)); }
}

h2 {
  color: var(--color-primary-dark);
  border-bottom: 2px solid var(--color-primary);
  padding-bottom: 8px;
  margin-top: 2rem;
}
p {
  margin: 1rem 0;
}
&lt;/style&gt;
&lt;script&gt;
document.addEventListener('DOMContentLoaded', function() {
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
      }
    });
  }, { threshold: 0.15 });

  document.querySelectorAll('.reveal').forEach(function(el) {
    observer.observe(el);
  });
  
  // Chalkboard
  function makeCharSpans(container, text) {
    var spans = [];
    for (var i = 0; i &lt; text.length; i++) {
      var sp = document.createElement('span');
      sp.className = 'ch';
      sp.textContent = text[i];
      var rot = (Math.random() - 0.5) * 4;
      var scl = 0.97 + Math.random() * 0.06;
      sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ')';
      if (text[i] === ' ') sp.style.width = '0.3em';
      container.appendChild(sp);
      spans.push(sp);
    }
    return spans;
  }
  
  function spawnDust(charEl, board) {
    var rect = charEl.getBoundingClientRect();
    var bdRect = board.getBoundingClientRect();
    for (var i = 0; i &lt; 3; i++) {
      var d = document.createElement('div');
      d.className = 'chalk-dust';
      var sz = 1.5 + Math.random() * 2;
      d.style.width = sz + 'px';
      d.style.height = sz + 'px';
      d.style.background = '#FFE066';
      d.style.left = (rect.right - bdRect.left) + 'px';
      d.style.top = (rect.bottom - bdRect.top) + 'px';
      d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
      d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
      board.appendChild(d);
      setTimeout((function(el) { return function() { if(el.parentNode) el.parentNode.removeChild(el); } })(d), 1300);
    }
  }

  function animateChars(spans, board) {
    var i = 0;
    var iv = setInterval(function() {
      if (i &lt; spans.length) {
        spans[i].classList.add('on');
        if (spans[i].textContent !== ' ') spawnDust(spans[i], board);
        i++;
      } else {
        clearInterval(iv);
      }
    }, 150);
  }

  var chalkObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
        entry.target.dataset.played = 'true';
        var row = document.createElement('div');
        row.className = 'chalk-row';
        entry.target.appendChild(row);
        var spans = makeCharSpans(row, &quot;2x · dx = dt&quot;);
        animateChars(spans, entry.target);
      }
    });
  }, { threshold: 0.3 });

  document.querySelectorAll('.chalkboard').forEach(function(el) {
    chalkObserver.observe(el);
  });
});
&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;section class=&quot;reveal&quot;&gt;&lt;h2&gt;  1. 도입 — 치환적분, 어렵다고? 그래도 가보자~&lt;/h2&gt;
&lt;p&gt;오늘은 &lt;strong&gt;치환적분법(2nd)&lt;/strong&gt; 시간이야. 합성함수와 친해지기 시리즈 네 번째 편.&lt;/p&gt;
&lt;p&gt;자~ 아빠가 먼저 솔직히 말할게. 치환적분, &lt;strong&gt;사실 어려워&lt;/strong&gt;. 1등급 학생들도 긴가민가 하는 내용이야. 그래도, 우리 한번 도전해보자~. 아빠가 옆에서 한 단계씩 같이 가줄 테니까 부담 가질 거 없어.&lt;/p&gt;
&lt;p&gt;그리고 미리 살짝 귀띔하면, 오늘의 진짜 메시지는 이거야.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;div class=&quot;key-message&quot;&gt;&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;key-message-text&quot;&gt;&lt;em&gt;&quot;치환적분법은 새로운 기술이 아니야. &lt;strong&gt;2편에서 배운 합성함수 미분을 거꾸로 돌린 것&lt;/strong&gt;뿐이야.&quot;&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;지금은 무슨 말인지 몰라도 돼. 끝까지 따라오면 자연스럽게 보일 거야. 자, 시작하자~&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;  2. 맛보기 예제 — 가장 전형적인 치환적분 문제&lt;/h2&gt;
&lt;p&gt;자, 가장 전형적인 치환적분 문제 하나를 풀어보자~&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_001.png&quot; alt=&quot;formula_001&quot;&gt;&lt;/div&gt;
$$\int 2x(x^2+1)^3 \, dx$$
&lt;p&gt;음... 이거 어떻게 풀까? 그냥 전개하려면? $(x^2+1)^3$을 다 풀어서 $x^6 + 3x^4 + 3x^2 + 1$ 만들고, 거기에 $2x$를 곱하고, 항별로 적분해야 해. 어휴, 손이 아프지~&lt;/p&gt;
&lt;p&gt;근데 치환적분을 쓰면? &lt;strong&gt;$x^2+1$을 통째로 $t$로 바꿔버리는 거야&lt;/strong&gt;. 이게 핵심이야.&lt;/p&gt;
&lt;p&gt;근데 잠깐. 같은 문제를 &lt;strong&gt;두 가지 방법&lt;/strong&gt;으로 풀 거야. 왜? 한국 교과서가 가르치는 방식이 있고, &lt;strong&gt;라이프니츠 본인이 쓰던 정통 방식&lt;/strong&gt;이 따로 있거든. 둘 다 풀어보고 어떤 게 더 깔끔한지 직접 비교해보자.&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;  3. 풀이 1 (한국식) — 일단 학교에서 배운 대로&lt;/h2&gt;
&lt;p&gt;학교에서 배웠을 방식대로 먼저 풀어보자.&lt;/p&gt;
&lt;strong&gt;Step 1.&lt;/strong&gt; 치환할 부분을 정해.
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_002.png&quot; alt=&quot;formula_002&quot;&gt;&lt;/div&gt;
$$t = x^2 + 1$$
&lt;strong&gt;Step 2.&lt;/strong&gt; 양변을 $x$로 미분해.
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_003.png&quot; alt=&quot;formula_003&quot;&gt;&lt;/div&gt;
$$\frac{dt}{dx} = 2x$$
&lt;strong&gt;Step 3.&lt;/strong&gt; $\frac{dt}{dx}$를 &lt;strong&gt;분수처럼 떼서&lt;/strong&gt; $dx$를 옮겨.
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_004.png&quot; alt=&quot;formula_004&quot;&gt;&lt;/div&gt;
$$dt = 2x \cdot dx$$
&lt;p&gt;여기서 학생이 보통 멈칫해. &quot;$\frac{dt}{dx}$가 분수가 아니라고 그랬는데... 왜 분수처럼 떼는 거야?&quot; 하고. 선생님은 보통 &quot;라이프니츠 표기의 편의성이야&quot;라고만 하시지. 학생은 찝찝하지만 그냥 넘어가.&lt;/p&gt;
&lt;strong&gt;Step 4.&lt;/strong&gt; 원래 식에 대입해서 정리.
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_005.png&quot; alt=&quot;formula_005&quot;&gt;&lt;/div&gt;
$$\int 2x(x^2+1)^3 \, dx = \int t^3 \, dt = \frac{t^4}{4} + C = \frac{(x^2+1)^4}{4} + C$$
&lt;p&gt;답은 깔끔하게 나왔어. 그런데 &lt;strong&gt;Step 3에서 &quot;왜 분수처럼 떼도 되지?&quot;라는 찝찝함이 평생 남아&lt;/strong&gt;. 답답하지~? 아빠도 학교 다닐 때 그게 답답했어.&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;⭐ 4. 풀이 2 (라이프니츠 정통식) — 아빠가 강력 추천!&lt;/h2&gt;
&lt;p&gt;이번엔 &lt;strong&gt;라이프니츠 본인의 방식&lt;/strong&gt;으로 풀어보자. 처음엔 좀 낯설어도, 한 번 익숙해지면 훨씬 빠르고 깔끔해. 아빠 피셜.&lt;/p&gt;
&lt;strong&gt;Step 1.&lt;/strong&gt; 치환할 부분을 정해. (여기까진 똑같아)
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_006.png&quot; alt=&quot;formula_006&quot;&gt;&lt;/div&gt;
$$t = x^2 + 1$$
&lt;strong&gt;Step 2.&lt;/strong&gt; 자, 여기가 결정적인 부분이야. &lt;strong&gt;양변을 각자의 변수로 미분&lt;/strong&gt;해.
&lt;br&gt;• 왼쪽 $t$의 변수는 $t$니까 → $t$로 미분 → $dt$
&lt;br&gt;• 오른쪽 $x^2+1$의 변수는 $x$니까 → $x$로 미분 → $2x \cdot dx$
&lt;p&gt;원래 두 변이 등호로 묶여 있었으니, 미분한 결과도 그대로 등호로 묶여.&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_007.png&quot; alt=&quot;formula_007&quot;&gt;&lt;/div&gt;
$$dt = 2x \cdot dx$$
&lt;strong&gt;끝&lt;/strong&gt;. Step 3 없어. 분수 떼고 어쩌고 하는 인위적인 단계가 &lt;strong&gt;사라졌어&lt;/strong&gt;. 처음부터 양변을 각자 미분해서 등식으로 만든 거야. 깔끔하지?
&lt;strong&gt;Step 3.&lt;/strong&gt; 원래 식에 대입.
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_008.png&quot; alt=&quot;formula_008&quot;&gt;&lt;/div&gt;
$$\int 2x(x^2+1)^3 \, dx = \int t^3 \, dt = \frac{(x^2+1)^4}{4} + C$$
&lt;p&gt;답은 똑같이 나와. 그런데 &lt;strong&gt;3단계로 깔끔하게 끝났어&lt;/strong&gt;. 한국식은 4단계였잖아? 찝찝함 없이~.&lt;/p&gt;
&lt;p&gt;자~ 이게 라이프니츠 정통식이야. 등식이 있으면 &lt;strong&gt;&quot;양변을 각자의 변수로 미분&quot;&lt;/strong&gt;, 이것만 기억해. 음함수 미분, 매개변수 미분, 그리고 오늘 배우는 치환적분까지 — 전부 이 한 가지 원리로 풀려.&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;  5. 핵심 — &quot;2x는 사라진 게 아니야. dx와 결혼했어!&quot;&lt;/h2&gt;
&lt;p&gt;자, 이제 진짜 핵심으로 들어가자. 풀이 보면서 이런 의문 들지 않았어?&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;div class=&quot;key-message&quot;&gt;&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;key-message-text&quot;&gt;&lt;em&gt;&quot;$\int 2x(x^2+1)^3 \, dx$가 $\int t^3 \, dt$로 바뀌었는데... &lt;strong&gt;$2x$는 어디 갔어?&lt;/strong&gt; 그냥 사라진 거야? 그래도 돼?&quot;&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;이 질문, &lt;strong&gt;정말 좋은 질문&lt;/strong&gt;이야. 사라진 게 아니거든. 결혼한 거야^^&lt;/p&gt;
&lt;div class=&quot;chalkboard&quot;&gt;&lt;/div&gt;
&lt;p&gt;먼저 $dx$의 정체부터. 대부분 학생들은 $\int f(x) \, dx$에서 $dx$를 &quot;이게 적분의 끝 표시구나&quot; 정도로만 봐. 그런데 라이프니츠는 그렇게 안 봤어.&lt;/p&gt;
&lt;p&gt;라이프니츠 관점에서 $dx$는 &lt;strong&gt;&quot;$x$가 아주 미세하게 변하는 양&quot;&lt;/strong&gt;이야. 그래서 $f(x) \cdot dx$는 &quot;높이 × 미세 가로폭&quot; = 미세한 직사각형의 넓이가 되고, $\int$는 그 미세 직사각형들을 다 더하는 거야. 즉, &lt;strong&gt;$dx$는 표기가 아니라 진짜로 곱해지고 있는 양&lt;/strong&gt;이야. 이걸 받아들이는 게 출발점이야.&lt;/p&gt;
&lt;p&gt;그럼 이제 원래 식을 다시 보자.&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_009.png&quot; alt=&quot;formula_009&quot;&gt;&lt;/div&gt;
$$\int (x^2+1)^3 \cdot 2x \cdot dx = \int \underbrace{(x^2+1)^3}_{t^3} \cdot \underbrace{2x \cdot dx}_{dt}$$
&lt;p&gt;뭐가 보여? &lt;strong&gt;$2x$랑 $dx$가 따로따로 있는 게 아니야&lt;/strong&gt;. 둘이 합쳐서 $dt$ 한 덩어리야. 라이프니츠 정통식에서 $dt = 2x \cdot dx$로 한 번에 구했잖아? 그게 여기서 그대로 쓰여.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;div class=&quot;key-message&quot;&gt;&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;key-message-text&quot;&gt;&lt;strong&gt;그러니까 $2x$는 사라진 게 아니야. $dx$랑 결혼해서 $dt$가 된 거야&lt;/strong&gt;^^&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;마치 $\text{H}_2$랑 $\text{O}$가 합쳐져서 $\text{H}_2\text{O}$가 되듯이. 분자 안에 수소 원자가 안 보인다고 사라진 게 아니지?&lt;/p&gt;
&lt;p&gt;이 한 줄을 평생 기억하면 돼.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;div class=&quot;key-message&quot;&gt;&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;key-message-text&quot;&gt;&lt;strong&gt;&quot;치환적분에서는 $g'(x) \cdot dx$가 통째로 $dt$로 변신한다&quot;&lt;/strong&gt; ⭐&lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;  6. 검산해보자 — 그런데 어, 합성함수 미분이잖아?&lt;/h2&gt;
&lt;p&gt;답이 진짜 맞나? 검산해보자. 적분의 검산은 미분이야. 답을 미분해서 원래 식이 나오면 맞는 거지.&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_010.png&quot; alt=&quot;formula_010&quot;&gt;&lt;/div&gt;
$$\frac{d}{dx}\left[\frac{(x^2+1)^4}{4}\right] = \frac{4(x^2+1)^3 \cdot 2x}{4} = (x^2+1)^3 \cdot 2x$$
&lt;p&gt;오~ 원래 식이랑 정확히 같지? 검산 성공!&lt;/p&gt;
&lt;p&gt;근데 잠깐. 이 미분 과정 어디서 본 적 있지 않아? &lt;strong&gt;$\frac{(x^2+1)^4}{4}$를 미분했더니 $(x^2+1)^3 \cdot 2x$가 나왔어&lt;/strong&gt;. 이거... &lt;strong&gt;2편에서 배운 합성함수 미분&lt;/strong&gt;이잖아?&lt;/p&gt;
&lt;p&gt;합성함수 미분: $\frac{d}{dx} F(g(x)) = f(g(x)) \cdot g'(x)$&lt;/p&gt;
&lt;p&gt;여기서 $g(x) = x^2+1$, $g'(x) = 2x$. 똑같지?&lt;/p&gt;
&lt;p&gt;그래서 결론은 이거야.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;div class=&quot;key-message&quot;&gt;&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;key-message-text&quot;&gt;&lt;strong&gt;치환적분 = 합성함수 미분의 거울&lt;/strong&gt;  &lt;/div&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;치환적분이 새로운 기술이 아니야. &lt;strong&gt;2편에서 배운 합성함수 미분을 거꾸로 돌린 것&lt;/strong&gt;일 뿐이야. 거울에 비친 모습이라고 보면 돼. 도입에서 말한 진짜 메시지가 바로 이거야.&lt;/p&gt;
&lt;p&gt;2편 다시 한번 펼쳐봐. 4편이 그걸 거꾸로 한 거란 게 보일 거야.&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;✨ 7. 마법은 언제 일어나? — $g'(x) \cdot dx$가 있을 때만&lt;/h2&gt;
&lt;p&gt;근데 한 가지 더. 치환적분이 마법처럼 깔끔히 풀린 건 사실 &lt;strong&gt;운이 좋아서&lt;/strong&gt;야. 어떤 운? 식 안에 $2x$가 마침 들어있었거든.&lt;/p&gt;
&lt;p&gt;만약에 누가 이 문제를 줬다고 해봐.&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_011.png&quot; alt=&quot;formula_011&quot;&gt;&lt;/div&gt;
$$\int (x^2+1)^3 \, dx \quad \text{(앞에 }2x\text{가 없어!)}$$
&lt;p&gt;학생: &quot;어? 그럼 $t = x^2+1$로 치환하면 되겠네!&quot;&lt;/p&gt;
&lt;p&gt;해보자. $dt = 2x \cdot dx$니까 $dx = \frac{dt}{2x}$. 대입하면:&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_012.png&quot; alt=&quot;formula_012&quot;&gt;&lt;/div&gt;
$$\int t^3 \cdot \frac{dt}{2x}$$
&lt;p&gt;어? &lt;strong&gt;$2x$가 분모에 남아버려&lt;/strong&gt;. 그리고 이건 $t$로만 표현할 수도 없어. 막혔어. 이런 건 치환적분으로 안 돼.&lt;/p&gt;
&lt;p&gt;그러니까 치환적분이 &quot;마법처럼&quot; 작동하려면, &lt;strong&gt;원래 식 안에 $g'(x) \cdot dx$가 통째로 들어 있어야 해&lt;/strong&gt;. 그게 있어야 $dt$로 깔끔히 바뀌거든.&lt;/p&gt;
&lt;p&gt;치환적분의 기본형은 이거야.&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_013.png&quot; alt=&quot;formula_013&quot;&gt;&lt;/div&gt;
$$\int f(g(x)) \cdot g'(x) \, dx = \int f(t) \, dt \quad (\text{단, } t = g(x))$$
&lt;p&gt;문제 보고 &lt;em&gt;&quot;이거 치환이 통할까?&quot;&lt;/em&gt; 판단할 때, 식 안에 &lt;strong&gt;합성함수 안쪽 $g(x)$의 도함수 $g'(x)$가 끼워져 있는지&lt;/strong&gt; 확인해. 있으면 치환적분, 없으면 다른 방법(부분적분 또는 직접 전개).&lt;/p&gt;
&lt;/section&gt;&lt;hr class=&quot;section-divider&quot;&gt;&lt;section class=&quot;reveal&quot;&gt;
&lt;h2&gt;  8. 마무리 — 2:2 데이트, 진짜 커플은 따로 있어!&lt;/h2&gt;
&lt;p&gt;자~ 정리하자. 오늘 핵심은 두 줄이야.&lt;/p&gt;
&lt;strong&gt;첫째&lt;/strong&gt;, 라이프니츠 정통식: &lt;strong&gt;&quot;등식 양변을 각자의 변수로 미분&quot;&lt;/strong&gt;. 음함수, 매개변수, 치환적분 다 같은 원리.
&lt;strong&gt;둘째&lt;/strong&gt;, 치환적분의 정체: &lt;strong&gt;합성함수 미분의 거울&lt;/strong&gt;. $g'(x) \cdot dx$가 통째로 $dt$로 변신.
&lt;p&gt;여기서 아빠가 한 가지 더 짚어볼게. 적분법에는 또 하나 친구가 있지? &lt;strong&gt;부분적분법&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;치환적분법은 어디서 왔다고? &lt;strong&gt;합성함수 미분에서&lt;/strong&gt; 왔어. 그럼 부분적분법은? &lt;strong&gt;곱미분&lt;/strong&gt;에서 왔지. (이건 22강에서 본격적으로 다룰 거야)&lt;/p&gt;
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_014.png&quot; alt=&quot;formula_014&quot;&gt;&lt;/div&gt;
$$\text{부분적분} \longleftrightarrow \text{곱미분: } (fg)' = f'g + fg'$$
&lt;div style=&quot;text-align:center; margin: 2rem 0;&quot;&gt;&lt;img style=&quot;max-width: 100%; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1);&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_004/formula_015.png&quot; alt=&quot;formula_015&quot;&gt;&lt;/div&gt;
$$\text{치환적분} \longleftrightarrow \text{합성함수 미분: } (F \circ g)' = f(g) \cdot g'$$
&lt;p&gt;표로 정리하면 이렇게 돼.&lt;/p&gt;

&lt;div style=&quot;overflow-x: auto;&quot;&gt;
&lt;table class=&quot;table-interactive couple-table&quot; style=&quot;margin: 2rem 0;&quot;&gt;
  &lt;thead&gt;
    &lt;tr&gt;&lt;th&gt;적분법&lt;/th&gt;&lt;th&gt;진짜 짝(커플)&lt;/th&gt;&lt;th&gt;짝꿍 함수&lt;/th&gt;&lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr style=&quot;background:#EFF6FF&quot;&gt;
      &lt;td&gt;&lt;b&gt;치환적분&lt;/b&gt;&lt;/td&gt;
      &lt;td&gt;&lt;b&gt;합성함수 미분&lt;/b&gt; (F∘g)' = f(g)·g'&lt;/td&gt;
      &lt;td&gt;합성함수&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr style=&quot;background:#FEF3C7&quot;&gt;
      &lt;td&gt;&lt;b&gt;부분적분&lt;/b&gt;&lt;/td&gt;
      &lt;td&gt;&lt;b&gt;곱미분&lt;/b&gt; (fg)' = f'g + fg'&lt;/td&gt;
      &lt;td&gt;곱함수&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;그래서 이 네 명이 자주 같이 다녀. &lt;em&gt;&quot;치환적분 + 부분적분&quot;&lt;/em&gt;이 짝지어 나오면, 뒤에는 &lt;em&gt;&quot;합성함수 미분 + 곱미분&quot;&lt;/em&gt;이 받쳐주고 있는 거야. 말하자면 &lt;strong&gt;2:2 데이트&lt;/strong&gt; 같은 거지^^&lt;/p&gt;
&lt;p&gt;근데 헷갈리면 안 돼. &lt;strong&gt;치환적분의 진짜 짝은 합성함수 미분이고, 부분적분의 진짜 짝은 곱미분이야&lt;/strong&gt;. 네 명이 함께 다녀도, 진짜 커플은 따로 있어^^  &lt;/p&gt;
&lt;p&gt;여기까지 따라왔으면 정말 잘한 거야. 1등급도 헷갈리는 부분을 끝까지 봤잖아? 다음 5편에서는 &lt;strong&gt;분수꼴 등비수열의 극한이 합성함수를 어떻게 변신로보트처럼 표현하는지&lt;/strong&gt; 다뤄볼게. 또 만나~&lt;/p&gt;&lt;/section&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>고1수학</category>
      <category>고1수학</category>
      <category>라이프니츠</category>
      <category>라이프니츠표기법</category>
      <category>미적분</category>
      <category>부분적분</category>
      <category>수학공부</category>
      <category>치환적분</category>
      <category>치환적분법</category>
      <category>합성함수</category>
      <category>합성함수미분</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/10</guid>
      <comments>https://fafamath.tistory.com/10#entry10comment</comments>
      <pubDate>Sat, 16 May 2026 19:45:29 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기_003] 합성함수 미분가능성, 꿰매기와 이어붙이기로 구분하면 쉽다</title>
      <link>https://fafamath.tistory.com/7</link>
      <description>&lt;style&gt;
/* CSS based on CLAUDE.md */
:root {
  --color-primary: #2563EB; --color-primary-light: #3B82F6; --color-primary-dark: #1D4ED8; --color-primary-bg: #EFF6FF;
  --color-accent: #F59E0B; --color-accent-light: #FCD34D; --color-accent-dark: #D97706; --color-accent-bg: #FFFBEB;
  --color-success: #10B981; --color-danger: #EF4444; --color-warning: #F97316; --color-info: #6366F1;
  --color-text: #1E293B; --color-text-secondary: #64748B; --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF; --color-bg-subtle: #F8FAFC; --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0; --color-border-strong: #CBD5E1;
  --color-examiner: #7C3AED; --color-examiner-light: #8B5CF6; --color-examiner-bg: #F5F3FF;
  --color-trap: #DC2626; --color-trap-bg: #FEF2F2;
  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;
  --text-xs: 0.75rem; --text-sm: 0.875rem; --text-base: 1rem; --text-lg: 1.125rem;
  --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 1.875rem; --text-4xl: 2.25rem;
  --leading-tight: 1.4; --leading-normal: 1.8; --leading-relaxed: 2.0;
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem; --space-20: 5rem;
  --content-width: 720px; --content-padding: var(--space-6);
  --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-xl: 24px;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08); --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
}
.post-container { font-family: var(--font-body); color: var(--color-text); line-height: var(--leading-normal); max-width: var(--content-width); margin: 0 auto; padding: 0 var(--content-padding); }
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 700; line-height: var(--leading-tight); color: var(--color-text); }
h2 { font-size: var(--text-2xl); margin-bottom: var(--space-6); }
h3 { font-size: var(--text-xl); margin-top: var(--space-8); margin-bottom: var(--space-4); }
p { margin-bottom: var(--space-4); }
a { color: var(--color-primary); text-decoration: none; font-weight: 500; }
a:hover { text-decoration: underline; }
img { max-width: 100%; height: auto; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); display: block; margin: 0 auto; }
.img-caption { text-align: center; font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: var(--space-2); margin-bottom: var(--space-8); }
.strong-accent { color: var(--color-accent-dark); font-weight: 700; }
.strong-danger { color: var(--color-danger); font-weight: 700; }
.text-center { text-align: center; }

/* Reveal Animation */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; } .reveal-delay-2 { transition-delay: 0.2s; }

/* Key Message */
.key-message { display: flex; gap: var(--space-4); padding: var(--space-6); background: var(--color-accent-bg); border-radius: var(--radius-lg); border-left: 4px solid var(--color-accent); margin: var(--space-8) 0; }
.key-message-icon { font-size: var(--text-2xl); flex-shrink: 0; }
.key-message-text { font-family: var(--font-accent); font-size: var(--text-lg); line-height: var(--leading-relaxed); color: var(--color-text); font-weight: 500; }

/* Examiner Block */
.examiner-block { padding: var(--space-6); background: var(--color-examiner-bg); border-radius: var(--radius-lg); border-left: 4px solid var(--color-examiner); margin: var(--space-6) 0; }
.examiner-block-title { font-weight: 700; color: var(--color-examiner); margin-bottom: var(--space-2); }

/* Math Hero */
.math-hero { text-align: center; padding: var(--space-8) var(--space-10); background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF); border: 2px solid var(--color-primary); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); margin: var(--space-8) 0; overflow-x: auto; }

/* Section Header */
.section-header { display: flex; align-items: baseline; gap: var(--space-4); margin-top: var(--space-16); margin-bottom: var(--space-8); padding-bottom: var(--space-4); border-bottom: 2px solid var(--color-primary); }
.section-number { font-size: var(--text-3xl); font-weight: 800; color: var(--color-primary); opacity: 0.3; font-family: var(--font-mono); }
.section-title { font-size: var(--text-2xl); font-weight: 700; color: var(--color-text); margin: 0; }

/* Interactive Table */
.table-interactive { width: 100%; border-collapse: separate; border-spacing: 0; border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm); margin: var(--space-8) 0; }
.table-interactive th { background: var(--color-primary); color: white; padding: var(--space-3) var(--space-4); font-weight: 600; text-align: center; }
.table-interactive td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--color-border); transition: background 0.2s ease, transform 0.2s ease; text-align: center; }
.table-interactive tbody tr:hover td { background: var(--color-primary-bg); transform: scale(1.01); }
.table-interactive th.col-sew { background-color: #16A34A; }
.table-interactive th.col-join { background-color: #7C3AED; }

/* Series Nav */
.series-nav { display: flex; justify-content: center; gap: var(--space-4); background: var(--color-bg-subtle); padding: var(--space-4); border-radius: var(--radius-md); font-weight: 600; font-size: var(--text-sm); margin-bottom: var(--space-8); }

/* Chalkboard */
.chalkboard { background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-8) var(--space-12); position: relative; overflow: hidden; margin: var(--space-8) 0; }
.chalkboard::before { content: ''; position: absolute; inset: 0; background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;); pointer-events: none; border-radius: var(--radius-lg); }
.chalk-tray { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); display: flex; gap: 12px; opacity: 0.45; }
.chalk-tray-dot { width: 8px; height: 8px; border-radius: 50%; }
.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }
.chalk-row { font-size: 24px; line-height: 2.1; margin-bottom: 0.5rem; position: relative; white-space: pre-wrap; display: flex; flex-wrap: wrap; align-items: baseline; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; justify-content: center; }
.ch { display: inline-block; opacity: 0; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch.on { opacity: 1; transition: opacity 0.1s; }
.chalk-underline { text-decoration: underline; text-decoration-style: solid; text-decoration-color: inherit; }
.chalk-box { border: 2.5px dashed rgba(147, 197, 253, 0.6); border-radius: 10px; padding: 0.5rem 1rem; display: inline-flex; flex-wrap: wrap; justify-content: center; align-items: baseline; }

/* Sewing &amp; Joining Highlights */
.hl-sew { color: #16A34A; font-weight: 700; }
.hl-join { color: #7C3AED; font-weight: 700; }
&lt;/style&gt;

&lt;script src=&quot;https://polyfill.io/v3/polyfill.min.js?features=es6&quot;&gt;&lt;/script&gt;
&lt;script id=&quot;MathJax-script&quot; async src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;div class=&quot;post-container&quot;&gt;
&lt;!-- Title Header --&gt;
&lt;div class=&quot;text-center reveal&quot; style=&quot;margin-top: 2rem; margin-bottom: 2rem;&quot;&gt;
  &lt;h1 style=&quot;font-size: 2.25rem; color: #1e293b; margin-bottom: 0.5rem;&quot;&gt;합성함수와 친해지기 003&lt;/h1&gt;
  &lt;h3 style=&quot;font-size: 1.25rem; color: #64748b; font-weight: 500; margin-top: 0;&quot;&gt;꺾인 점에서도 매끄러울 수 있다고? 꿰매기와 이어붙이기&lt;/h3&gt;
&lt;/div&gt;

&lt;div class=&quot;series-nav reveal&quot;&gt;
  ← &lt;a href=&quot;https://fafamath.tistory.com/6&quot;&gt;2편 (라이프니츠식 미분)&lt;/a&gt; | &lt;strong&gt;3편&lt;/strong&gt; | 4편 (치환적분) → (Coming Soon)
&lt;/div&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;들어가며 — 1편의 떡밥, 드디어 회수한다&lt;/h2&gt;
  &lt;/div&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      오늘은 합성함수와 친해지기 시리즈 &lt;strong&gt;3편&lt;/strong&gt;이야. 자, 1편에서 아빠가 뭐라고 했지? &quot;꺾인 점은 미분 불가야. 좌미분계수와 우미분계수가 다르니까.&quot; 2편에서는 또 뭐라고 했지? &quot;체인룰은 변화의 릴레이야. f(x)가 휘청이면 q(x)도 따라 휘청여.&quot;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;근데 아빠가 오늘 좀 이상한 이야기를 하나 할게. &lt;strong&gt;&quot;f(x)도 꺾이고 g(x)도 꺾이는데, 둘을 합쳐 놓은 q(x)는 매끄럽다&quot;&lt;/strong&gt; — 이게 가능하다는 거야. 헛!!!! 어떻게? 그게 오늘의 주제야. 이름하여 &lt;span class=&quot;hl-sew&quot;&gt;&quot;꿰매기&quot;&lt;/span&gt;.&lt;/p&gt;

  &lt;p&gt;두 함수의 꺾임이 정확히 반대 방향으로 상쇄될 때, 마치 바느질하듯이 두 함수가 서로의 상처를 꿰매준다.&lt;/p&gt;
  &lt;p&gt;오늘은 이 꿰매기의 정체를 파고들어보고, 마지막엔 2026학년도 3월 학평 22번을 함께 풀어볼 거야. 거기서 &quot;꿰매기&quot;의 쌍둥이 형제 — &lt;span class=&quot;hl-join&quot;&gt;&quot;이어붙이기&quot;&lt;/span&gt; 도 만나게 될 거야. 둘은 비슷해 보이는데 메커니즘이 완전히 달라. 시작하자~&lt;/p&gt;

  &lt;div class=&quot;chalkboard reveal&quot; id=&quot;chalk-1&quot;&gt;
    &lt;div class=&quot;chalk-tray&quot;&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#fff&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#FCD34D&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#F87171&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#93C5FD&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;꿰매기란? — 좌·우 미분계수의 차이가 사라지는 순간&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 가장 단순한 예부터. f(x)와 g(x) 둘 다 x = a에서 꺾이는 함수라고 해보자. 1편에서 우리는 이런 함수들이 &quot;미분 불가&quot;라고 결론 내렸지. 좌미분계수와 우미분계수가 다르니까.&lt;/p&gt;
  &lt;p&gt;근데 잠깐. 이걸 더해보면 어떻게 될까? 즉 &lt;strong&gt;q(x) = f(x) + g(x)&lt;/strong&gt; 의 좌·우 미분계수를 따져보자.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;q의 좌미분계수&lt;/strong&gt;: f의 좌미분계수 + g의 좌미분계수&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;q의 우미분계수&lt;/strong&gt;: f의 우미분계수 + g의 우미분계수&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;자, 이제 핵심. f의 좌·우 미분계수 차이가 +5이고, g의 좌·우 미분계수 차이가 −5라면? q의 좌·우 미분계수 차이는 +5 + (−5) = &lt;strong&gt;0&lt;/strong&gt;. 즉 q는 미분가능해진다는 뜻이야.&lt;/p&gt;

  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/graph_001_sewing_intuition.png&quot; alt=&quot;꿰매기 직관&quot; style=&quot;margin-top:2rem;&quot; /&gt;
  &lt;div class=&quot;img-caption&quot;&gt;f의 차이 +6, g의 차이 −6 → 합치면 0. 꺾임이 사라진다.&lt;/div&gt;

  &lt;div class=&quot;key-message reveal reveal-delay-1&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &lt;strong&gt;꿰매기&lt;/strong&gt;: 두 함수가 같은 점에서 똑같은 크기로, 서로 반대 방향으로 꺾여 있을 때, 합쳐 놓으면 꺾임이 상쇄되어 매끄러워지는 현상.
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;마치 두 함수가 서로 손을 내밀어 상처를 꿰매주는 것처럼 말이야. 이름이 &quot;꿰매기&quot;인 이유야.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;핵심 공식 — &quot;편차 m + n = 0&quot;&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이제 이 직관을 수식 한 줄로 박제해보자. 라이프니츠 정통(2편에서 한참 우려먹었지)을 다시 꺼내자.&lt;/p&gt;
  &lt;p&gt;g(x)가 x = a에서 미분불가능하다는 걸 가장 깔끔하게 표현하는 방법은:&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_001_g_deviation.png&quot; alt=&quot;g의 편차 m&quot; class=&quot;reveal&quot; /&gt;
  &lt;p class=&quot;text-center&quot;&gt;쉽게 말해, &lt;strong&gt;&quot;좌극한 미분계수 k에 편차 m이 보태져서 우극한 미분계수가 된다&quot;&lt;/strong&gt; 는 거야.&lt;/p&gt;

  &lt;p&gt;마찬가지로 f(x)도 같은 점에서 꺾인다면:&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_002_f_deviation.png&quot; alt=&quot;f의 편차 n&quot; class=&quot;reveal&quot; /&gt;
  
  &lt;p&gt;자, 이제 q(x) = f(x) + g(x)의 좌·우 미분계수를 구해보자.&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_003_q_derivatives.png&quot; alt=&quot;q의 좌우 미분계수&quot; class=&quot;reveal&quot; /&gt;
  
  &lt;p&gt;좌·우가 같으려면? &lt;strong&gt;n + m = 0&lt;/strong&gt;! 이게 끝이야.&lt;/p&gt;

  &lt;div class=&quot;math-hero reveal&quot;&gt;
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_004_sewing_condition.png&quot; alt=&quot;꿰매기 핵심 조건&quot; style=&quot;box-shadow:none; border:none; border-radius:0;&quot; /&gt;
  &lt;/div&gt;

  &lt;table class=&quot;table-interactive reveal&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;&lt;th&gt;상황&lt;/th&gt;&lt;th&gt;수식 표현&lt;/th&gt;&lt;th&gt;의미&lt;/th&gt;&lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;&lt;td&gt;g(x)의 꺾임&lt;/td&gt;&lt;td&gt;g'(a⁺) − g'(a⁻) = m&lt;/td&gt;&lt;td&gt;g의 편차 m&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;f(x)의 꺾임&lt;/td&gt;&lt;td&gt;f'(a⁺) − f'(a⁻) = n&lt;/td&gt;&lt;td&gt;f의 편차 n&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;q = f + g가 매끄럽기&lt;/td&gt;&lt;td&gt;&lt;strong&gt;m + n = 0&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;편차가 반대 방향으로 같다&lt;/td&gt;&lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

  &lt;p&gt;말로 풀면 이거야: &lt;strong&gt;&quot;q(x)가 x = a에서 미분가능하려면, g의 좌·우 편차만큼 f의 좌·우 편차가 정확히 반대 방향으로 생기면 된다.&quot;&lt;/strong&gt; 라이프니츠도 이걸 보면 무릎을 탁 칠 거야. 편차의 합 = 0. 한 줄로 미분가능성을 환원해버렸어.&lt;/p&gt;

  &lt;div class=&quot;chalkboard reveal&quot; id=&quot;chalk-2&quot;&gt;
    &lt;div class=&quot;chalk-tray&quot;&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#fff&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#FCD34D&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#F87171&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#93C5FD&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;실전 — 2026학년도 3월 학평 22번&lt;/h2&gt;
  &lt;/div&gt;
  &lt;p&gt;자, 이제 진짜 문제로 가보자. 2025년 3월 26일에 시행된 2026학년도 3월 학력평가 공통 22번. 정답률 5.7%짜리 킬러문제야.&lt;/p&gt;
  
  &lt;div class=&quot;examiner-block reveal&quot;&gt;
    &lt;div class=&quot;examiner-block-title&quot;&gt;[2026학년도 3월 학평 22번]&lt;/div&gt;
    삼차함수 f(x)에 대하여 함수 g(x)를 다음과 같이 정의하자.
    &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_005_problem_g.png&quot; alt=&quot;g(x) 정의&quot; style=&quot;margin:1rem auto; box-shadow:none; border:none; border-radius:0;&quot; /&gt;
    함수 g(x)가 실수 전체의 집합에서 미분가능할 때, &lt;strong&gt;f(−5)&lt;/strong&gt; 의 값을 구하시오. [4점]
  &lt;/div&gt;

  &lt;p&gt;자, 이 문제를 보면 &lt;strong&gt;미분불가능이 발생할 가능성이 있는 점이 두 군데&lt;/strong&gt;야. 어딘 줄 알아?&lt;/p&gt;
  
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/graph_002_problem_g.png&quot; alt=&quot;두 가지 메커니즘 시각화&quot; class=&quot;reveal&quot; /&gt;
  &lt;div class=&quot;img-caption&quot;&gt;x=0(이어붙이기) / x=2(꿰매기) 두 핵심 지점&lt;/div&gt;

  &lt;table class=&quot;table-interactive reveal&quot;&gt;
    &lt;thead&gt;
      &lt;tr&gt;
        &lt;th&gt;구분&lt;/th&gt;
        &lt;th class=&quot;col-sew&quot;&gt;꿰매기&lt;/th&gt;
        &lt;th class=&quot;col-join&quot;&gt;이어붙이기&lt;/th&gt;
      &lt;/tr&gt;
    &lt;/thead&gt;
    &lt;tbody&gt;
      &lt;tr&gt;&lt;td&gt;&lt;strong&gt;발생 원인&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;함수 자체의 꺾임 (절댓값 등)&lt;/td&gt;&lt;td&gt;구간 분리점에서 다른 식이 만남&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;strong&gt;조건&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;두 함수의 편차 m + n = 0&lt;/td&gt;&lt;td&gt;좌·우 식의 값·미분계수 일치&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;strong&gt;본 문제 적용&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;x = 2 (|2x²−8|의 꺾임)&lt;/td&gt;&lt;td&gt;x = 0 (구간 정의의 분리점)&lt;/td&gt;&lt;/tr&gt;
      &lt;tr&gt;&lt;td&gt;&lt;strong&gt;느낌&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;두 상처가 서로 꿰매줌&lt;/td&gt;&lt;td&gt;다른 천 두 장을 매끄럽게 잇기&lt;/td&gt;&lt;/tr&gt;
    &lt;/tbody&gt;
  &lt;/table&gt;

  &lt;h3&gt;4-1. x = 2 — 꿰매기로 해결&lt;/h3&gt;
  &lt;p&gt;먼저 메인 디시 x = 2부터. 우측 식 |f(x)| − |2x² − 8|을 봐. 여기서 |2x² − 8|은 2x² − 8 = 0이 되는 x = ±2에서 꺾여. x = 2 근처를 보면, 2x² − 8이 음수에서 양수로 바뀌니까 절댓값이 풀리면서 꺾임이 발생.&lt;/p&gt;
  &lt;p&gt;x = 2에서 |2x² − 8|의 좌·우 미분계수를 계산해보자. 미분하면 4x인데, 절댓값이 풀리는 방향에 따라 부호가 바뀌어:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;좌미분계수: −4·(2) = −8 (왼쪽에서 음수라 부호 반전)&lt;/li&gt;
    &lt;li&gt;우미분계수: +4·(2) = +8&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;따라서 −|2x² − 8|의 편차는 &lt;strong&gt;(−(+8)) − (−(−8)) = −8 − 8 = −16&lt;/strong&gt; 이야. 즉 g(x)의 −|2x² − 8| 부분이 x = 2에서 편차 −16의 꺾임을 만들어내고 있어.&lt;/p&gt;
  &lt;p&gt;이걸 꿰매려면? &lt;strong&gt;|f(x)|가 x = 2에서 정확히 편차 +16의 꺾임을 만들어줘야 해.&lt;/strong&gt; 그래야 −16 + (+16) = 0이 되어 매끄러워지니까.&lt;/p&gt;
  &lt;p&gt;|f(x)|가 x = 2에서 꺾이려면 &lt;strong&gt;f(2) = 0&lt;/strong&gt; 이어야 해. 그리고 |f(x)|의 좌·우 미분계수 차이가 +16이 되려면, f'(2)의 절댓값의 두 배가 16이어야 하니까 |f'(2)| = 8. 부호까지 맞추면:&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_006_sewing_result.png&quot; alt=&quot;꿰매기 결론&quot; class=&quot;reveal&quot; /&gt;
  
  &lt;h3&gt;4-2. x = 0 — 이어붙이기로 해결 (꿰매기 ❌)&lt;/h3&gt;
  &lt;p&gt;자, 이제 잠깐. &lt;strong&gt;x = 0에서도 미분불가능 가능성이 있어&lt;/strong&gt;. 근데 헛!!! 여기서 일어나는 일은 &lt;strong&gt;꿰매기가 아니야&lt;/strong&gt;. x = 0은 g(x)의 &lt;strong&gt;구간 분리점&lt;/strong&gt;이야. 왼쪽은 −f(x), 오른쪽은 |f(x)| − |2x² − 8|이 만나는 지점. 두 식이 매끄럽게 이어지려면 값과 미분계수가 같아야 해. 이걸 &lt;strong&gt;&quot;이어붙이기&quot;&lt;/strong&gt; 라고 부르자.&lt;/p&gt;
  &lt;p&gt;x = 0에서 이어붙이기 조건을 풀어보자. x = 0 근처에서 우측 식은 |f(x)| − 8.&lt;/p&gt;
  &lt;p&gt;함숫값이 같아야 하니까: &lt;strong&gt;−f(0) = |f(0)| − 8&lt;/strong&gt;. 여기서 f(0) = 4 가 나와.&lt;/p&gt;
  &lt;p&gt;이제 미분계수 일치. x = 0 근처에서 f(0) = 4 &gt; 0이니까 |f(x)| = f(x)야.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;좌측 미분계수: −f'(0)&lt;/li&gt;
    &lt;li&gt;우측 미분계수: f'(0)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;같아야 하니까 −f'(0) = f'(0) → &lt;strong&gt;f'(0) = 0&lt;/strong&gt;.&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_007_joining_result.png&quot; alt=&quot;이어붙이기 결론&quot; class=&quot;reveal&quot; /&gt;

  &lt;h3&gt;4-3. 조건식 4개로 f(x) 결정&lt;/h3&gt;
  &lt;p&gt;조건식 4개 (f(0)=4, f'(0)=0, f(2)=0, f'(2)=−8)를 f(x) = ax³ + bx² + cx + d에 대입해서 풀면:&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_008_final_f.png&quot; alt=&quot;결정된 f(x)&quot; class=&quot;reveal&quot; /&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/graph_003_solution_f.png&quot; alt=&quot;f(x) 시각적 검증&quot; class=&quot;reveal&quot; /&gt;
  
  &lt;p&gt;마지막으로 f(−5)를 계산하면:&lt;/p&gt;
  &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_003/formula_009_answer.png&quot; alt=&quot;최종 정답&quot; class=&quot;reveal&quot; /&gt;
  &lt;p&gt;답은 &lt;strong&gt;154&lt;/strong&gt; 야. 정답률 5.7%? &lt;span class=&quot;hl-sew&quot;&gt;꿰매기&lt;/span&gt;와 &lt;span class=&quot;hl-join&quot;&gt;이어붙이기&lt;/span&gt;를 구분할 줄 알면 그렇게 어렵지 않아. &lt;strong&gt;개미의 눈&lt;/strong&gt;으로 차분히 따라가 보면 길이 보여.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;곱셈 꿰매기? — 한 줄 미리보기&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      꿰매기는 덧셈 합성에만 있는 게 아니야. &lt;strong&gt;곱셈&lt;/strong&gt; 합성으로도 꿰맬 수 있어. 그땐 편차비율 m × n = 1 이어야 해. 기출이 아직 없어서 변별력이 어마어마할 거야. 5편 변신로보트 편에서 다시 만나자.
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;정리 — 꿰매기와 이어붙이기, 다음 편 떡밥&lt;/h2&gt;
  &lt;/div&gt;
  
  &lt;div class=&quot;key-message&quot; style=&quot;margin-bottom:var(--space-4);&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &lt;strong&gt;&lt;span class=&quot;hl-sew&quot;&gt;꿰매기&lt;/span&gt;&lt;/strong&gt;: 두 함수가 같은 점에서 반대 방향으로 똑같이 꺾이면, 합쳐 놓은 함수는 매끄러워진다 — 편차 m + n = 0
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;key-message&quot; style=&quot;margin-top:0;&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;
      &lt;strong&gt;&lt;span class=&quot;hl-join&quot;&gt;이어붙이기&lt;/span&gt;&lt;/strong&gt;: 구간 분리점에서 두 다른 식이 만날 때, 값과 미분계수가 일치해야 매끄럽다 — 메커니즘이 완전히 다름
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;이 두 개를 구분할 줄만 알면 미분가능성 문제는 더 이상 무섭지 않아. 오늘 우리는 두 함수를 꿰매서 매끄럽게 만드는 법을 배웠어. 근데 만약 거꾸로라면? &lt;strong&gt;매끄러운 함수를 일부러 쪼개서 풀어내는&lt;/strong&gt; 방법도 있지 않을까?&lt;/p&gt;

  &lt;p&gt;헛!!!! 그게 바로 &lt;strong&gt;다음 편 — 4편의 주제&lt;/strong&gt;야.&lt;/p&gt;

  &lt;div class=&quot;chalkboard reveal&quot; id=&quot;chalk-3&quot;&gt;
    &lt;div class=&quot;chalk-tray&quot;&gt;
      &lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#fff&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#FCD34D&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#F87171&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#93C5FD&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;series-nav reveal&quot; style=&quot;margin-top: 3rem;&quot;&gt;
    ← &lt;a href=&quot;https://fafamath.tistory.com/6&quot;&gt;2편 (라이프니츠식 미분)&lt;/a&gt; | &lt;strong&gt;3편&lt;/strong&gt; | 4편 (치환적분) → (Coming Soon)
  &lt;/div&gt;
&lt;/section&gt;

&lt;/div&gt;

&lt;script&gt;
// UI Scripts
document.addEventListener('DOMContentLoaded', function() {
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) entry.target.classList.add('visible');
    });
  }, { threshold: 0.15 });
  document.querySelectorAll('.reveal').forEach(function(el) { observer.observe(el); });

  const chalkScripts = {
    'chalk-1': [
      { type: 'line', color: 'chalk-y', text: '&quot;꺾인 점은 미분 불가&quot; → ', size: 28, bold: true, append: [
        { color: 'chalk-y', text: '&quot;그런데?&quot;', bold: true, size: 36 }
      ]}
    ],
    'chalk-2': [
      { type: 'line', color: 'chalk-b', text: 'm + n = 0 → 미분가능!', size: 32, bold: true }
    ],
    'chalk-3': [
      { type: 'line', color: 'chalk-r', text: '⭐ 4편 — 치환적분 = 꿰매기의 거울! ⭐', size: 32, bold: true, underline: true }
    ]
  };

  function makeCharSpans(container, text, size, bold, colorCls) {
    var spans = [];
    var wrapper = document.createElement('span');
    if(colorCls) wrapper.className = colorCls;
    for (var i = 0; i &lt; text.length; i++) {
      var sp = document.createElement('span');
      sp.className = 'ch';
      sp.textContent = text[i];
      if (size) sp.style.fontSize = size + 'px';
      if (bold) sp.style.fontWeight = '700';
      var rot = (Math.random() - 0.5) * 2.5;
      var scl = 0.97 + Math.random() * 0.06;
      var ty = (Math.random() - 0.5) * 1.5;
      sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';
      if (text[i] === ' ') sp.style.width = '0.3em';
      wrapper.appendChild(sp);
      spans.push(sp);
    }
    container.appendChild(wrapper);
    return spans;
  }

  function animateChars(spans, speed) {
    return new Promise(function(resolve) {
      var i = 0;
      var iv = setInterval(function() {
        if (i &lt; spans.length) {
          spans[i].classList.add('on');
          i++;
        } else {
          clearInterval(iv);
          resolve();
        }
      }, speed);
    });
  }

  async function runChalkboard(boardId) {
    var board = document.getElementById(boardId);
    var script = chalkScripts[boardId];
    if (!board || !script) return;
    
    var contentBox = document.createElement('div');
    contentBox.style.position = 'relative';
    contentBox.style.zIndex = '1';
    board.insertBefore(contentBox, board.firstChild);

    for (var j = 0; j &lt; script.length; j++) {
      var cmd = script[j];
      var row = document.createElement('div');
      row.className = 'chalk-row';
      
      var allSpans = [];
      allSpans = allSpans.concat(makeCharSpans(row, cmd.text, cmd.size, cmd.bold, cmd.color));
      
      if(cmd.append) {
        for(var k=0; k&lt;cmd.append.length; k++) {
          allSpans = allSpans.concat(makeCharSpans(row, cmd.append[k].text, cmd.size, cmd.append[k].bold, cmd.append[k].color));
        }
      }

      if (boardId === 'chalk-2') {
        var boxWrapper = document.createElement('div');
        boxWrapper.className = 'chalk-box';
        boxWrapper.appendChild(row);
        contentBox.appendChild(boxWrapper);
      } else {
        if(cmd.underline) {
          row.classList.add('chalk-underline');
        }
        contentBox.appendChild(row);
      }
      
      await animateChars(allSpans, 40);
      await new Promise(r =&gt; setTimeout(r, 250));
    }
  }

  var chalkObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
        entry.target.dataset.played = 'true';
        runChalkboard(entry.target.id);
      }
    });
  }, { threshold: 0.3 });

  document.querySelectorAll('.chalkboard').forEach(function(el) {
    chalkObserver.observe(el);
  });
});
&lt;/script&gt;</description>
      <category>고1수학</category>
      <category>2026학평</category>
      <category>3월학평22번</category>
      <category>고등수학</category>
      <category>미분가능성</category>
      <category>변호사아빠</category>
      <category>수능수학</category>
      <category>수학블로그</category>
      <category>절댓값함수</category>
      <category>킬러문제</category>
      <category>합성함수</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/7</guid>
      <comments>https://fafamath.tistory.com/7#entry7comment</comments>
      <pubDate>Tue, 5 May 2026 17:34:02 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기 002 ] 합성함수 미분, 라이프니츠 정통 사용법으로!</title>
      <link>https://fafamath.tistory.com/6</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nf9sm/dJMcadok0hR/2OF5FguYotXSV6SKYDkvQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nf9sm/dJMcadok0hR/2OF5FguYotXSV6SKYDkvQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nf9sm/dJMcadok0hR/2OF5FguYotXSV6SKYDkvQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnf9sm%2FdJMcadok0hR%2F2OF5FguYotXSV6SKYDkvQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;134&quot; height=&quot;113&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;style&gt;
/* CSS from CLAUDE.md */
:root {
  --color-primary: #2563EB; --color-primary-light: #3B82F6; --color-primary-dark: #1D4ED8; --color-primary-bg: #EFF6FF;
  --color-accent: #F59E0B; --color-accent-light: #FCD34D; --color-accent-dark: #D97706; --color-accent-bg: #FFFBEB;
  --color-success: #10B981; --color-danger: #EF4444; --color-warning: #F97316; --color-info: #6366F1;
  --color-text: #1E293B; --color-text-secondary: #64748B; --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF; --color-bg-subtle: #F8FAFC; --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0; --color-border-strong: #CBD5E1;
  --color-examiner: #7C3AED; --color-examiner-light: #8B5CF6; --color-examiner-bg: #F5F3FF;
  --color-trap: #DC2626; --color-trap-bg: #FEF2F2;
  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;
  --text-xs: 0.75rem; --text-sm: 0.875rem; --text-base: 1rem; --text-lg: 1.125rem;
  --text-xl: 1.25rem; --text-2xl: 1.5rem; --text-3xl: 1.875rem; --text-4xl: 2.25rem;
  --leading-tight: 1.4; --leading-normal: 1.8; --leading-relaxed: 2.0;
  --tracking-tight: -0.02em; --tracking-normal: -0.01em; --tracking-wide: 0.02em;
  --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem;
  --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem;
  --space-12: 3rem; --space-16: 4rem; --space-20: 5rem;
  --section-gap: var(--space-16); --paragraph-gap: var(--space-6); --element-gap: var(--space-4);
  --content-width: 720px; --content-padding: var(--space-6);
  --radius-sm: 6px; --radius-md: 10px; --radius-lg: 16px; --radius-xl: 24px;
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08); --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12); --shadow-glow: 0 0 20px rgba(37,99,235,0.15);
}
/* Basic Resets &amp; Components */
.post-container { font-family: var(--font-body); color: var(--color-text); line-height: var(--leading-normal); max-width: var(--content-width); margin: 0 auto; padding: 0 var(--content-padding); }
h1, h2, h3, h4 { font-family: var(--font-heading); font-weight: 700; line-height: var(--leading-tight); color: var(--color-text); }
h2 { font-size: var(--text-2xl); margin-bottom: var(--space-6); }
h3 { font-size: var(--text-xl); margin-top: var(--space-8); margin-bottom: var(--space-4); }
p { margin-bottom: var(--space-4); }
a { color: var(--color-primary); text-decoration: none; font-weight: 500; }
a:hover { text-decoration: underline; }
img { max-width: 100%; height: auto; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); display: block; margin: 0 auto; }
.img-caption { text-align: center; font-size: var(--text-sm); color: var(--color-text-secondary); margin-top: var(--space-2); margin-bottom: var(--space-8); }
.strong-accent { color: var(--color-accent-dark); font-weight: 700; }
.strong-danger { color: var(--color-danger); font-weight: 700; }
.text-center { text-align: center; }

/* Reveal Animation */
.reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; } .reveal-delay-2 { transition-delay: 0.2s; } .reveal-delay-3 { transition-delay: 0.3s; }

/* Key Message */
.key-message { display: flex; gap: var(--space-4); padding: var(--space-6); background: var(--color-accent-bg); border-radius: var(--radius-lg); border-left: 4px solid var(--color-accent); margin: var(--space-8) 0; }
.key-message-icon { font-size: var(--text-2xl); flex-shrink: 0; }
.key-message-text { font-family: var(--font-accent); font-size: var(--text-lg); line-height: var(--leading-relaxed); color: var(--color-text); font-weight: 500; }

/* Examiner Block */
.examiner-block { padding: var(--space-6); background: var(--color-examiner-bg); border-radius: var(--radius-lg); border-left: 4px solid var(--color-examiner); margin: var(--space-6) 0; }
.examiner-block-title { font-weight: 700; color: var(--color-examiner); margin-bottom: var(--space-2); }

/* Math Hero */
.math-hero { text-align: center; padding: var(--space-8) var(--space-10); background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF); border: 2px solid var(--color-primary); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); margin: var(--space-8) 0; overflow-x: auto; }

/* Section Header */
.section-header { display: flex; align-items: baseline; gap: var(--space-4); margin-top: var(--space-16); margin-bottom: var(--space-8); padding-bottom: var(--space-4); border-bottom: 2px solid var(--color-primary); }
.section-number { font-size: var(--text-3xl); font-weight: 800; color: var(--color-primary); opacity: 0.3; font-family: var(--font-mono); }
.section-title { font-size: var(--text-2xl); font-weight: 700; color: var(--color-text); margin: 0; }

/* Interactive Table */
.table-interactive { width: 100%; border-collapse: separate; border-spacing: 0; border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-sm); margin: var(--space-8) 0; }
.table-interactive th { background: var(--color-primary); color: white; padding: var(--space-3) var(--space-4); font-weight: 600; text-align: center; }
.table-interactive td { padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--color-border); transition: background 0.2s ease, transform 0.2s ease; text-align: center; }
.table-interactive tbody tr:hover td { background: var(--color-primary-bg); transform: scale(1.01); }

/* Tabs */
.tabs { margin: var(--space-8) 0; }
.tab-buttons { display: flex; border-bottom: 2px solid var(--color-border); gap: 0; }
.tab-btn { padding: var(--space-3) var(--space-6); border: none; background: none; cursor: pointer; font-weight: 500; color: var(--color-text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s ease; font-size: var(--text-base); }
.tab-btn.active { color: var(--color-primary); border-bottom-color: var(--color-primary); font-weight: 700; }
.tab-btn:hover:not(.active) { color: var(--color-text); background: var(--color-bg-subtle); }
.tab-panel { display: none; padding: var(--space-6) 0; animation: fadeIn 0.3s ease; }
.tab-panel.active { display: block; }

/* Accordion */
.accordion { border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; margin: var(--space-6) 0; }
.accordion-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4) var(--space-6); background: var(--color-bg-subtle); cursor: pointer; font-weight: 600; user-select: none; transition: background 0.2s ease; }
.accordion-header:hover { background: var(--color-border); }
.accordion-icon { transition: transform 0.3s ease; font-size: 1.2em; }
.accordion.open .accordion-icon { transform: rotate(180deg); }
.accordion-body { max-height: 0; overflow: hidden; transition: max-height 0.4s ease-out, padding 0.3s ease; padding: 0 var(--space-6); }
.accordion.open .accordion-body { max-height: 2000px; padding: var(--space-6); }

/* Chalkboard */
.chalkboard { background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-8) var(--space-12); position: relative; overflow: hidden; margin: var(--space-8) 0; }
.chalkboard::before { content: ''; position: absolute; inset: 0; background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;); pointer-events: none; border-radius: var(--radius-lg); }
.chalk-tray { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); display: flex; gap: 12px; opacity: 0.45; }
.chalk-tray-dot { width: 8px; height: 8px; border-radius: 50%; }
.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08), -0.5px 0 1px rgba(235,230,220,0.05); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }
.chalk-row { font-size: 24px; line-height: 2.1; margin-bottom: 0.5rem; position: relative; white-space: pre-wrap; display: flex; flex-wrap: wrap; align-items: baseline; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch { display: inline-block; opacity: 0; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch.on { opacity: 1; }
.chalk-dust { position: absolute; border-radius: 50%; pointer-events: none; animation: dustFall 1.2s ease-out forwards; }
@keyframes dustFall { 0% { opacity: 0.5; transform: translate(0, 0); } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)); } }
.chalk-box { border: 2.5px dashed rgba(252, 211, 77, 0.3); border-radius: 10px; padding: 1rem 1.4rem; margin: 0.6rem 0 1rem; text-align: center; }
.chalk-underline { text-decoration: underline; text-decoration-style: solid; text-decoration-color: inherit; }

/* Custom Additions */
.series-nav { display: flex; justify-content: center; gap: var(--space-4); background: var(--color-bg-subtle); padding: var(--space-4); border-radius: var(--radius-md); font-weight: 600; font-size: var(--text-sm); margin-bottom: var(--space-8); }
.card-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-4); margin: var(--space-6) 0; }
.teaser-card { padding: var(--space-6); background: var(--color-bg-subtle); border-radius: var(--radius-lg); border-top: 4px solid var(--color-info); text-align: center; box-shadow: var(--shadow-sm); }
.teaser-card h4 { margin: 0 0 var(--space-2) 0; color: var(--color-info); }
.arrow-anim { display: flex; justify-content: center; align-items: center; gap: var(--space-4); font-size: var(--text-2xl); font-weight: 800; color: var(--color-primary); margin: var(--space-8) 0; }
.arrow-right { animation: moveRight 1.5s infinite; }
@keyframes moveRight { 0% { transform: translateX(0); } 50% { transform: translateX(10px); } 100% { transform: translateX(0); } }
.mb-2 { margin-bottom: var(--space-2); }
&lt;/style&gt;
&lt;/div&gt;
&lt;!-- MathJax Load Script --&gt;
&lt;script src=&quot;https://polyfill.io/v3/polyfill.min.js?features=es6&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;post-container&quot;&gt;&lt;!-- Title Header --&gt;
&lt;div class=&quot;text-center reveal&quot; style=&quot;margin-top: 2rem; margin-bottom: 2rem;&quot;&gt;
&lt;h1 style=&quot;font-size: 2.25rem; color: #1e293b; margin-bottom: 0.5rem;&quot;&gt;합성함수와 친해지기 002&lt;/h1&gt;
&lt;h3 style=&quot;font-size: 1.25rem; color: #64748b; font-weight: 500; margin-top: 0;&quot; data-ke-size=&quot;size23&quot;&gt;합성함수 미분, 라이프니츠 정통 사용법으로! &amp;mdash; 치환 없이 1 곱하기로 끝&lt;/h3&gt;
&lt;/div&gt;
&lt;div class=&quot;series-nav reveal&quot;&gt;&amp;larr; &lt;a href=&quot;https://fafamath.tistory.com/5&quot;&gt;1편 (합성함수 그리기)&lt;/a&gt; | &lt;b&gt;2편&lt;/b&gt; | 3편 (미분가능성&amp;middot;꿰매기) &amp;rarr; (Coming Soon)&lt;/div&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;들어가며 &amp;mdash; 어둠의 스킬, 시즌 2&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 1편에서 우리는 합성함수를 그렸지. 기억나니? 대치동에서 유행한다는 &quot;&lt;b&gt;N축&lt;/b&gt;&quot;이라는 어둠의 스킬을 살펴보고, 아빠는 솔직히 별로라고 했어. 왜? &quot;&lt;b&gt;개미의 눈&lt;/b&gt;&quot;으로 보면 그냥 보이는 걸, 굳이 N축이라는 새 좌표계를 만들어서 외우게 하는 게 아빠는 마음에 안 들었거든.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 두 번째 어둠의 스킬을 만나보려고 해. 그런데 이번 건 좀 달라. 이건 &lt;b&gt;진짜 마법사&lt;/b&gt;가 직접 만든 거거든. 누구냐고? &lt;b&gt;고트프리트 라이프니츠(Leibniz)&lt;/b&gt;. 우리가 지금 쓰는 미적분의 절반을 만든 사람이야. 뉴턴이랑 동시대에 미적분을 만들었지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 다룰 주제는 &lt;b&gt;합성함수의 미분&lt;/b&gt;이야. 학교에서는 보통 이렇게 가르쳐:&lt;/p&gt;
&lt;div class=&quot;math-hero&quot;&gt;$$ \{f(g(x))\}' = f'(g(x)) \cdot g'(x) $$&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외우라고? 아빠는 그렇게는 안 해. 오늘 끝날 때쯤 너는 이 공식을 &lt;b&gt;외우는 게 아니라 그릴 수 있게&lt;/b&gt; 될 거야. 그리고 &lt;b&gt;학교에서 가르치는 '치환해서 푸는 방법'이 사실은 본질이 아니라는 것&lt;/b&gt;도 알게 될 거야. 라이프니츠는 치환 없이 더 단순하게 풀었거든.&lt;/p&gt;
&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/original_001_set_diagram_xyz.png&quot; alt=&quot;X&amp;rarr;Y&amp;rarr;Z 합성함수 집합 다이어그램&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;함수의 합성을 가장 직관적으로 보여주는 그림. f가 x를 y로 옮기고, g가 y를 z로 옮긴다.&lt;/div&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;오늘의 스타 &amp;mdash; dx, 그리고 분필가루로 박제된 테니스라켓&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본론 들어가기 전에, 오늘의 스타부터 소개할게. 바로 &lt;b&gt;dx&lt;/b&gt;야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난번 &lt;a href=&quot;https://blog.naver.com/winsosong/223233019540&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;미분한다는 것은 뭘까?&quot;&lt;/a&gt; 포스트랑 &lt;a href=&quot;https://blog.naver.com/winsosong/223370286716&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&quot;미분의 끝판왕&quot;&lt;/a&gt; 포스트에서 아빠가 말했지? &lt;b&gt;dx는 그냥 아주 아주 작은 변량&lt;/b&gt;이라고. &lt;b&gt;&quot;x에 0.001을 더한 특수한 값&quot;&lt;/b&gt; 같은 거. 정확히는 &lt;b&gt;무한소(infinitesimal)&lt;/b&gt;라고 부르는데, 0은 아니지만 0에 한없이 가까운 양이야. 라이프니츠가 직접 도입한 개념이지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 아빠가 며칠 전에 유튜브에서 본 영상 하나가 너무 인상적이었어. &lt;b&gt;초고속 카메라&lt;/b&gt;로 찍은 거였는데, &lt;b&gt;분필 가루를 잔뜩 묻힌 테니스라켓을 탕! 하고 휘둘렀을 때&lt;/b&gt;, 라켓은 이미 휙 지나갔는데 분필 가루는 라켓이 있던 자리에 &lt;b&gt;라켓 모양 그대로 허공에 둥~&lt;/b&gt; 떠 있는 거야. 관성 때문이지. 아주 짧은 찰나의 순간, 라켓 모양의 분필 유령이 공중에 박제된 것처럼 떠 있다가 흩어져버리더라.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아빠는 그걸 보면서 &quot;&lt;b&gt;아, 이게 dx구나&lt;/b&gt;&quot; 싶었어.&lt;/p&gt;
&lt;div id=&quot;chalk-1&quot; class=&quot;chalkboard&quot;&gt;
&lt;div class=&quot;chalk-tray&quot;&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #fff;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #FCD34D;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #F87171;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #93C5FD;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;그런데 잠깐 &amp;mdash; d 뒤에는 뭐든 붙을 수 있어&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 한 발짝 더 나가야 해. 학생들이 가장 많이 오해하는 게 이거거든. &lt;b&gt;&quot;무한소는 dx, dy, dt 같은 변수에만 붙는다&quot;&lt;/b&gt;고 생각하는 거. 아니야. 잘 봐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 양 $A$가 흔들릴 때, 그 흔들린 양을 보통 &lt;b&gt;$\Delta A$&lt;/b&gt;(델타 A)라고 써. 그리고 그 흔들림이 거의 0에 가까울 만큼 아주아주 작아지면? 그게 바로 &lt;b&gt;$dA$&lt;/b&gt; 야.&lt;/p&gt;
&lt;table class=&quot;table-interactive&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&amp;Delta; (변량)&lt;/th&gt;
&lt;th&gt;&amp;rarr;&lt;/th&gt;
&lt;th&gt;d (무한소)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;&amp;Delta;x&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;dx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;&amp;Delta;y&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;dy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;&amp;Delta;t&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td style=&quot;color: var(--color-text-secondary);&quot;&gt;dt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;pattern-found&quot;&gt;
&lt;td&gt;&lt;b&gt;&amp;Delta;f(x)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;df(x)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;pattern-found&quot;&gt;
&lt;td&gt;&lt;b&gt;&amp;Delta;g(x)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;dg(x)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;pattern-found&quot;&gt;
&lt;td&gt;&lt;b&gt;&amp;Delta;(x&amp;sup2;)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;d(x&amp;sup2;)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr class=&quot;pattern-found&quot;&gt;
&lt;td&gt;&lt;b&gt;&amp;Delta;(sin x)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&amp;rarr;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;d(sin x)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수값도 결국 &lt;b&gt;양&lt;/b&gt;이잖아. x가 흔들리면 $f(x)$도 흔들리고, $g(x)$도 흔들리고, $x^2$도 흔들리고, $\sin x$도 흔들려. 그 흔들림이 거의 0에 가까우면 &lt;b&gt;$df$, $dg$, $d(x^2)$, $d(\sin x)$&lt;/b&gt; 가 되는 거야. 전부 무한소.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거 알아두면 미분 공식이 다 그림으로 보여. 그리고 dx, dy, dt 뿐 아니라 $df$, $dg$도 그냥 &lt;b&gt;변수처럼 사칙연산이 된다&lt;/b&gt;는 게 오늘 핵심이야. 이항도 되고, 곱하기&amp;middot;나누기도 되고, $1=\frac{dg}{dg}$ 같은 트릭도 자유야. &lt;b&gt;딱 하나 예외&lt;/b&gt;가 곱미분인데, 그건 마지막에 다시 이야기할게.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이제 이 분필가루를 굴려보자.&lt;/p&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;변화의 릴레이 &amp;mdash; 한 줄짜리 직관&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;합성함수 $y = f(g(x))$를 미분한다는 게 뭘까?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;박스를 위아래로 두 개 쌓았다고 생각해봐. 위 박스는 $g$, 아래 박스는 $f$. 맨 위에서 $x$를 떨어뜨리면, 먼저 $g$ 박스를 통과하면서 $g(x)$로 바뀌고, 그게 다시 $f$ 박스를 통과하면서 $f(g(x))$가 돼.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 미분은? &lt;b&gt;$x$를 아주 살짝 흔들었을 때&lt;/b&gt;, 맨 아래 결과값이 얼마나 흔들리는지를 보는 거야. 그런데 $x$가 흔들리면 곧바로 결과값이 흔들리는 게 아니야.&lt;/p&gt;
&lt;div class=&quot;arrow-anim reveal reveal-delay-1&quot;&gt;
&lt;div style=&quot;background: var(--color-bg-subtle); padding: 10px 20px; border-radius: 8px; border: 2px solid var(--color-border-strong);&quot;&gt;x 흔들&lt;/div&gt;
&lt;div class=&quot;arrow-right&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;background: var(--color-bg-subtle); padding: 10px 20px; border-radius: 8px; border: 2px solid var(--color-border-strong);&quot;&gt;g 흔들&lt;/div&gt;
&lt;div class=&quot;arrow-right&quot;&gt;&amp;rarr;&lt;/div&gt;
&lt;div style=&quot;background: var(--color-bg-subtle); padding: 10px 20px; border-radius: 8px; border: 2px solid var(--color-border-strong);&quot;&gt;f 흔들&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;릴레이야. 변화의 릴레이. &lt;b&gt;$x$의 흔들림은 먼저 $g$를 흔들고, 그 흔들린 $g$가 다시 $f$를 흔든다.&lt;/b&gt; 1편에서 말한 &quot;&lt;b&gt;개미의 눈&lt;/b&gt;&quot;으로 보면 이게 그냥 보여. 외울 필요가 없어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 결론이 뭐가 될까? &lt;b&gt;$g$가 흔들린 양 곱하기 $f$가 흔들린 양&lt;/b&gt;, 이렇게 곱해진다는 거야. 왜 곱이냐고? 릴레이니까. 첫 번째 주자가 1배 빨리 뛰면 두 번째 주자도 그만큼 빨리 출발하잖아. 효과는 곱해지는 거지.&lt;/p&gt;
&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/original_002_composition_example.png&quot; alt=&quot;합성함수 예제&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;합성함수 예제. f∘g와 g∘f가 다르다는 것 &amp;mdash; 합성은 순서를 바꾸면 답이 바뀐다.&lt;/div&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;라이프니츠 표기법 &amp;mdash; $\frac{d}{dx}f(x)$ 의 정체&lt;/h2&gt;
&lt;/div&gt;
&lt;div class=&quot;examiner-block&quot;&gt;
&lt;div class=&quot;examiner-block-title&quot;&gt;❓ 흔한 의문&lt;/div&gt;
학교 책 보면 $f'(x)$를 라이프니츠식으로 $\frac{d}{dx} f(x)$ 이렇게 쓰는 거 본 적 있을 거야. &quot;왜 $\frac{d}{dx}$ 가 함수 앞으로 튀어나와 있지?&quot; 하는 의문이 들 거야.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;비밀은 별 거 없어.&lt;/b&gt; 이건 사실 이렇게 쓴 거랑 똑같아:&lt;/p&gt;
&lt;img class=&quot;reveal reveal-delay-1&quot; style=&quot;margin-top: 2rem;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/formula_001_d_dx_meaning.png&quot; alt=&quot;표기 정체 폭로&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;$\frac{d}{dx}f(x)$ 의 정체. 사실은 $\frac{df(x)}{dx}$를 보기 좋게 분리해서 쓴 것뿐이다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분필가루 $df(x)$가 &lt;b&gt;분자에 있다&lt;/b&gt;는 게 맞아. 그냥 적기 편하게 $\frac{d}{dx}$ 와 $f(x)$ 를 분리해서 옆에 둔 것뿐이지.&lt;/p&gt;
&lt;div class=&quot;key-message reveal reveal-delay-2&quot;&gt;
&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;key-message-text&quot;&gt;본질은 &quot;f(x)의 무한소를, x의 무한소로 나눈 비율&quot;이야.&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 알면 합성함수 미분이 너무 쉬워져. 우리가 구하려는 게 뭐였지?&lt;/p&gt;
&lt;div class=&quot;math-hero reveal&quot;&gt;$$ \{f(g(x))\}' = \frac{d}{dx} f(g(x)) = \frac{df(g(x))}{dx} $$&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래. 그냥 $f(g(x))$ 의 무한소를 x의 무한소로 나누는 거야. 이게 미분의 정체.&lt;/p&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;라이프니츠 정통 풀이 &amp;mdash; 치환은 사실 필요 없다&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 진짜 마법을 보여줄게. &lt;b&gt;치환 없이&lt;/b&gt;, 그냥 분수 조작만으로 합성함수 미분 공식이 튀어나오는 걸 직접 봐.&lt;/p&gt;
&lt;div class=&quot;tabs&quot;&gt;
&lt;div class=&quot;tab-buttons&quot;&gt;&lt;button class=&quot;tab-btn active&quot; data-tab=&quot;tab-a&quot;&gt;경로 A (라이프니츠 정통) ⭐&lt;/button&gt; &lt;button class=&quot;tab-btn&quot; data-tab=&quot;tab-b&quot;&gt;경로 B (치환식)&lt;/button&gt;&lt;/div&gt;
&lt;div id=&quot;tab-a&quot; class=&quot;tab-panel active&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 구하려는 건 $\frac{df(g(x))}{dx}$ 야. 여기서 마법을 부린다. &lt;b&gt;1을 곱해.&lt;/b&gt; 어떤 1? $\frac{dg(x)}{dg(x)}$ 이런 1.&lt;/p&gt;
&lt;div class=&quot;math-hero&quot;&gt;&lt;img style=&quot;box-shadow: none; border-radius: 0; border: none;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/formula_002_chain_derivation.png&quot; alt=&quot;라이프니츠 정통 풀이 3단계&quot; /&gt;&lt;/div&gt;
&lt;div class=&quot;img-caption&quot;&gt;라이프니츠 정통 풀이의 핵심 3단계. 1을 곱하고, 분수의 곱셈 규칙으로 분모 자리 바꾸기. 치환 없이 합성함수 미분 공식이 그대로 튀어나온다.&lt;/div&gt;
&lt;ol style=&quot;line-height: 2;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;원식: $\frac{df(g(x))}{dx}$&lt;/li&gt;
&lt;li&gt;1을 곱한다: $\frac{dg(x)}{dg(x)} = 1$&lt;/li&gt;
&lt;li&gt;&lt;b&gt;분수의 곱은 분자끼리&amp;middot;분모끼리, 곱셈 순서는 무관&lt;/b&gt;이므로 &lt;b&gt;분모 자리 바꾸기&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;두 분수의 곱으로 다시 쪼개면 &lt;b&gt;합성함수 미분 공식 완성&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div id=&quot;chalk-2&quot; class=&quot;chalkboard reveal&quot;&gt;
&lt;div class=&quot;chalk-tray&quot;&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #fff;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #FCD34D;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #F87171;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #93C5FD;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;tab-b&quot; class=&quot;tab-panel&quot;&gt;
&lt;div class=&quot;accordion&quot;&gt;
&lt;div class=&quot;accordion-header&quot;&gt;학교에서 흔히 쓰는 치환식 (손가락 편의) &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;accordion-body&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학교에서 시험 풀 때는 치환식 풀이가 더 흔해. 답은 똑같아. 그냥 $g(x)$ 를 매번 쓰는 게 손에 안 익으니까 $g(x) = t$ 로 두고:&lt;/p&gt;
&lt;div class=&quot;math-hero&quot;&gt;$$ \frac{df}{dx} = \frac{df}{dt} \cdot \frac{dt}{dx}, \quad t = g(x) $$&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 적는 거지. &lt;b&gt;본질이 아니라 표기 편의.&lt;/b&gt; 이거 잊지 마.&lt;/p&gt;
&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/original_005_substitution_example.png&quot; alt=&quot;치환 예제&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;학교에서 자주 쓰는 치환 예제. 본질은 표기 편의일 뿐이다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실전 &amp;mdash; 진짜 문제로 굴려보자&lt;/h3&gt;
&lt;div class=&quot;examiner-block reveal&quot;&gt;
&lt;div class=&quot;examiner-block-title&quot;&gt;[문제]&lt;/div&gt;
$f(x) = x^3 - 3x^2$, $g(x) = x^2 + x + 1$ 일 때, $f(g(x))$를 미분하라.&lt;/div&gt;
&lt;div class=&quot;reveal reveal-delay-1 mb-2&quot;&gt;&lt;b&gt;Step 1.&lt;/b&gt; 구하려는 건: $\frac{df(g(x))}{dx}$&lt;/div&gt;
&lt;div class=&quot;reveal reveal-delay-2 mb-2&quot;&gt;&lt;b&gt;Step 2.&lt;/b&gt; 1을 곱하고 분모 자리 바꾸기: $\frac{df(g(x))}{dg(x)} \cdot \frac{dg(x)}{dx}$&lt;/div&gt;
&lt;div class=&quot;reveal reveal-delay-3 mb-2&quot;&gt;&lt;b&gt;Step 3.&lt;/b&gt; 두 조각을 각각 계산.&lt;br /&gt;$\frac{df(g(x))}{dg(x)} = 3g^2 - 6g = 3g(g-2)$&lt;br /&gt;$\frac{dg(x)}{dx} = 2x + 1$&lt;/div&gt;
&lt;div class=&quot;reveal reveal-delay-3 mb-2&quot;&gt;&lt;b&gt;Step 4.&lt;/b&gt; 곱하고 $g = x^2+x+1$ 대입
&lt;div class=&quot;math-hero&quot; style=&quot;margin-top: 1rem;&quot;&gt;$$ \frac{df(g(x))}{dx} = 3(x^2+x+1)(x^2+x-1)(2x+1) $$&lt;/div&gt;
&lt;/div&gt;
&lt;p class=&quot;reveal&quot; data-ke-size=&quot;size16&quot;&gt;외운 공식 하나 없이, &lt;b&gt;치환 한 번도 없이&lt;/b&gt;, 분필가루 df, dg를 변수처럼 굴려서 답이 나왔지. 이게 라이프니츠 정통 사용법이야.&lt;/p&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;곱미분과 헷갈리지 마라 &amp;mdash; 곱은 더하고, 합성은 곱한다&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이제 마지막. 이게 제일 중요해. 학생들이 가장 많이 틀리는 게 &lt;b&gt;합성함수 미분과 곱함수 미분을 헷갈리는 것&lt;/b&gt;이거든.&lt;/p&gt;
&lt;table class=&quot;table-interactive&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;구분&lt;/th&gt;
&lt;th&gt;식&lt;/th&gt;
&lt;th&gt;미분&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;함수의 곱&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;$f(x) \cdot g(x)$&lt;/td&gt;
&lt;td&gt;$f'(x)g(x) + f(x)g'(x)$ &amp;rarr; &lt;b&gt;더하기&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;합성함수&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;$f(g(x))$&lt;/td&gt;
&lt;td&gt;$f'(g(x)) \cdot g'(x)$ &amp;rarr; &lt;b&gt;곱하기&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div id=&quot;chalk-3&quot; class=&quot;chalkboard reveal&quot;&gt;
&lt;div class=&quot;chalk-tray&quot;&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #fff;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #FCD34D;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #F87171;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background: #93C5FD;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;key-message reveal&quot;&gt;
&lt;div class=&quot;key-message-icon&quot;&gt;⚠️&lt;/div&gt;
&lt;div class=&quot;key-message-text&quot;&gt;2편 인트로에서 아빠가 말했지? '딱 하나 예외가 곱미분이다'라고. 바로 이거야. 곱미분만은 분필가루 규칙이 좀 이상하게 작동해. 그래서 곱미분 공식 하나만은 외워야 해.&lt;/div&gt;
&lt;/div&gt;
&lt;img class=&quot;reveal&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/합성함수_002/original_003_chainrule_formula.png&quot; alt=&quot;라그랑주식 결론 공식&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;라그랑주식 결론 공식. 라이프니츠식의 한 표현일 뿐이다.&lt;/div&gt;
&lt;/section&gt;
&lt;section class=&quot;reveal&quot;&gt;
&lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-number&quot;&gt;07&lt;/span&gt;
&lt;h2 class=&quot;section-title&quot; data-ke-size=&quot;size26&quot;&gt;마무리 + 다음 편 떡밥&lt;/h2&gt;
&lt;/div&gt;
&lt;div class=&quot;key-message&quot;&gt;
&lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
&lt;div class=&quot;key-message-text&quot;&gt;오늘 핵심을 다시 정리하자.
&lt;ul style=&quot;margin-top: 0.5rem; padding-left: 1.5rem; font-size: 0.95em;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 0.5rem;&quot;&gt;  &lt;b&gt;합성함수 미분 = 변화의 릴레이.&lt;/b&gt; 효과는 곱해진다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.5rem;&quot;&gt;  &lt;b&gt;dx만 무한소가 아니다.&lt;/b&gt; df, dg, d(x&amp;sup2;) 도 다 무한소.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0.5rem;&quot;&gt;  &lt;b&gt;치환은 본질이 아니다.&lt;/b&gt; 1 곱하고 자리 바꾸면 끝.&lt;/li&gt;
&lt;li&gt;4️⃣ &lt;b&gt;곱은 더하고, 합성은 곱한다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이프니츠가 위대한 건 단순히 표기를 잘 만든 게 아니야. &lt;b&gt;&quot;미분이라는 행위 자체를 그림으로 보이게 만든 것&quot;&lt;/b&gt;이 위대한 거야. $\frac{df(g(x))}{dx}$ 라는 식 하나가, &lt;b&gt;1을 곱하고 분모 자리 바꾼 것만으로&lt;/b&gt; 합성함수 미분 공식을 그대로 토해내잖아.&lt;/p&gt;
&lt;div class=&quot;card-grid&quot;&gt;
&lt;div class=&quot;teaser-card reveal reveal-delay-1&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3편 떡밥&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;합성함수의 그래프가 꺾여 있으면?&lt;br /&gt;&lt;b&gt;두 함수를 매끄럽게 꿰매는 이야기&lt;/b&gt;&lt;br /&gt;(미분가능성)&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;teaser-card reveal reveal-delay-2&quot;&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4편 떡밥&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$\frac{df}{dx} \cdot dx = df$ 처럼 양변에 분필가루 매달고 거꾸로 가면?&lt;br /&gt;&lt;b&gt;치환적분&lt;/b&gt; (라이프니츠 거꾸로!)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p class=&quot;text-center&quot; style=&quot;margin-top: 3rem; font-size: 1.2rem; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 이만~  &lt;/p&gt;
&lt;div class=&quot;series-nav reveal&quot; style=&quot;margin-top: 3rem;&quot;&gt;&amp;larr; &lt;a href=&quot;https://fafamath.tistory.com/5&quot;&gt;1편 (합성함수 그리기)&lt;/a&gt; | &lt;b&gt;2편&lt;/b&gt; | 3편 (미분가능성&amp;middot;꿰매기) &amp;rarr; (Coming Soon)&lt;/div&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;script&gt;
// UI Scripts
document.addEventListener('DOMContentLoaded', function() {
  // Reveal Observer
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) entry.target.classList.add('visible');
    });
  }, { threshold: 0.15 });
  document.querySelectorAll('.reveal').forEach(function(el) { observer.observe(el); });

  // Tabs
  document.querySelectorAll('.tab-btn').forEach(function(btn) {
    btn.addEventListener('click', function() {
      var tabGroup = this.closest('.tabs');
      tabGroup.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });
      tabGroup.querySelectorAll('.tab-panel').forEach(function(p) { p.classList.remove('active'); });
      this.classList.add('active');
      tabGroup.querySelector('#' + this.dataset.tab).classList.add('active');
    });
  });

  // Accordion
  document.querySelectorAll('.accordion-header').forEach(function(header) {
    header.addEventListener('click', function() {
      this.parentElement.classList.toggle('open');
    });
  });

  // Chalkboard Setup
  const chalkScripts = {
    'chalk-1': [
      { type: 'line', color: 'chalk-y', text: 'dx = ?', size: 28, bold: true },
      { type: 'line', color: 'chalk-w', text: '──────────', size: 22 },
      { type: 'line', color: 'chalk-w', text: '움직이는 물체가 남긴', size: 24 },
      { type: 'line', color: 'chalk-r', text: '   찰나의 기하학적 유령.', size: 24, bold: true },
      { type: 'line', color: 'chalk-w', text: '변화 속에서 포착해 낸,', size: 24 },
      { type: 'line', color: 'chalk-b', text: '   멈춰진 순간의 진리.', size: 24 }
    ],
    'chalk-2': [
      { type: 'line', color: 'chalk-y', text: '  치환은 본질이 아니다.', size: 28, bold: true, underline: true },
      { type: 'line', color: 'chalk-w', text: '', size: 10 },
      { type: 'line', color: 'chalk-w', text: 'g(x)=t는 ', size: 24, append: [
        { color: 'chalk-r', text: '손가락 편의', bold: true },
        { color: 'chalk-w', text: '일 뿐.' }
      ]},
      { type: 'line', color: 'chalk-w', text: '라이프니츠는 ', size: 24, append: [
        { color: 'chalk-b', text: '치환 없이도', bold: true },
        { color: 'chalk-w', text: ' 풀린다.' }
      ]}
    ],
    'chalk-3': [
      { type: 'line', color: 'chalk-y', text: '  곱은 ', size: 30, bold: true, append: [
        { color: 'chalk-r', text: '더하고,', underline: true }
      ]},
      { type: 'line', color: 'chalk-b', text: '   합성은 ', size: 30, bold: true, append: [
        { color: 'chalk-r', text: '곱한다.', underline: true }
      ]}
    ]
  };

  function makeCharSpans(container, text, size, bold, colorCls) {
    var spans = [];
    var wrapper = document.createElement('span');
    if(colorCls) wrapper.className = colorCls;
    for (var i = 0; i &lt; text.length; i++) {
      var sp = document.createElement('span');
      sp.className = 'ch';
      sp.textContent = text[i];
      if (size) sp.style.fontSize = size + 'px';
      if (bold) sp.style.fontWeight = '700';
      var rot = (Math.random() - 0.5) * 2.5;
      var scl = 0.97 + Math.random() * 0.06;
      var ty = (Math.random() - 0.5) * 1.5;
      sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';
      if (text[i] === ' ') sp.style.width = '0.3em';
      wrapper.appendChild(sp);
      spans.push(sp);
    }
    container.appendChild(wrapper);
    return spans;
  }

  function spawnDust(charEl, color, board) {
    var rect = charEl.getBoundingClientRect();
    var bdRect = board.getBoundingClientRect();
    for (var i = 0; i &lt; 2; i++) {
      var d = document.createElement('div');
      d.className = 'chalk-dust';
      var sz = 1.5 + Math.random() * 2;
      d.style.width = sz + 'px';
      d.style.height = sz + 'px';
      d.style.background = color || '#EBE6DC';
      d.style.left = (rect.right - bdRect.left) + 'px';
      d.style.top = (rect.bottom - bdRect.top - 6) + 'px';
      d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
      d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
      board.appendChild(d);
      setTimeout(function(el) { return function() { if (el.parentNode) el.parentNode.removeChild(el); }; }(d), 1300);
    }
  }

  function animateChars(spans, speed, board) {
    return new Promise(function(resolve) {
      var i = 0;
      var iv = setInterval(function() {
        if (i &lt; spans.length) {
          spans[i].classList.add('on');
          if (i % 3 === 0 &amp;&amp; spans[i].textContent !== ' ') {
            let col = '#EBE6DC';
            if(spans[i].parentElement.classList.contains('chalk-y')) col = '#FCD34D';
            if(spans[i].parentElement.classList.contains('chalk-r')) col = '#F87171';
            if(spans[i].parentElement.classList.contains('chalk-b')) col = '#93C5FD';
            spawnDust(spans[i], col, board);
          }
          i++;
        } else {
          clearInterval(iv);
          resolve();
        }
      }, speed);
    });
  }

  async function runChalkboard(boardId) {
    var board = document.getElementById(boardId);
    var script = chalkScripts[boardId];
    if (!board || !script) return;
    
    var contentBox = document.createElement('div');
    contentBox.style.position = 'relative';
    contentBox.style.zIndex = '1';
    board.insertBefore(contentBox, board.firstChild);

    for (var j = 0; j &lt; script.length; j++) {
      var cmd = script[j];
      var row = document.createElement('div');
      row.className = 'chalk-row';
      
      var allSpans = [];
      allSpans = allSpans.concat(makeCharSpans(row, cmd.text, cmd.size, cmd.bold, cmd.color));
      
      if(cmd.append) {
        for(var k=0; k&lt;cmd.append.length; k++) {
          allSpans = allSpans.concat(makeCharSpans(row, cmd.append[k].text, cmd.size, cmd.append[k].bold, cmd.append[k].color));
        }
      }
      
      if(cmd.underline) {
        row.classList.add('chalk-underline');
      }

      contentBox.appendChild(row);
      await animateChars(allSpans, 32, board);
      await new Promise(r =&gt; setTimeout(r, 250));
    }
  }

  var chalkObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
        entry.target.dataset.played = 'true';
        runChalkboard(entry.target.id);
      }
    });
  }, { threshold: 0.3 });

  document.querySelectorAll('.chalkboard').forEach(function(el) {
    chalkObserver.observe(el);
  });
});
&lt;/script&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deHQYa/dJMcadu4lb4/qV60FteOA4d4wJblgoDcE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deHQYa/dJMcadu4lb4/qV60FteOA4d4wJblgoDcE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deHQYa/dJMcadu4lb4/qV60FteOA4d4wJblgoDcE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeHQYa%2FdJMcadu4lb4%2FqV60FteOA4d4wJblgoDcE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;467&quot; height=&quot;204&quot; data-origin-width=&quot;467&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>고1수학</category>
      <category>고2미적분</category>
      <category>고3미적분</category>
      <category>고등수학</category>
      <category>라이프니츠</category>
      <category>라이프니츠표기법</category>
      <category>무한소</category>
      <category>변호사아빠</category>
      <category>수능수학</category>
      <category>체인룰</category>
      <category>합성함수미분</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/6</guid>
      <comments>https://fafamath.tistory.com/6#entry6comment</comments>
      <pubDate>Tue, 5 May 2026 16:07:41 +0900</pubDate>
    </item>
    <item>
      <title>[합성함수와 친해지기_001]N축? 갖다 버려. 이제부터는 꺾인 점을 찾아서, 개미의 눈으로 보라!!</title>
      <link>https://fafamath.tistory.com/5</link>
      <description>&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css&quot; /&gt;

&lt;style&gt;
:root {
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;

  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;

  --color-success: #10B981;
  --color-danger: #EF4444;
  --color-warning: #F97316;
  --color-info: #6366F1;

  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0;
  --color-border-strong: #CBD5E1;

  --color-examiner: #7C3AED;
  --color-examiner-light: #8B5CF6;
  --color-examiner-bg: #F5F3FF;
  --color-trap: #DC2626;
  --color-trap-bg: #FEF2F2;

  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  --leading-tight: 1.4;
  --leading-normal: 1.8;
  --leading-relaxed: 2.0;

  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;

  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;

  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
}

.pc {
  max-width: 720px;
  margin: 0 auto;
  font-family: var(--font-body);
  color: var(--color-text);
  line-height: var(--leading-normal);
  font-size: var(--text-lg);
  padding: var(--space-6);
  word-break: keep-all;
}

.pc p { margin-bottom: var(--space-6); }
.pc ul, .pc ol { margin-bottom: var(--space-6); padding-left: var(--space-6); }
.pc li { margin-bottom: var(--space-2); }
.pc img { max-width: 100%; height: auto; border-radius: var(--radius-md); }

.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.math-highlight {
  display: block;
  padding: var(--space-6) var(--space-8);
  margin: var(--space-8) 0;
  background: var(--color-primary-bg);
  border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-md);
  position: relative;
  overflow: hidden;
}

.math-highlight.visible {
  animation: mathGlow 1.5s ease-out;
}

@keyframes mathGlow {
  0% { box-shadow: 0 0 0 rgba(37,99,235,0); }
  30% { box-shadow: 0 0 30px rgba(37,99,235,0.2); }
  100% { box-shadow: var(--shadow-sm); }
}

.math-hero {
  text-align: center;
  padding: var(--space-8) var(--space-10);
  background: linear-gradient(135deg, var(--color-primary-bg), #F0F4FF);
  border: 2px solid var(--color-primary);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  margin: var(--space-8) 0;
}

.table-interactive {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  margin: var(--space-8) 0;
}
.table-interactive th {
  background: var(--color-primary);
  color: white;
  padding: var(--space-3) var(--space-4);
  font-weight: 600;
  text-align: center;
}
.table-interactive td {
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--color-border);
  transition: background 0.2s ease, transform 0.2s ease;
  text-align: center;
}
.table-interactive tbody tr:hover td {
  background: var(--color-primary-bg);
  transform: scale(1.01);
}
.table-interactive tr.pattern-found td {
  background: var(--color-accent-bg);
  font-weight: 600;
}

.chalkboard {
  background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%);
  border-radius: var(--radius-lg);
  padding: var(--space-8) var(--space-8) var(--space-12);
  position: relative;
  overflow: hidden;
  margin: var(--space-8) 0;
  box-shadow: var(--shadow-md);
}
.chalkboard::before {
  content: '';
  position: absolute;
  inset: 0;
  background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;);
  pointer-events: none;
  border-radius: var(--radius-lg);
}
.chalk-tray {
  position: absolute;
  bottom: 8px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 12px;
  opacity: 0.45;
}
.chalk-tray-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
}

.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }

.chalk-row {
  font-size: 22px;
  line-height: 2.1;
  margin-bottom: 0.5rem;
  position: relative;
  white-space: pre-wrap;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  z-index: 1;
}
.ch {
  display: inline-block;
  opacity: 0;
  font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive;
}
.ch.on { opacity: 1; }
.chalk-dust {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  animation: dustFall 1.2s ease-out forwards;
  z-index: 2;
}
@keyframes dustFall {
  0% { opacity: 0.5; transform: translate(0, 0); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)); }
}

.section-header {
  display: flex;
  align-items: baseline;
  gap: var(--space-4);
  margin-bottom: var(--space-8);
  padding-bottom: var(--space-4);
  border-bottom: 2px solid var(--color-primary);
  margin-top: var(--space-12);
}
.section-number {
  font-size: var(--text-3xl);
  font-weight: 800;
  color: var(--color-primary);
  opacity: 0.3;
  font-family: var(--font-mono);
}
.section-title {
  font-size: var(--text-2xl);
  font-weight: 700;
  color: var(--color-text);
  margin: 0;
}

.key-message {
  display: flex;
  gap: var(--space-4);
  padding: var(--space-6);
  background: var(--color-accent-bg);
  border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent);
  margin: var(--space-8) 0;
}
.key-message-icon {
  font-size: var(--text-2xl);
  flex-shrink: 0;
}
.key-message-text {
  font-family: var(--font-accent);
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--color-text);
  font-weight: 500;
}

.trap-box {
  background: var(--color-trap-bg);
  border: 2px solid var(--color-trap);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  margin: var(--space-8) 0;
  position: relative;
}
.trap-box::before {
  content: '  함정 주의  ';
  display: block;
  font-weight: bold;
  color: var(--color-trap);
  margin-bottom: var(--space-3);
  font-size: var(--text-lg);
  text-align: center;
}

.examiner-block {
  background: var(--color-examiner-bg);
  border-left: 4px solid var(--color-examiner);
  border-radius: var(--radius-md);
  padding: var(--space-6);
  margin: var(--space-8) 0;
}
.examiner-title {
  color: var(--color-examiner);
  font-weight: bold;
  margin-bottom: var(--space-3);
  font-size: var(--text-lg);
}
&lt;/style&gt;

&lt;div class=&quot;pc&quot;&gt;
  &lt;div style=&quot;margin-bottom: var(--space-12); padding: var(--space-10) var(--space-6); background: linear-gradient(135deg, #f8fafc, #eff6ff); border-radius: var(--radius-lg); text-align: center;&quot;&gt;
    &lt;h1 style=&quot;font-size: var(--text-4xl); font-weight: 800; color: var(--color-primary); line-height: 1.3; margin-bottom: var(--space-4);&quot;&gt;N축? 갖다 버려.&lt;br&gt;이제부터는 꺾인 점을 찾아서,&lt;br&gt;개미의 눈으로 보라!!&lt;/h1&gt;
    &lt;p style=&quot;font-size: var(--text-xl); color: var(--color-text-secondary); margin: 0;&quot;&gt;[합성함수와 친해지기_001]&lt;/p&gt;
  &lt;/div&gt;

  &lt;p&gt;오늘부터 합성함수와 친해지는 시간을 가져 보려고 해.&lt;/p&gt;
  &lt;p&gt;합성함수가 뭐길래 이렇게 별도 시리즈를 만들 정도일까? 아빠가 이런저런 문제를 풀어보니, 합성함수를 이용한 문제가 꽤 많고, 솔직히 말하면 꽤 어려워. 왜 어렵냐고? 합성함수를 막상 그려 보려고 하면, 잘 안 되거든. 머릿속에 그림이 잘 안 떠올라.&lt;/p&gt;
  &lt;p&gt;그래서 시리즈 첫 편에서는 &quot;&lt;strong&gt;합성함수를 어떻게 그리느냐&lt;/strong&gt;&quot;를 같이 해 보려고 해.&lt;/p&gt;

  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;미리 결론을 말해줄게. &lt;strong&gt;N축? 한 번쯤 들어봤을 거야. 대치동 어둠의 스킬이라고. 좋은 도구이긴 한데, 아빠 생각에는 더 본질적인 방법이 있어. &quot;꺾인 점을 찾아서, 개미의 눈으로 본다.&quot;&lt;/strong&gt; 오늘은 이걸 같이 해 볼 거야.&lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;그리고 이 시리즈에는 또 하나의 어둠의 스킬이 깔려 있어. 바로 &lt;strong&gt;라이프니츠식 미분&lt;/strong&gt;. 이건 2편부터 본격 등장해. 지금은 이름만 알아두자.&lt;/p&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;합성함수의 정의 — &quot;두 단계 변환기&quot;&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;먼저 합성함수가 뭔지부터 보고 가자. 보통 이렇게 표시해.&lt;/p&gt;
    
    &lt;div class=&quot;math-hero&quot;&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/%ED%95%A9%EC%84%B1%ED%95%A8%EC%88%98_001/formula_001.png&quot; alt=&quot;y = f(g(x))&quot; style=&quot;max-width: 100%; height: auto; margin-bottom: var(--space-3);&quot;&gt;
      &lt;p style=&quot;color: var(--color-text-secondary); font-size: var(--text-sm); margin: 0;&quot;&gt;y = f(g(x)) — 합성함수의 정의식&lt;/p&gt;
    &lt;/div&gt;
    
    &lt;p&gt;이게 무슨 뜻이냐고? 아빠는 학생에게 설명할 때 항상 이런 그림을 떠올려. &lt;strong&gt;위와 아래가 뚫린 박스 두 개를 위아래로 쌓은 모양&lt;/strong&gt;. 맨 위에서 $x$를 떨어뜨리면, $x$가 첫 번째 박스($g$)를 통과하면서 값이 바뀌고, 그 바뀐 값이 다시 두 번째 박스($f$)를 통과하면서 한 번 더 바뀌는 거지.&lt;/p&gt;
    &lt;p&gt;여기서 가장 중요한 한 가지가 있어. 잘 들어봐.&lt;/p&gt;
    
    &lt;blockquote style=&quot;border-left: 4px solid var(--color-primary); margin: var(--space-6) 0; background: var(--color-primary-bg); padding: var(--space-6); border-radius: 0 var(--radius-md) var(--radius-md) 0;&quot;&gt;
      &lt;p style=&quot;font-weight: 600; color: var(--color-primary-dark); margin-bottom: var(--space-2);&quot;&gt;&lt;strong&gt;$x$가 변한다고 해서, $f$가 곧바로 변하는 건 아니야.&lt;/strong&gt;&lt;/p&gt;
      &lt;p style=&quot;margin: 0;&quot;&gt;$x$는 일단 $g$를 변화시키고, 그렇게 변화된 $g(x)$가 결국 $f$를 변화시키는 거야.&lt;/p&gt;
    &lt;/blockquote&gt;
    
    &lt;p&gt;이건 합성함수의 &quot;&lt;strong&gt;정의&lt;/strong&gt;&quot;에 대한 이야기야. 그래서 합성함수 문제는 결국 &quot;&lt;strong&gt;정의&lt;/strong&gt;&quot;를 묻는 문제이고, 그래서 아빠는 합성함수 문제를 정말 정말 좋은 문제라고 생각해. 무슨 비법이나 잔재주가 통하지 않거든. 정의를 모르면 못 풀어.&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;가장 단순한 방법 — 0.01씩 다 대입하기 (그러나 노가다)&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;자, 이제 본론. 합성함수를 어떻게 그리지?&lt;/p&gt;
    &lt;p&gt;가장 단순한 방법은 이거야. &lt;strong&gt;그냥 $x$에 0.01, 0.02, 0.03... 다 대입해서 $f(g(x))$를 다 구해보는 거.&lt;/strong&gt;&lt;/p&gt;
    
    &lt;div class=&quot;trap-box&quot;&gt;
      &lt;p style=&quot;margin: 0;&quot;&gt;당연히 가능해. 점을 충분히 많이 찍으면 그래프가 나와. 그런데 어때? &lt;strong&gt;노가다지?&lt;/strong&gt; 시험장에서 이렇게 풀 시간 없어. 비효율적이야.&lt;/p&gt;
    &lt;/div&gt;
    
    &lt;p&gt;그래서 우리가 해야 할 일은 단순해. &lt;strong&gt;노가다를 피하면서도 그래프 모양을 잡는 것.&lt;/strong&gt; 그러려면 두 가지 아이디어가 필요해.&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;첫 번째 아이디어 — 꺾인 점만 찾자&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;그래프의 &lt;strong&gt;모양&lt;/strong&gt;은 사실 &lt;strong&gt;꺾인 점들로 결정&lt;/strong&gt;돼. 직선이든 곡선이든, &lt;strong&gt;변화 패턴이 바뀌는 순간&lt;/strong&gt;만 잡으면 그 사이는 자연스럽게 연결돼.&lt;/p&gt;
    &lt;p&gt;여기서 &quot;꺾인 점&quot;을 수학적으로 표현하면:&lt;/p&gt;
    
    &lt;div class=&quot;math-highlight visible&quot;&gt;
      &lt;div style=&quot;font-weight: 700; font-size: var(--text-xl); text-align: center; color: var(--color-primary-dark);&quot;&gt;변화율이 달라지는 점 = 변화 패턴이 달라지는 점&lt;/div&gt;
    &lt;/div&gt;
    
    &lt;p&gt;직선에서는 기울기가 바뀌는 점이고, 곡선에서는 증가에서 감소로(또는 그 반대로) 바뀌는 점, 또는 곡률이 바뀌는 점이야. 다 같은 말이야 — &lt;strong&gt;&quot;무언가 변화 패턴이 바뀌는 순간&quot;&lt;/strong&gt;.&lt;/p&gt;
    &lt;p&gt;꺾인 점만 찾으면, 시작점·끝점과 함께 그것들을 &lt;strong&gt;대충 연결&lt;/strong&gt;만 해도 합성함수의 대략적인 모양이 나와. 그리고 시험 문제는 보통 그 정도만 알아도 풀 수 있게 출제돼. 정확히 그릴 필요? 거의 없어.&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;두 번째 아이디어 — 개미의 눈&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;이게 진짜 핵심이야. 잘 따라와.&lt;/p&gt;
    &lt;p&gt;우리가 평소에 그래프를 그릴 때는 자동으로 &lt;strong&gt;&quot;왼쪽에서 오른쪽으로&quot;&lt;/strong&gt; 본다는 전제가 깔려 있어. 예를 들어 $y = x$ 그래프를 보면 우리는 &quot;증가하는 그래프&quot;라고 자동으로 말해.&lt;/p&gt;
    &lt;p&gt;그런데 잘 생각해 봐. 그게 정말 그 그래프의 본질일까?&lt;/p&gt;
    
    &lt;blockquote style=&quot;border-left: 4px solid var(--color-accent); margin: var(--space-6) 0; background: var(--color-accent-bg); padding: var(--space-6); border-radius: 0 var(--radius-md) var(--radius-md) 0;&quot;&gt;
      &lt;p style=&quot;margin-bottom: var(--space-4);&quot;&gt;&lt;strong&gt;그 그래프 위를 기어가는 개미의 입장에서 생각해 보자.&lt;/strong&gt;&lt;/p&gt;
      &lt;p style=&quot;margin-bottom: var(--space-4);&quot;&gt;개미가 왼쪽에서 오른쪽으로 가면 → &quot;오르고 있다&quot; → 증가 그래프.&lt;br&gt;그런데 어느 날 베짱이 친구가 원점에서 &quot;야, 친구야 이리 와봐~&quot;라고 부르면? 개미는 오른쪽에서 왼쪽으로 거꾸로 걸어가야 해. 그 순간 개미는 &lt;strong&gt;산을 내려가고 있는&lt;/strong&gt; 거야. 즉 감소 그래프!&lt;/p&gt;
      &lt;p style=&quot;margin: 0;&quot;&gt;&lt;strong&gt;같은 그래프인데, 개미의 진행 방향에 따라 증가도 되고 감소도 되는 거야.&lt;/strong&gt;&lt;/p&gt;
    &lt;/blockquote&gt;
    
    &lt;p&gt;평범한 함수 $f(x)$를 그릴 때는 개미가 왼쪽 → 오른쪽으로만 간다고 봐도 돼. 문제 없어.&lt;/p&gt;
    &lt;p&gt;그런데 합성함수 $f(g(x))$를 그릴 때는 달라. &lt;strong&gt;$f$의 입력자리에 들어가는 게 $g(x)$의 값&lt;/strong&gt;이잖아? 그런데 $g(x)$의 값은 $x$가 증가해도 &lt;strong&gt;증가할 수도 있고, 감소할 수도 있어.&lt;/strong&gt; $g$가 감소 구간이라면, $f$ 위의 개미는 &lt;strong&gt;거꾸로 걸어가야 해.&lt;/strong&gt;&lt;/p&gt;

    &lt;div class=&quot;chalkboard&quot; id=&quot;chalk1&quot;&gt;
      &lt;div class=&quot;chalk-tray&quot;&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#ebe6dc&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#fcd34d&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#f87171&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#93c5fd&quot;&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;p&gt;그래서 합성함수를 그릴 때는 &lt;strong&gt;&quot;개미의 진행 방향을 자유롭게 바꿔서 보는 상대적인 눈&quot;&lt;/strong&gt;이 꼭 필요해. 아빠는 이걸 &lt;strong&gt;&quot;개미의 눈&quot;&lt;/strong&gt;이라고 부를 거야.&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;두 아이디어를 적용한 정석 — 표로 풀어보기&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;자, 두 아이디어를 합쳐서 실제 문제에 적용해 보자. 좋은책 신사고 고등수학 교과서 224p에 나오는 문제야.&lt;/p&gt;
    
    &lt;blockquote style=&quot;border-left: 4px solid var(--color-border-strong); margin: var(--space-6) 0; background: var(--color-bg-subtle); padding: var(--space-6); border-radius: 0 var(--radius-md) var(--radius-md) 0;&quot;&gt;
      &lt;p style=&quot;margin-bottom: var(--space-2);&quot;&gt;&lt;strong&gt;집합 $X = \{x \mid 0 \le x \le 2\}$에 대해, $X$에서 $X$로의 두 함수 $y = f(x)$, $y = g(x)$가 있다.&lt;/strong&gt;&lt;/p&gt;
      &lt;p style=&quot;margin-bottom: var(--space-2);&quot;&gt;&lt;strong&gt;$f(x)$는 $\Lambda$자 모양 (0,0)–(1,2)–(2,0)이고, $g(x)$는 $V$자 모양 (0,1)–(1,0)–(2,2)이다.&lt;/strong&gt;&lt;/p&gt;
      &lt;p style=&quot;margin: 0;&quot;&gt;&lt;strong&gt;$y = (f \circ g)(x) = f(g(x))$를 그려라.&lt;/strong&gt;&lt;/p&gt;
    &lt;/blockquote&gt;

    &lt;figure style=&quot;text-align: center; margin: var(--space-8) 0;&quot;&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/%ED%95%A9%EC%84%B1%ED%95%A8%EC%88%98_001/original_001_textbook_problem.png&quot; alt=&quot;좋은책 신사고 고등수학 교과서 224p 합성함수 그래프 문제&quot; style=&quot;border-radius: var(--radius-md); box-shadow: var(--shadow-sm);&quot;&gt;
      &lt;figcaption style=&quot;margin-top: var(--space-3); color: var(--color-text-secondary); font-size: var(--text-sm);&quot;&gt;좋은책 신사고 고등수학 교과서 224p 합성함수 그래프 문제&lt;/figcaption&gt;
    &lt;/figure&gt;

    &lt;p&gt;자, 표로 풀어보자. &lt;strong&gt;세 행짜리 표&lt;/strong&gt;를 만들 거야: $x$의 변화율 / $g(x)$의 변화율 / $f(g(x))$의 변화율.&lt;/p&gt;

    &lt;table class=&quot;table-interactive&quot;&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th width=&quot;30%&quot;&gt;단계&lt;/th&gt;
          &lt;th width=&quot;70%&quot;&gt;내용&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;1단계:&lt;/strong&gt; $x$의 변화율&lt;/td&gt;
          &lt;td style=&quot;text-align: left;&quot;&gt;$0 \to 2$ 단순 증가, 변곡점 없음. 패스.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;2단계:&lt;/strong&gt; $g(x)$의 변화율&lt;/td&gt;
          &lt;td style=&quot;text-align: left;&quot;&gt;$x = 1$에서 꺾임 ($V$자 꼭짓점). $(1, 0)$ 확정.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr class=&quot;pattern-found&quot;&gt;
          &lt;td&gt;&lt;strong&gt;3단계:&lt;/strong&gt; $f(g(x))$의 변화율 ⭐&lt;/td&gt;
          &lt;td style=&quot;text-align: left;&quot;&gt;&lt;strong&gt;개미의 눈 등장.&lt;/strong&gt; 구간 ① 패스, 구간 ② 정상 통과 → $(\frac{3}{2}, 2)$ 발견.&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;4단계:&lt;/strong&gt; 시작·끝점&lt;/td&gt;
          &lt;td style=&quot;text-align: left;&quot;&gt;$(0, 2)$, $(2, 0)$&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;5단계:&lt;/strong&gt; 4점 연결&lt;/td&gt;
          &lt;td style=&quot;text-align: left;&quot;&gt;$M$자 완성&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;

    &lt;figure style=&quot;text-align: center; margin: var(--space-8) 0;&quot;&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/%ED%95%A9%EC%84%B1%ED%95%A8%EC%88%98_001/graph_001_textbook_M.png&quot; alt=&quot;합성함수 그리기 3단계&quot; style=&quot;border-radius: var(--radius-md); box-shadow: var(--shadow-sm);&quot;&gt;
      &lt;figcaption style=&quot;margin-top: var(--space-3); color: var(--color-text-secondary); font-size: var(--text-sm);&quot;&gt;합성함수 그리기 3단계 — 주어진 함수 / 꺾인점 4개 / M자 완성&lt;/figcaption&gt;
    &lt;/figure&gt;

    &lt;h3 style=&quot;font-size: var(--text-xl); color: var(--color-primary-dark); margin-top: var(--space-8); margin-bottom: var(--space-4);&quot;&gt;1단계: $x$의 변화율 체크&lt;/h3&gt;
    &lt;p&gt;$x$는 $0 \to 2$로 단순 증가. 변곡점 없음. &lt;strong&gt;패스.&lt;/strong&gt;&lt;/p&gt;

    &lt;h3 style=&quot;font-size: var(--text-xl); color: var(--color-primary-dark); margin-top: var(--space-8); margin-bottom: var(--space-4);&quot;&gt;2단계: $g(x)$의 변화율 체크&lt;/h3&gt;
    &lt;p&gt;$g(x)$는 $V$자라서 $x = 1$에서 꺾여. 그러니까 $x = 1$이 &lt;strong&gt;첫 번째 후보 꺾인점.&lt;/strong&gt;&lt;/p&gt;
    &lt;p&gt;좌표 계산: $x = 1$일 때 $g(1) = 0$, $f(g(1)) = f(0) = 0$. 그래서 $(1, 0)$ 확정.&lt;/p&gt;
    &lt;p&gt;이제 $x$ 행에도 $0$과 $2$ 사이에 &lt;strong&gt;$x = 1$을 체크 표시&lt;/strong&gt;해두자.&lt;/p&gt;

    &lt;h3 style=&quot;font-size: var(--text-xl); color: var(--color-primary-dark); margin-top: var(--space-8); margin-bottom: var(--space-4);&quot;&gt;3단계: $f(g(x))$의 변화율 체크 — 개미의 눈 등장&lt;/h3&gt;
    &lt;p&gt;$x = 1$로 구간이 둘로 나뉘었어. 각 구간에서 &lt;strong&gt;$f$ 위에 개미를 올려놓고&lt;/strong&gt; 확인하자.&lt;/p&gt;

    &lt;p style=&quot;font-weight: 700; margin-top: var(--space-6);&quot;&gt;구간 ①: $x = 0 \to 1$&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;$g(x)$는 $g(0) = 1$ 에서 $g(1) = 0$ 으로 감소.&lt;/li&gt;
      &lt;li&gt;즉, $f$ 위의 개미는 &lt;strong&gt;&quot;$1$에서 $0$으로 거꾸로 걷기&quot;&lt;/strong&gt;. 베짱이 친구가 원점에서 부르고 있는 거야.&lt;/li&gt;
      &lt;li&gt;$f$ 그래프에서 $x = 0$부터 $x = 1$ 구간은 단조 직선이야. 꺾이는 점 없어.&lt;/li&gt;
      &lt;li&gt;→ &lt;strong&gt;숨은 꺾인점 없음. 패스.&lt;/strong&gt;&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p style=&quot;font-weight: 700; margin-top: var(--space-6);&quot;&gt;구간 ②: $x = 1 \to 2$&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;$g(x)$는 $g(1) = 0$ 에서 $g(2) = 2$ 로 증가.&lt;/li&gt;
      &lt;li&gt;즉, $f$ 위의 개미는 &lt;strong&gt;&quot;$0$에서 $2$로 정방향 걷기&quot;&lt;/strong&gt;. 영차영차 산을 오르는 모양.&lt;/li&gt;
      &lt;li&gt;그런데! $f$ 그래프에서 개미가 $0$에서 출발해서 $2$까지 가는 동안, &lt;strong&gt;중간 $x = 1$에서 정상을 지나잖아?&lt;/strong&gt; 산을 오르다가 정상을 지나서는 산을 내려와.&lt;/li&gt;
      &lt;li&gt;→ &lt;strong&gt;숨은 꺾인점 발견!&lt;/strong&gt; 정상 통과 = 변화 패턴 변화.&lt;/li&gt;
    &lt;/ul&gt;

    &lt;div class=&quot;trap-box&quot;&gt;
      &lt;p style=&quot;margin-bottom: var(--space-2);&quot;&gt;시작점·끝점만 보면 구간 ②의 $f(g(x))$는 $0 \to 0$이야.&lt;br&gt;그래서 &quot;그냥 0에 머물러 있구나&quot;라고 생각하기 쉬워.&lt;/p&gt;
      &lt;p style=&quot;margin-bottom: var(--space-2);&quot;&gt;하지만 중간에 $g(x) = 1$이 되는 순간, $f$의 정상을 통과해!&lt;/p&gt;
      &lt;p style=&quot;margin: 0; font-weight: bold; color: var(--color-trap);&quot;&gt;숨은 꺾인점 $(\frac{3}{2}, 2)$를 놓치면 안 돼.&lt;/p&gt;
    &lt;/div&gt;

    &lt;p&gt;이제 그 꺾인점이 합성함수 그래프에서 &lt;strong&gt;어디인지&lt;/strong&gt; 찾아야 해. $g(x) = 1$이 되는 $x$값이 정답이야. $g$가 $0 \to 2$로 직선으로 증가하니까, 정확히 중간 $x = \frac{3}{2}$에서 $g = 1$.&lt;/p&gt;
    &lt;p&gt;좌표 계산: $x = \frac{3}{2}$일 때 $g(\frac{3}{2}) = 1$, $f(g(\frac{3}{2})) = f(1) = 2$. 그래서 $(\frac{3}{2}, 2)$ 확정.&lt;/p&gt;

    &lt;h3 style=&quot;font-size: var(--text-xl); color: var(--color-primary-dark); margin-top: var(--space-8); margin-bottom: var(--space-4);&quot;&gt;4단계: 시작점·끝점 체크&lt;/h3&gt;
    &lt;ul&gt;
      &lt;li&gt;$x = 0$: $g(0) = 1$, $f(1) = 2$. → $(0, 2)$&lt;/li&gt;
      &lt;li&gt;$x = 2$: $g(2) = 2$, $f(2) = 0$. → $(2, 0)$&lt;/li&gt;
    &lt;/ul&gt;

    &lt;h3 style=&quot;font-size: var(--text-xl); color: var(--color-primary-dark); margin-top: var(--space-8); margin-bottom: var(--space-4);&quot;&gt;5단계: 4점 연결&lt;/h3&gt;
    &lt;figure style=&quot;text-align: center; margin: var(--space-6) 0;&quot;&gt;
      &lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/%ED%95%A9%EC%84%B1%ED%95%A8%EC%88%98_001/formula_002.png&quot; alt=&quot;4점 연결&quot; style=&quot;border-radius: var(--radius-md);&quot;&gt;
      &lt;figcaption style=&quot;margin-top: var(--space-3); color: var(--color-text-secondary); font-size: var(--text-sm);&quot;&gt;4점 연결: $(0,2) \to (1,0) \to (\frac{3}{2},2) \to (2,0)$&lt;/figcaption&gt;
    &lt;/figure&gt;
    &lt;p&gt;이제 4개 점을 다 모았어:&lt;/p&gt;
    
    &lt;div class=&quot;math-highlight visible&quot;&gt;
      &lt;div style=&quot;font-weight: 700; font-size: var(--text-xl); text-align: center; color: var(--color-primary-dark);&quot;&gt;$(0,\,2) \;\to\; (1,\,0) \;\to\; \left(\frac{3}{2},\,2\right) \;\to\; (2,\,0)$&lt;/div&gt;
    &lt;/div&gt;

    &lt;p&gt;이 문제는 $f$와 $g$가 모두 직선이라서, 4점을 직선으로 연결하면 정확한 그래프가 나와. &lt;strong&gt;$M$자 모양&lt;/strong&gt; (좌측이 좀 더 넓은 비대칭 $M$자).&lt;/p&gt;
    &lt;p&gt;어때? 이게 끝이야. 노가다 없이, 정의역 안에서 변화 패턴이 바뀌는 4개의 순간만 잡았는데, 합성함수 모양이 완성됐어.&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;그래서 N축은 뭐냐고? 한 번 짚고 가자&lt;/h2&gt;
    &lt;/div&gt;
    &lt;p&gt;여기까지 읽고 &lt;strong&gt;&quot;어, 그러면 N축은 왜 있는 거야?&quot;&lt;/strong&gt;라고 궁금할 수 있어. 짧게 설명할게.&lt;/p&gt;
    &lt;p&gt;N축은 &lt;strong&gt;속함수 $g(x)$를 90도 돌려서 그리는&lt;/strong&gt; 방법이야. 왜 90도 돌리냐면, $g$의 출력 방향과 $f$의 입력 방향을 시각적으로 일치시키기 위해서. 합성함수가 헷갈리는 진짜 이유 — 출력이 다시 입력으로 들어가야 하는 그 축의 전환 — 을 종이 위에서 해결해주는 영리한 방법이야.&lt;/p&gt;
    &lt;p&gt;좋은 도구야. 진짜 좋은 도구야. 그런데 아빠가 권하지 않는 이유는 두 가지야.&lt;/p&gt;
    &lt;p&gt;첫째, &lt;strong&gt;너무 기계적이 되기 쉬워.&lt;/strong&gt; 정확히 자처럼 그래야 답이 맞는데, 실전에선 그렇게 정확히 그리기 어렵고 시간도 오래 걸려.&lt;/p&gt;
    &lt;p&gt;둘째, &lt;strong&gt;머릿속에 잔상이 남아.&lt;/strong&gt; N축 그림이 머리에서 안 사라지고, 평범한 함수 문제도 자꾸 N축으로 보려고 하게 돼.&lt;/p&gt;

    &lt;div class=&quot;examiner-block&quot;&gt;
      &lt;div class=&quot;examiner-title&quot;&gt;  N축 vs 꺾인 점 + 개미의 눈&lt;/div&gt;
      &lt;table class=&quot;table-interactive&quot; style=&quot;margin-top: var(--space-4); margin-bottom: 0;&quot;&gt;
        &lt;thead&gt;
          &lt;tr&gt;
            &lt;th width=&quot;35%&quot;&gt;도구&lt;/th&gt;
            &lt;th width=&quot;35%&quot;&gt;장점&lt;/th&gt;
            &lt;th width=&quot;30%&quot;&gt;단점&lt;/th&gt;
          &lt;/tr&gt;
        &lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;
            &lt;td&gt;&lt;strong&gt;N축&lt;/strong&gt;&lt;/td&gt;
            &lt;td&gt;직관적, 시각화된 풀이&lt;/td&gt;
            &lt;td&gt;기계적, 잔상이 남음&lt;/td&gt;
          &lt;/tr&gt;
          &lt;tr class=&quot;pattern-found&quot;&gt;
            &lt;td&gt;&lt;strong&gt;꺾인 점 + 개미의 눈 ⭐&lt;/strong&gt;&lt;/td&gt;
            &lt;td&gt;도구 불필요, 정의에 충실, 다음 편들과 연결&lt;/td&gt;
            &lt;td&gt;처음엔 머릿속 시각화 연습 필요&lt;/td&gt;
          &lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;

    &lt;p&gt;그에 비해 &lt;strong&gt;&quot;꺾인 점 + 개미의 눈&quot;&lt;/strong&gt;은 어때? 도구가 필요 없어. 종이도 거의 안 써. &lt;strong&gt;머릿속에서 직접 &quot;$f$ 위에 개미를 올려놓고 어떻게 걷는지&quot;만 상상하면 돼.&lt;/strong&gt; 그리고 이 방식은 &lt;strong&gt;합성함수의 정의(두 단계 변환)를 그대로 따라가는 방법&lt;/strong&gt;이라서, 시리즈 다음 편들(미분, 미분가능성, 적분)과도 자연스럽게 연결돼.&lt;/p&gt;
    &lt;p&gt;그래서 아빠는 이렇게 말할 거야 — &lt;strong&gt;N축? 갖다 버려. 꺾인 점을 찾아서, 개미의 눈으로 봐.&lt;/strong&gt;&lt;/p&gt;
  &lt;/section&gt;

  &lt;section class=&quot;reveal&quot;&gt;
    &lt;div class=&quot;section-header&quot;&gt;
      &lt;span class=&quot;section-number&quot;&gt;07&lt;/span&gt;
      &lt;h2 class=&quot;section-title&quot;&gt;정리, 그리고 다음 편 예고&lt;/h2&gt;
    &lt;/div&gt;
    
    &lt;div class=&quot;chalkboard&quot; id=&quot;chalk2&quot;&gt;
      &lt;div class=&quot;chalk-tray&quot;&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#ebe6dc&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#fcd34d&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#f87171&quot;&gt;&lt;/div&gt;&lt;div class=&quot;chalk-tray-dot&quot; style=&quot;background:#93c5fd&quot;&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;p&gt;오늘 핵심을 다시 정리하면:&lt;/p&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;첫째&lt;/strong&gt;, 합성함수는 &lt;strong&gt;두 단계 변환기&lt;/strong&gt;. $x \to g(x) \to f(g(x))$. $x$가 직접 $f$를 흔드는 게 아니라, $g$를 먼저 흔들고, 그 흔들림이 $f$로 전달.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;둘째&lt;/strong&gt;, &lt;strong&gt;꺾인 점만 찾으면 충분해.&lt;/strong&gt; 변화 패턴이 바뀌는 순간들 + 시작·끝점만 잡고 연결. 노가다 필요 없음.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;셋째&lt;/strong&gt;, &lt;strong&gt;개미의 눈으로 봐.&lt;/strong&gt; $g$가 감소하는 구간에서는 $f$ 위의 개미가 거꾸로 걷고 있어. 그 상대적인 시점 전환을 자유자재로 할 줄 알면 합성함수가 정말 쉬워져.&lt;/li&gt;
    &lt;/ul&gt;

    &lt;p&gt;다음 편에서는 본격적으로 &lt;strong&gt;합성함수의 미분(체인룰)&lt;/strong&gt;을 다룰 거야. 그리고 거기서 두 번째 어둠의 스킬, &lt;strong&gt;라이프니츠&lt;/strong&gt;가 본격 등장해.&lt;/p&gt;

    &lt;div class=&quot;math-hero&quot; style=&quot;background: linear-gradient(135deg, var(--color-examiner-bg), #fff); border-color: var(--color-examiner); box-shadow: 0 4px 15px rgba(124, 58, 237, 0.15);&quot;&gt;
      &lt;div style=&quot;font-size: var(--text-3xl); font-weight: 700; color: var(--color-examiner); margin-bottom: var(--space-4);&quot;&gt;
        $$ \frac{dt}{dt} $$
      &lt;/div&gt;
      &lt;div style=&quot;font-weight: 700; color: var(--color-text);&quot;&gt;&quot;$\frac{dt}{dt}$를 곱하는 마법&quot;이라는 게 뭔지 보여줄게. 진짜 신기해.&lt;/div&gt;
    &lt;/div&gt;

    &lt;p style=&quot;margin-top: var(--space-8); text-align: center; color: var(--color-text-secondary);&quot;&gt;오늘은 여기까지~ 어때, 합성함수가 살짝 친근해진 것 같아?&lt;/p&gt;
  &lt;/section&gt;

  &lt;script&gt;
  function makeCharSpans(container, text, size, bold) {
    var spans = [];
    for (var i = 0; i &lt; text.length; i++) {
      var sp = document.createElement('span');
      sp.className = 'ch';
      sp.textContent = text[i];
      if (size) sp.style.fontSize = size + 'px';
      if (bold) sp.style.fontWeight = '700';

      var rot = (Math.random() - 0.5) * 2.5;
      var scl = 0.97 + Math.random() * 0.06;
      var ty = (Math.random() - 0.5) * 1.5;
      sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';

      if (text[i] === ' ') sp.style.width = '0.3em';
      container.appendChild(sp);
      spans.push(sp);
    }
    return spans;
  }

  function animateChars(spans, speed, dustColor, board) {
    return new Promise(function(resolve) {
      var i = 0;
      var iv = setInterval(function() {
        if (i &lt; spans.length) {
          spans[i].classList.add('on');
          if (i % 3 === 0 &amp;&amp; spans[i].textContent !== ' ') {
            spawnDust(spans[i], dustColor, board);
          }
          i++;
        } else {
          clearInterval(iv);
          resolve();
        }
      }, speed);
    });
  }

  function spawnDust(charEl, color, board) {
    var rect = charEl.getBoundingClientRect();
    var bdRect = board.getBoundingClientRect();
    for (var i = 0; i &lt; 2; i++) {
      var d = document.createElement('div');
      d.className = 'chalk-dust';
      var sz = 1.5 + Math.random() * 2;
      d.style.width = sz + 'px';
      d.style.height = sz + 'px';
      d.style.background = color;
      d.style.left = (rect.right - bdRect.left) + 'px';
      d.style.top = (rect.bottom - bdRect.top - 6) + 'px';
      d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
      d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
      board.appendChild(d);
      setTimeout(function(el) {
        return function() { if (el.parentNode) el.parentNode.removeChild(el); };
      }(d), 1300);
    }
  }

  async function runChalkboard(board, script) {
    for (let i = 0; i &lt; script.length; i++) {
      let step = script[i];
      if (step.type === 'pause') {
        await new Promise(r =&gt; setTimeout(r, step.ms));
      } else if (step.type === 'line') {
        let row = document.createElement('div');
        row.className = 'chalk-row ' + step.color;
        board.appendChild(row);
        let spans = makeCharSpans(row, step.text, step.size, step.bold);
        
        let dustColor = '#fff';
        if(step.color === 'chalk-y') dustColor = '#fcd34d';
        else if(step.color === 'chalk-r') dustColor = '#f87171';
        else if(step.color === 'chalk-b') dustColor = '#93c5fd';

        await animateChars(spans, 32, dustColor, board);
        await new Promise(r =&gt; setTimeout(r, 250));
      }
    }
  }

  var chalkScript1 = [
    { type: 'line', color: 'chalk-w', text: '합성함수의 비밀:', size: 26, bold: true },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-y', text: '&quot;개미의 진행 방향&quot;을 바꿔라!', size: 28, bold: true },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-r', text: 'g가 감소하면 → 개미는 거꾸로 걷는다', size: 22 },
    { type: 'pause', ms: 200 },
    { type: 'line', color: 'chalk-b', text: '같은 그래프, 다른 시점 = 개미의 눈', size: 22 }
  ];

  var chalkScript2 = [
    { type: 'line', color: 'chalk-w', text: '합성함수와 친해지기 — 1편 정리', size: 26, bold: true },
    { type: 'pause', ms: 300 },
    { type: 'line', color: 'chalk-y', text: '① 두 단계 변환기 (x → g → f)', size: 24 },
    { type: 'pause', ms: 200 },
    { type: 'line', color: 'chalk-r', text: '② 꺾인 점만 찾자 (노가다 X)', size: 24 },
    { type: 'pause', ms: 200 },
    { type: 'line', color: 'chalk-b', text: '③ 개미의 눈으로 봐', size: 24 }
  ];

  document.addEventListener('DOMContentLoaded', function() {
    var chalkObserver = new IntersectionObserver(function(entries) {
      entries.forEach(function(entry) {
        if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
          entry.target.dataset.played = 'true';
          if(entry.target.id === 'chalk1') runChalkboard(entry.target, chalkScript1);
          if(entry.target.id === 'chalk2') runChalkboard(entry.target, chalkScript2);
        }
      });
    }, { threshold: 0.3 });

    document.querySelectorAll('.chalkboard').forEach(function(el) {
      chalkObserver.observe(el);
    });

    const observer = new IntersectionObserver(function(entries) {
      entries.forEach(function(entry) {
        if (entry.isIntersecting) {
          entry.target.classList.add('visible');
        }
      });
    }, { threshold: 0.15 });

    document.querySelectorAll('.reveal').forEach(function(el) {
      observer.observe(el);
    });
  });
  &lt;/script&gt;
&lt;/div&gt;</description>
      <category>고1수학</category>
      <category>개미의눈</category>
      <category>고1수학</category>
      <category>고등수학</category>
      <category>꺾인점</category>
      <category>변호사아빠</category>
      <category>수학블로그</category>
      <category>수학특강</category>
      <category>함수와그래프</category>
      <category>합성함수</category>
      <category>합성함수그리기</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/5</guid>
      <comments>https://fafamath.tistory.com/5#entry5comment</comments>
      <pubDate>Mon, 4 May 2026 04:47:15 +0900</pubDate>
    </item>
    <item>
      <title>[차함수 스킬_002] 직선차함수를 이용하면, 계산량을 80% 줄일 수 있어. 진짜? 진짜!!</title>
      <link>https://fafamath.tistory.com/4</link>
      <description>&lt;div&gt;
&lt;style&gt;
:root {
  --c-main: #2563EB;
  --c-accent: #F59E0B;
  --c-examiner: #7C3AED;
  --c-danger: #DC2626;
  --c-ok: #16A34A;
  --c-gray: #6B7280;
  --c-bg: #FAFAFA;
  --c-card: #FFFFFF;
  --c-text: #1F2937;
  --max-w: 720px;
  --radius: 12px;
}
.pc {
  max-width: var(--max-w);
  margin: 0 auto;
  font-family: 'Pretendard Variable', Pretendard, -apple-system, sans-serif;
  color: var(--c-text);
  font-size: 1.125rem;
  line-height: 1.8;
  background: var(--c-bg);
  padding: 20px;
}
.post-wrapper {
  background: var(--c-card);
  padding: 30px;
  border-radius: var(--radius);
  box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
h2 {
  font-size: 1.625rem;
  color: var(--c-main);
  border-bottom: 2px solid #E5E7EB;
  padding-bottom: 8px;
  margin-top: 2rem;
  margin-bottom: 1rem;
}
h3 {
  font-size: 1.375rem;
  color: #374151;
  margin-top: 1.5rem;
  margin-bottom: 0.75rem;
}
p { margin-bottom: 1rem; }
img {
  max-width: 100%;
  height: auto;
  border-radius: var(--radius);
  display: block;
  margin: 1.5rem auto;
}
.img-caption {
  text-align: center;
  font-size: 0.9rem;
  color: var(--c-gray);
  margin-top: -1rem;
  margin-bottom: 1.5rem;
}
blockquote {
  border-left: 4px solid var(--c-main);
  background: #EFF6FF;
  padding: 1rem 1.5rem;
  margin: 1.5rem 0;
  border-radius: 0 var(--radius) var(--radius) 0;
  font-weight: 600;
}

/* reveal */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* math-hero */
.math-hero {
  background: linear-gradient(135deg, #EFF6FF, #F0F9FF);
  border: 2px solid var(--c-main);
  border-radius: var(--radius);
  padding: 2rem 1.5rem;
  text-align: center;
  margin: 2rem 0;
  position: relative;
}
.math-hero-label {
  position: absolute;
  top: -14px;
  left: 24px;
  background: var(--c-main);
  color: white;
  padding: 4px 16px;
  border-radius: 20px;
  font-size: 0.85rem;
  font-weight: 600;
}
.math-hero-formula {
  font-size: 1.3rem;
  padding-top: 0.5rem;
}

/* math-steps */
.math-steps { margin: 1.5rem 0; }
.math-step {
  padding: 1rem 1.5rem;
  border-left: 3px solid var(--c-main);
  margin-bottom: 1rem;
  background: #F8FAFC;
  border-radius: 0 var(--radius) var(--radius) 0;
}
.step-num {
  display: inline-block;
  background: var(--c-gray);
  color: white;
  padding: 2px 12px;
  border-radius: 12px;
  font-size: 0.8rem;
  font-weight: 600;
  margin-bottom: 0.5rem;
}
.step-desc {
  color: var(--c-gray);
  font-size: 0.95rem;
  margin-top: 0.5rem;
}

/* key-message */
.key-message {
  background: #FEF3C7;
  border-left: 4px solid var(--c-accent);
  border-radius: 0 var(--radius) var(--radius) 0;
  padding: 1.2rem 1.5rem;
  margin: 1.5rem 0;
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.key-icon { font-size: 1.5rem; flex-shrink: 0; }
.key-message p { margin: 0; font-weight: 500; }

/* table-interactive */
.table-interactive {
  width: 100%;
  border-collapse: collapse;
  margin: 1.5rem 0;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0,0,0,0.1);
}
.table-interactive th {
  background: var(--c-main);
  color: white;
  padding: 12px 16px;
  font-weight: 600;
  text-align: left;
}
.table-interactive td {
  padding: 12px 16px;
  border-bottom: 1px solid #E5E7EB;
}
.table-interactive tbody tr:hover {
  background: #EFF6FF;
  transition: background 0.2s ease;
}

/* chalkboard */
.chalkboard {
  background: #2D5016;
  background-image:
    linear-gradient(rgba(255,255,255,0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.03) 1px, transparent 1px);
  background-size: 30px 30px;
  border: 12px solid #8B6914;
  border-radius: 4px;
  box-shadow: inset 0 0 40px rgba(0,0,0,0.3), 0 4px 12px rgba(0,0,0,0.2);
  padding: 2.5rem 2rem;
  margin: 2rem 0;
  min-height: 160px;
  position: relative;
  overflow: hidden;
}
.chalk-surface {
  font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive;
  font-size: 1.6rem;
  line-height: 2.2;
}
.chalk-char {
  display: inline-block;
  opacity: 0;
  text-shadow: 0 0 4px rgba(255,255,255,0.3);
}
.chalk-char.show { opacity: 1; }
.chalk-dust {
  position: absolute;
  width: 3px;
  height: 3px;
  border-radius: 50%;
  background: rgba(255,255,255,0.6);
  pointer-events: none;
  animation: dustFall 1.5s ease-out forwards;
}
@keyframes dustFall {
  0% { opacity: 1; transform: translate(0, 0); }
  100% { opacity: 0; transform: translate(var(--dx), var(--dy)); }
}

/* Add custom styling for keyword emphasis */
.keyword-strong {
  color: var(--c-main);
  font-weight: 800;
}
&lt;/style&gt;
&lt;/div&gt;
&lt;div class=&quot;pc&quot;&gt;&lt;!-- MathJax and Font dependencies --&gt;
&lt;div class=&quot;post-wrapper&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;0. 미용실에서 발견한 수학&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아빠가 얼마 전에 미용실에 갔어. 머리를 깎는데, 원장님이 그냥 가위로 자르지 않고 빗을 갖다 대고 가위질을 하더라고. 빗을 머리에 대고, 빗 위로 삐죽 튀어나온 머리카락만 싹둑싹둑 잘라내는 거야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 모습을 보면서 문득 이런 생각이 들었어. &quot;어차피 머리카락은 가위가 자르는 건데, 왜 굳이 빗을 갖다 댈까...?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다 갑자기 직선의 차함수가 떠올랐어. 소름...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빗을 대면 뭐가 좋아? 원장님은 빗 아래쪽 머리카락은 신경 쓸 필요가 없어져. 빗 위로 튀어나온 부분에만 집중하면 돼. 그래서 규칙적이고, 깔끔하고, 빠르게 자를 수 있는 거야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수학에서도 똑같아. 3차함수라는 복잡한 곡선에 직선(1차함수)을 갖다 대면, 직선 아래 부분은 무시하고, 직선 위로 튀어나온 부분에만 집중할 수 있어. 이게 바로 오늘 배울 &lt;span class=&quot;keyword-strong&quot;&gt;차함수 스킬&lt;/span&gt;이야.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;차함수 스킬 한 줄 요약: 복잡한 함수에 직선을 갖다 대면, 계산량이 80% 줄어든다.&lt;/blockquote&gt;
&lt;/div&gt;
&lt;!-- Section 1 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 차함수 스킬이란? &amp;mdash; 빗을 갖다 대는 원리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-1. 일단 상황을 보자&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3차함수 $f(x)$가 있어. 그리고 이 함수의 그래프와 3번 만나는 직선 $g(x)$가 있다고 해보자. 교점이 $x = a, b, c$ 세 곳이야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, $f(x) - g(x)$를 생각해보자. 이 차함수는 $x = a, b, c$에서 값이 0이 돼. 왜? 교점에서는 $f(x) = g(x)$니까, 빼면 당연히 0이지.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 $f(x)$는 3차, $g(x)$는 1차니까 $f(x) - g(x)$는 여전히 3차야. 3차함수인데 근이 $a, b, c$ 세 개? 그러면 이렇게 쓸 수 있어:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$f(x) - g(x) = h(x-a)(x-b)(x-c)$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 $h$는 $f(x)$의 최고차 계수야. 양변을 정리하면:&lt;/p&gt;
&lt;div class=&quot;math-hero&quot;&gt;
&lt;div class=&quot;math-hero-label&quot;&gt;핵심 공식&lt;/div&gt;
&lt;div class=&quot;math-hero-formula&quot;&gt;$$f(x) = h(x-a)(x-b)(x-c) + g(x)$$&lt;/div&gt;
&lt;/div&gt;
&lt;img style=&quot;width: 100%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/formula_001.png&quot; alt=&quot;차함수 스킬 핵심 공식&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;차함수 스킬 핵심 공식&lt;/div&gt;
&lt;img style=&quot;width: 100%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/graph_001_cubic_line.png&quot; alt=&quot;3차함수와 직선의 3교점, 그리고 차함수&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;3차함수와 직선의 3교점, 그리고 차함수&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 끝이야. 이 한 줄이 차함수 스킬의 전부야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-2. 이게 왜 대단한 건데?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 봐. 원래 $f(x) = ax^3 + bx^2 + cx + d$ 이런 식이었는데, 이제는 $(x-a)(x-b)(x-c)$라는 &lt;b&gt;거리곱&lt;/b&gt; 형태로 바뀌었어. 거리곱이 되면 뭐가 좋냐고? 특정 점에서의 함수값을 구할 때, 그냥 거리를 곱하면 끝이야. 복잡한 전개나 연립방정식이 필요 없어져.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 중요한 건, 이 변환은 &lt;b&gt;항등식&lt;/b&gt;이야. 식의 형태만 바꾼 거지, 함수 자체는 그대로야. 그러니까 어떤 계산을 하든 이 형태를 자유롭게 쓸 수 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미용실로 돌아가보자. 빗을 대기 전과 후, 머리카락 자체가 바뀐 건 아니야. 단지 관찰하기가 편해진 것뿐이야. 차함수 스킬도 마찬가지. 함수 자체는 그대로인데, 바라보는 방식만 바꾼 거야.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 2 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 왜 하필 직선(1차함수)인가?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 궁금할 수 있어. &quot;선생님, 빼는 함수가 꼭 직선이어야 해요? 2차함수를 빼면 안 되나요?&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 돼. 이론적으로 0차(상수함수), 1차, 2차 어떤 것이든 빼면 차함수를 만들 수 있어.&lt;/p&gt;
&lt;img style=&quot;width: 100%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/graph_002_comb.png&quot; alt=&quot;빗(직선) 위로 튀어나온 부분 = 차함수&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;빗(직선) 위로 튀어나온 부분 = 차함수&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 생각해봐. 미용실에서 빗이 곧아야 깔끔하게 자를 수 있잖아. 구부러진 빗으로 머리를 자르면 오히려 더 복잡해지지 않겠어? 직선은 가장 단순하고, 가장 익숙한 함수야. 기울기와 y절편, 딱 두 개만 알면 완전히 결정돼. 그래서 직선을 빗으로 사용하면 관찰이 가장 편해져.&lt;/p&gt;
&lt;div class=&quot;key-message&quot;&gt;&lt;span class=&quot;key-icon&quot;&gt; &lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실전에서도 거의 대부분 1차함수(직선)를 사용해. 그래서 앞으로 &quot;차함수 스킬&quot;이라고 하면, &lt;b&gt;&quot;1차 차함수 스킬&quot;&lt;/b&gt;을 말하는 거라고 생각하면 돼. 물론 상수함수(0차)를 사용하는 경우도 있어. 그건 빗 중에서도 가장 단순한 &quot;수평 빗&quot;인 셈이지. 원리는 똑같아!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Section 3 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 차함수 스킬의 핵심 공식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 정리하자. 3차함수 $f(x)$와 직선 $g(x)$가 $x = a, b, c$에서 만날 때:&lt;/p&gt;
&lt;!-- 칠판 판서 1 --&gt;
&lt;div class=&quot;chalkboard reveal&quot; data-chalk=&quot;[
        {&amp;quot;text&amp;quot;: &amp;quot;f(x) = h(x-a)(x-b)(x-c) + g(x)&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;blue&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;none&amp;quot;},
        {&amp;quot;text&amp;quot;: &amp;quot;&amp;uarr; 거리곱&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;yellow&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;underline&amp;quot;},
        {&amp;quot;text&amp;quot;: &amp;quot;&amp;uarr; 보정(되돌아가기)&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;yellow&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;underline&amp;quot;}
      ]&quot;&gt;
&lt;div class=&quot;chalk-surface&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 공식의 각 부분이 뭘 의미하는지 짚어볼게.&lt;/p&gt;
&lt;table class=&quot;table-interactive&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;부분&lt;/th&gt;
&lt;th&gt;의미&lt;/th&gt;
&lt;th&gt;미용실 비유&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;$h(x-a)(x-b)(x-c)$&lt;/td&gt;
&lt;td&gt;차함수 (=빗 위로 튀어나온 부분)&lt;/td&gt;
&lt;td&gt;잘라야 할 머리카락&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$g(x)$&lt;/td&gt;
&lt;td&gt;기준 직선 (=빗)&lt;/td&gt;
&lt;td&gt;빗 자체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$a, b, c$&lt;/td&gt;
&lt;td&gt;교점의 x좌표&lt;/td&gt;
&lt;td&gt;빗이 머리에 닿는 점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$h$&lt;/td&gt;
&lt;td&gt;최고차 계수&lt;/td&gt;
&lt;td&gt;머리카락의 굵기(?)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이 공식을 읽는 법:&lt;/b&gt; &quot;f(x)는 직선 g(x)와 a, b, c에서 만나는 3차함수다.&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 $f(x) = ax^3 + bx^2 + cx + d$라고 쓰면 미지수가 4개(a, b, c, d)야. 조건 4개를 모아서 연립방정식을 풀어야 해. 그런데 차함수 스킬로 바꾸면? 교점 정보가 이미 식에 들어가 있으니까, 남은 미지수가 확 줄어들어. 이게 계산량 80% 감소의 비밀이야.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 4 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 거리곱 + 보정 = 암산급 계산&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4-1. 함수값 구하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이제 실전이야. 예를 들어볼게.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;$f(x)$는 최고차계수가 1인 3차함수이고, 직선 $g(x) = 3x - 2$와 $x = 1, 4, 5$에서 만난다. $f(6)$의 값은?&lt;/blockquote&gt;
&lt;div class=&quot;math-steps&quot;&gt;
&lt;div class=&quot;math-step reveal&quot;&gt;&lt;span class=&quot;step-num&quot;&gt;Step 1&lt;/span&gt;
&lt;div class=&quot;step-content&quot;&gt;$$f(x) = (x-1)(x-4)(x-5) + (3x-2)$$&lt;/div&gt;
&lt;p class=&quot;step-desc&quot; data-ke-size=&quot;size16&quot;&gt;차함수 스킬을 적용하여 식을 세웁니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;math-step reveal&quot;&gt;&lt;span class=&quot;step-num&quot;&gt;Step 2&lt;/span&gt;
&lt;div class=&quot;step-content&quot;&gt;$$f(6) = (6-1)(6-4)(6-5) + (3 \cdot 6 - 2)$$&lt;/div&gt;
&lt;p class=&quot;step-desc&quot; data-ke-size=&quot;size16&quot;&gt;$x = 6$을 대입합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;math-step reveal&quot;&gt;&lt;span class=&quot;step-num&quot;&gt;Step 3&lt;/span&gt;
&lt;div class=&quot;step-content&quot;&gt;$$= 5 \cdot 2 \cdot 1 + 16 = 26$$&lt;/div&gt;
&lt;p class=&quot;step-desc&quot; data-ke-size=&quot;size16&quot;&gt;끝이야. &lt;b&gt;거리곱 + 보정 = 답.&lt;/b&gt; 복잡한 전개나 연립방정식이 필요 없어.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;img style=&quot;width: 80%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/formula_004.png&quot; alt=&quot;f(6) = 5&amp;times;2&amp;times;1 + 16 = 26&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;f(6) = 5&amp;times;2&amp;times;1 + 16 = 26&lt;/div&gt;
&lt;img style=&quot;width: 100%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/graph_003_distance.png&quot; alt=&quot;x=6에서 각 근까지의 거리곱&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;x=6에서 각 근까지의 거리곱&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 차함수 스킬 없이 풀었다면? $f(x) = x^3 + bx^2 + cx + d$에 $f(1) = 1$, $f(4) = 10$, $f(5) = 13$ 조건을 넣어서 3원 연립방정식을 풀어야 해. 시간 차이가 느껴지지?&lt;/p&gt;
&lt;table class=&quot;table-interactive&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;무대포 연립&lt;/th&gt;
&lt;th&gt;차함수 스킬&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;식 세우기&lt;/td&gt;
&lt;td&gt;$f(x) = x^3 + bx^2 + cx + d$&lt;/td&gt;
&lt;td&gt;$f(x) = (x-1)(x-4)(x-5) + (3x-2)$&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;필요한 작업&lt;/td&gt;
&lt;td&gt;3원 연립방정식 풀기&lt;/td&gt;
&lt;td&gt;$x=6$ 대입 한 번&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;계산 단계&lt;/td&gt;
&lt;td&gt;10단계+&lt;/td&gt;
&lt;td&gt;3단계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;실수 가능성&lt;/td&gt;
&lt;td&gt;높음 (연립 과정에서)&lt;/td&gt;
&lt;td&gt;낮음 (곱셈 한 번)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;소요 시간&lt;/td&gt;
&lt;td&gt;5분+&lt;/td&gt;
&lt;td&gt;30초&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;img style=&quot;width: 80%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/formula_002.png&quot; alt=&quot;함수값 일반 공식&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;함수값 일반 공식&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4-2. 미분계수 구하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미분계수도 마찬가지야. 같은 예시에서 $f'(5)$를 구해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$f(x) = (x-1)(x-4)(x-5) + (3x-2)$에서, 차함수 부분의 $x=5$에서의 미분계수를 구해야 해. 차함수 $(x-1)(x-4)(x-5)$는 $x=5$에서 값이 0이고, 미분하면 곱의 미분법에 의해 $x=5$에서의 미분계수는:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$(5-1)(5-4) = 4 \cdot 1 = 4$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 이렇게 되냐고? $(x-1)(x-4)(x-5)$를 미분할 때, $x=5$를 대입하면 $(x-5)$ 항이 포함된 부분은 전부 0이 되고, $(x-5)$가 미분된 항만 살아남거든.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 직선 $g(x) = 3x - 2$의 기울기 3을 더하면:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$$f'(5) = 4 + 3 = 7$$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것도 &lt;b&gt;거리곱(미분) + 보정(직선 기울기) = 답.&lt;/b&gt; 같은 패턴이야.&lt;/p&gt;
&lt;img style=&quot;width: 80%;&quot; src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/차함수002/formula_003.png&quot; alt=&quot;미분계수 일반 공식&quot; /&gt;
&lt;div class=&quot;img-caption&quot;&gt;미분계수 일반 공식&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심 구조를 정리하면:&lt;/p&gt;
&lt;!-- 칠판 판서 2 --&gt;
&lt;div class=&quot;chalkboard reveal&quot; data-chalk=&quot;[
        {&amp;quot;text&amp;quot;: &amp;quot;① 내려오기 (차함수)&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;white&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;none&amp;quot;},
        {&amp;quot;text&amp;quot;: &amp;quot;② 관찰 (거리곱)&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;blue&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;none&amp;quot;},
        {&amp;quot;text&amp;quot;: &amp;quot;③ 되돌아가기 (보정)&amp;quot;, &amp;quot;color&amp;quot;: &amp;quot;yellow&amp;quot;, &amp;quot;effect&amp;quot;: &amp;quot;star&amp;quot;}
      ]&quot;&gt;
&lt;div class=&quot;chalk-surface&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 차함수 스킬의 기본 프로토콜이야. 빗을 대서 내려가고, 관찰하고, 다시 올라오는 거지.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 5 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. 3차는 무조건 된다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 좋은 소식이 있어. &lt;b&gt;어떤 3차함수든, 직선을 잘 설정하면 무조건 3번 만나게 할 수 있어.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 그런지 생각해보자. 3차함수가 극대와 극소를 가지려면, 도함수(2차함수)가 실근 2개를 가져야 해. 3차함수의 도함수는 $f'(x) = 3ax^2 + 2bx + c$ 형태의 포물선이야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 포물선에 상수함수 $y = k$를 위아래로 움직여보면, 어떤 $k$에서는 반드시 포물선과 2번 만나는 구간이 있어. 도함수의 상수 부분은 원함수의 1차항 계수에 해당하니까, 결국 1차항 계수를 조절하면 어떤 3차함수든 극대&amp;middot;극소를 만들 수 있다는 거야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;극대&amp;middot;극소가 생기면, 그 사이를 지나는 직선을 그으면 반드시 3교점이 생겨. 마치 일본에서 물고기를 꼬치에 끼워서 굽는 것처럼, 직선이 3차함수의 곡선을 쭉 관통하는 모양이야.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 4차함수는 어떨까? 4차함수는 모양에 따라 아무리 직선을 움직여도 4번 만나게 할 수 없는 경우가 있어. 그래서 실전에서는 주로 &lt;b&gt;3차함수 + 1차 차함수&lt;/b&gt; 조합이 가장 강력해.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 6 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. 출제자도 이렇게 문제를 만든다&lt;/h2&gt;
&lt;div class=&quot;key-message&quot;&gt;&lt;span class=&quot;key-icon&quot;&gt; &lt;/span&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 말하면, 수능이나 모의고사에서 3차함수 문제를 내는 출제자들도 이 원리를 알고 문제를 설계해. &quot;3차함수와 직선이 만나는 조건&quot;이 주어지면, 출제자는 네가 차함수 스킬을 쓸 줄 아는지를 보는 거야.&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차함수 스킬을 모르면? $ax^3 + bx^2 + cx + d$에 조건을 하나하나 넣어서 4원 연립방정식을 풀어야 해. 시간은 시간대로 잡아먹고, 실수 확률은 올라가고, 결국 못 풀 수도 있어.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;차함수 스킬을 알면? 조건이 이미 식에 녹아 있으니까, 핵심 계산만 딱 하면 끝. 이게 바로 빗의 힘이야.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Section 7 --&gt;
&lt;div class=&quot;reveal&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 정리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 배운 핵심을 정리하자.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;차함수 스킬이란?&lt;/b&gt; 3차함수에 적절한 직선을 갖다 대서(차함수를 만들어서), 복잡한 식을 거리곱 형태로 단순화하는 기법이야.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용법:&lt;/b&gt; 내려오기(차함수) &amp;rarr; 관찰(거리곱) &amp;rarr; 되돌아가기(보정)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;왜 직선인가?&lt;/b&gt; 직선이 가장 단순하고 익숙하니까. 빗은 곧아야 해.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;어디에 쓰나?&lt;/b&gt; 3차함수 문제에서 가장 강력해. 함수값, 미분계수, 접선 조건 등 거의 모든 계산에 적용 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아빠가 미용실에서 빗 하나로 깨달은 것처럼, 너도 직선 하나로 3차함수의 세계가 달라지는 걸 느꼈으면 좋겠어. 다음 편에서는 차함수 스킬을 실전 문제에 적용하는 연습을 해볼 거야!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- End post-wrapper --&gt;&lt;/div&gt;
&lt;!-- End pc --&gt;
&lt;script&gt;
// MathJax Load
MathJax = {
  tex: { inlineMath: [['$','$'], ['\\(','\\)']], displayMath: [['$$','$$'], ['\\[','\\]']] },
  options: { skipHtmlTags: ['script','noscript','style','textarea','pre','code'] }
};
&lt;/script&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
// reveal intersection observer
const observer = new IntersectionObserver((entries) =&gt; {
  entries.forEach(entry =&gt; {
    if (entry.isIntersecting) {
      entry.target.classList.add('visible');
    }
  });
}, { threshold: 0.15 });
document.querySelectorAll('.reveal').forEach(el =&gt; observer.observe(el));

// chalkboard animation
function animateChalkboard(el) {
  const data = JSON.parse(el.dataset.chalk);
  const surface = el.querySelector('.chalk-surface');
  const colors = { white: 'rgba(255,255,255,0.95)', yellow: '#FFD700', red: '#FF6B6B', blue: '#6CB4EE' };
  let totalDelay = 0;

  data.forEach((line, lineIdx) =&gt; {
    const lineDiv = document.createElement('div');
    lineDiv.style.marginBottom = '0.5rem';
    const chars = line.text.split('');
    
    chars.forEach((char, i) =&gt; {
      const span = document.createElement('span');
      span.className = 'chalk-char';
      span.textContent = char;
      span.style.color = colors[line.color] || colors.white;
      const rot = (Math.random() - 0.5) * 5; 
      const scale = 0.97 + Math.random() * 0.06; 
      const dy = (Math.random() - 0.5) * 3; 
      span.style.transform = `rotate(${rot}deg) scale(${scale}) translateY(${dy}px)`;
      
      setTimeout(() =&gt; {
        span.classList.add('show');
        if (i % 3 === 0) {
          for (let p = 0; p &lt; 2; p++) {
            const dust = document.createElement('div');
            dust.className = 'chalk-dust';
            dust.style.left = span.offsetLeft + 'px';
            dust.style.top = span.offsetTop + 'px';
            dust.style.setProperty('--dx', (Math.random()-0.5)*20 + 'px');
            dust.style.setProperty('--dy', Math.random()*15 + 5 + 'px');
            el.appendChild(dust);
            setTimeout(() =&gt; dust.remove(), 1500);
          }
        }
      }, totalDelay + i * 32); 
    });
    
    if (line.effect === 'underline') {
      setTimeout(() =&gt; {
        lineDiv.style.borderBottom = `2px solid ${colors[line.color]}`;
        lineDiv.style.paddingBottom = '4px';
      }, totalDelay + chars.length * 32 + 200);
    }
    
    if (line.effect === 'star') {
      setTimeout(() =&gt; {
        const star = document.createElement('span');
        star.textContent = ' ⭐';
        star.style.fontSize = '1.4rem';
        star.style.animation = 'starPop 0.4s ease';
        lineDiv.appendChild(star);
      }, totalDelay + chars.length * 32 + 200);
    }
    
    totalDelay += chars.length * 32 + 300;
    surface.appendChild(lineDiv);
  });
}

const chalkObserver = new IntersectionObserver((entries) =&gt; {
  entries.forEach(entry =&gt; {
    if (entry.isIntersecting &amp;&amp; !entry.target.dataset.animated) {
      entry.target.dataset.animated = 'true';
      entry.target.classList.add('visible');
      animateChalkboard(entry.target);
    }
  });
}, { threshold: 0.3 });
document.querySelectorAll('.chalkboard').forEach(el =&gt; chalkObserver.observe(el));
&lt;/script&gt;</description>
      <category>고1수학</category>
      <category>3차함수</category>
      <category>거리곱</category>
      <category>고1수학</category>
      <category>다항함수</category>
      <category>수학개념</category>
      <category>차함수</category>
      <category>차함수스킬</category>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/4</guid>
      <comments>https://fafamath.tistory.com/4#entry4comment</comments>
      <pubDate>Wed, 8 Apr 2026 22:13:55 +0900</pubDate>
    </item>
    <item>
      <title>[함수그래프의 이동,축소,확대_001] 함수식을 버리고, &amp;quot;관계식&amp;quot;의 눈으로 바라보라.</title>
      <link>https://fafamath.tistory.com/3</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
    &lt;style&gt;
@import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css');
@import url('https://fonts.googleapis.com/css2?family=Gaegu:wght@400;700&amp;family=Nanum+Pen+Script&amp;family=Hi+Melody&amp;display=swap');

:root {
  --color-primary: #2563EB;
  --color-primary-light: #3B82F6;
  --color-primary-dark: #1D4ED8;
  --color-primary-bg: #EFF6FF;
  --color-accent: #F59E0B;
  --color-accent-light: #FCD34D;
  --color-accent-dark: #D97706;
  --color-accent-bg: #FFFBEB;
  --color-success: #10B981;
  --color-danger: #EF4444;
  --color-warning: #F97316;
  --color-info: #6366F1;
  --color-text: #1E293B;
  --color-text-secondary: #64748B;
  --color-text-muted: #94A3B8;
  --color-bg: #FFFFFF;
  --color-bg-subtle: #F8FAFC;
  --color-bg-card: #FFFFFF;
  --color-border: #E2E8F0;
  --color-border-strong: #CBD5E1;
  
  --font-heading: 'Pretendard', -apple-system, sans-serif;
  --font-body: 'Pretendard', -apple-system, sans-serif;
  --font-mono: 'JetBrains Mono', 'D2Coding', monospace;
  --font-accent: 'RIDIBatang', 'Noto Serif KR', serif;
  
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  
  --leading-tight: 1.4;
  --leading-normal: 1.8;
  --leading-relaxed: 2.0;
  
  --tracking-tight: -0.02em;
  --tracking-normal: -0.01em;
  --tracking-wide: 0.02em;
  
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --section-gap: var(--space-16);
  --paragraph-gap: var(--space-6);
  --content-width: 720px;
  --content-padding: var(--space-6);
  
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-xl: 24px;
  
  --shadow-sm: 0 1px 3px rgba(0,0,0,0.08);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.1);
  --shadow-lg: 0 8px 30px rgba(0,0,0,0.12);
}

.post-container {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: var(--space-8) var(--content-padding);
  font-family: var(--font-body);
  font-size: var(--text-lg);
  line-height: var(--leading-normal);
  color: var(--color-text);
  letter-spacing: var(--tracking-normal);
  word-break: keep-all;
  overflow-wrap: break-word;
}
.post-container * { box-sizing: border-box; }
.post-container p { margin: 0 0 var(--paragraph-gap) 0; }
.post-container strong { color: var(--color-primary-dark); font-weight: 700; }
.post-container hr { border: none; height: 1px; background: var(--color-border); margin: var(--section-gap) 0; }
.post-container ul, .post-container ol { padding-left: var(--space-6); margin: var(--space-4) 0; }
.post-container li { margin-bottom: var(--space-2); }

.reveal {
  opacity: 0; transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-delay-1 { transition-delay: 0.1s; }

.section-header {
  display: flex; align-items: baseline; gap: var(--space-4);
  margin-bottom: var(--space-8); padding-bottom: var(--space-4);
  border-bottom: 2px solid var(--color-primary);
}
.section-number { font-size: var(--text-3xl); font-weight: 800; color: var(--color-primary); opacity: 0.3; font-family: var(--font-mono); }
.section-title { font-size: var(--text-2xl); font-weight: 700; color: var(--color-text); margin: 0; }

.key-message {
  display: flex; gap: var(--space-4); padding: var(--space-6);
  background: var(--color-accent-bg); border-radius: var(--radius-lg);
  border-left: 4px solid var(--color-accent); margin: var(--space-8) 0;
}
.key-message-icon { font-size: var(--text-2xl); flex-shrink: 0; }
.key-message-text { font-family: var(--font-accent); font-size: var(--text-lg); line-height: var(--leading-relaxed); color: var(--color-text); font-weight: 500; }

.math-highlight {
  display: block; padding: var(--space-6) var(--space-8); margin: var(--space-8) 0;
  background: var(--color-primary-bg); border-left: 4px solid var(--color-primary);
  border-radius: var(--radius-md); position: relative; overflow: hidden;
}
.math-highlight.visible { animation: mathGlow 1.5s ease-out; }
@keyframes mathGlow {
  0% { box-shadow: 0 0 0 rgba(37,99,235,0); }
  30% { box-shadow: 0 0 30px rgba(37,99,235,0.2); }
  100% { box-shadow: var(--shadow-sm); }
}

.math-steps { margin: var(--space-8) 0; }
.math-step { padding: var(--space-4) var(--space-6); margin: var(--space-2) 0; border-left: 3px solid var(--color-border); position: relative; }
.math-step:hover { border-left-color: var(--color-primary); background: var(--color-bg-subtle); }
.step-label { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--color-primary); font-weight: 700; text-transform: uppercase; letter-spacing: var(--tracking-wide); }

.accordion { border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; margin: var(--space-6) 0; }
.accordion-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4) var(--space-6); background: var(--color-bg-subtle); cursor: pointer; font-weight: 600; user-select: none; transition: background 0.2s ease; }
.accordion-header:hover { background: var(--color-border); }
.accordion-icon { transition: transform 0.3s ease; font-size: 1.2em; }
.accordion.open .accordion-icon { transform: rotate(180deg); }
.accordion-body { max-height: 0; overflow: hidden; transition: max-height 0.4s ease-out, padding 0.3s ease; padding: 0 var(--space-6); }
.accordion.open .accordion-body { max-height: 2000px; padding: var(--space-6); }

.chalkboard { background: linear-gradient(170deg, #2e4a3a 0%, #243832 40%, #1e3028 100%); border-radius: var(--radius-lg); padding: var(--space-8) var(--space-8) var(--space-12); position: relative; overflow: hidden; margin: var(--space-8) 0; }
.chalkboard::before { content: ''; position: absolute; inset: 0; background: url(&quot;data:image/svg+xml,%3Csvg width='200' height='200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='0.65' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E&quot;); pointer-events: none; border-radius: var(--radius-lg); }
.chalk-tray { position: absolute; bottom: 8px; left: 50%; transform: translateX(-50%); display: flex; gap: 12px; opacity: 0.45; }
.chalk-tray-dot { width: 8px; height: 8px; border-radius: 50%; background: #EBE6DC; }
.chalk-tray-dot:nth-child(2) { background: #FCD34D; }
.chalk-tray-dot:nth-child(3) { background: #F87171; }
.chalk-tray-dot:nth-child(4) { background: #93C5FD; }

.chalk-w .ch { color: rgba(235, 230, 220, 0.88); text-shadow: 1px 1px 2px rgba(235,230,220,0.08), -0.5px 0 1px rgba(235,230,220,0.05); }
.chalk-y .ch { color: rgba(252, 211, 77, 0.9); text-shadow: 1px 1px 2px rgba(252,211,77,0.08); }
.chalk-r .ch { color: rgba(248, 113, 113, 0.88); text-shadow: 1px 1px 2px rgba(248,113,113,0.08); }
.chalk-b .ch { color: rgba(147, 197, 253, 0.88); text-shadow: 1px 1px 2px rgba(147,197,253,0.08); }

.chalk-row { font-size: 22px; line-height: 2.1; margin-bottom: 0.5rem; position: relative; white-space: pre-wrap; display: flex; flex-wrap: wrap; align-items: baseline; }
.ch { display: inline-block; opacity: 0; font-family: 'Nanum Pen Script', 'Hi Melody', 'Gaegu', cursive; }
.ch.on { opacity: 1; }
.chalk-dust { position: absolute; border-radius: 50%; pointer-events: none; animation: dustFall 1.2s ease-out forwards; }
@keyframes dustFall { 0% { opacity: 0.5; transform: translate(0, 0); } 100% { opacity: 0; transform: translate(var(--dx), var(--dy)); } }
.chalk-underline-draw { position: absolute; bottom: 2px; left: 0; height: 3px; border-radius: 2px; opacity: 0.5; width: 0; transition: width 0.6s ease-out; background: inherit; }
.chalk-underline-wrapper { position: relative; display: inline-block; }
.chalk-box { border: 2.5px dashed rgba(252, 211, 77, 0.3); border-radius: 10px; padding: 1rem 1.4rem; margin: 0.6rem 0 1rem; text-align: center; font-family: 'Nanum Pen Script', cursive; opacity: 0; transition: opacity 0.3s; }
.chalk-box.on { opacity: 1; }

.tabs { margin: var(--space-8) 0; }
.tab-buttons { display: flex; border-bottom: 2px solid var(--color-border); gap: 0; }
.tab-btn { padding: var(--space-3) var(--space-6); border: none; background: none; cursor: pointer; font-weight: 500; color: var(--color-text-secondary); border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.2s ease; font-size: var(--text-base); }
.tab-btn.active { color: var(--color-primary); border-bottom-color: var(--color-primary); font-weight: 700; }
.tab-btn:hover:not(.active) { color: var(--color-text); background: var(--color-bg-subtle); }
.tab-panel { display: none; padding: var(--space-6) 0; animation: fadeIn 0.3s ease; }
.tab-panel.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }

.post-image { margin: var(--space-8) 0; text-align: center; }
.post-image img { max-width: 100%; border-radius: var(--radius-md); box-shadow: var(--shadow-sm); }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div class=&quot;post-container&quot;&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;00&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;관계식의 눈으로 보라&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page01.png&quot; alt=&quot;page01&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;아빠가 오늘 좀 중요한 이야기를 하려고 해.&lt;/p&gt;
  &lt;p&gt;너, 함수 그래프 변형 공부할 때 공식 몇 개나 외워야 하는지 알아? 평행이동, 대칭이동, 압축, 팽창, 축소, 확대... 하나하나 공식을 다 외우려고 하면 대충 10개는 넘어. 그런데 문제는 말이야, 오늘 외운 공식을 한 달 뒤 시험장에서 정확히 써먹을 수 있느냐는 거야.&lt;/p&gt;
  &lt;p&gt;솔직히 말해볼까? 못 써.&lt;/p&gt;
  &lt;p&gt;아니, 정확히 말하면 &quot;약간 다르게&quot; 기억해서 틀려. &quot;x에 마이너스를 붙이는 건가, 플러스를 붙이는 건가?&quot; &quot;2를 곱하는 건가, 2분의 1을 곱하는 건가?&quot; 이런 데서 실수가 나. 분명히 외웠는데, 시험장에서 손이 멈춰. 그리고 결국 감으로 찍어. 이게 현실이야.&lt;/p&gt;
  &lt;p&gt;그래서 아빠는 이 시리즈에서 전혀 다른 접근법을 제안하려고 해.&lt;/p&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;&quot;외우지 마. 유도해. 30초면 돼.&quot;&lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;응? 30초 안에 유도한다고? 그게 가능하냐고? 가능해. 정말 간단한 아이디어 하나만 알면 돼. 그 아이디어를 지금부터 알려줄게.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;공식을 외우면 왜 틀리는가&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page02.png&quot; alt=&quot;page02&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;학교에서 이런 문장을 배운 적 있지?&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;&quot;y = f(x)의 그래프를 x축 방향으로 3만큼 평행이동하려면, x 대신 x빼기3을 대입하면 된다.&quot;&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;처음 이 말을 들었을 때 어떤 생각이 들었어? 아마 이랬을 거야. &quot;어... 플러스 3 이동인데 왜 마이너스 3을 대입하지?&quot; 그러면서도 &quot;선생님이 그렇다고 하니까 일단 외우자&quot;라고 했겠지.&lt;/p&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt;⚠️&lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;여기서 문제가 시작돼. 이해하지 못하고 외운 공식은 반드시 흔들려.&lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;시험장에서 긴장하면 더 흔들려. 플러스인지 마이너스인지, 곱하는지 나누는지, 그 순간 머릿속이 하얘지는 경험, 해본 적 있지? 그건 네가 멍청해서가 아니야. 이해 없이 외운 공식의 당연한 결말이야.&lt;/p&gt;
  &lt;p&gt;공식을 10개 외우면 10개가 다 흔들려. 근데 원리 하나를 이해하면? 시험장에서 30초 만에 직접 유도해낼 수 있어. 유도한 공식은 절대 안 흔들려. 네가 직접 만든 거니까.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;깨봉 박사님의 네트워크 — 여기서 시작이야&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page03.png&quot; alt=&quot;page03&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;아빠가 존경하는 깨봉 선생님의 유튜브 영상 하나를 봤어. 연립방정식을 설명하는 영상이었는데, 거기서 깨봉 선생님이 이런 말씀을 하셨어.&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;&quot;연립방정식을 네트워크로 생각하면 쉬워요.&quot;&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;5개의 식, 5개의 변수. 보통은 대입법이니 가감법이니 해서 기계적으로 풀잖아. 그런데 깨봉 선생님은 완전히 다르게 접근하셨어. 각각의 식을 &quot;변수들 사이의 관계&quot;로 보고, 그 관계들을 네트워크처럼 연결해서 시각화하신 거야.&lt;/p&gt;
  &lt;p&gt;a와 e의 관계, b와 e의 관계, c와 e의 관계... 이렇게 e를 중심으로 모든 변수가 네트워킹이 되어 있으니까, 테두리에 있는 a, b, c, d를 전부 e로 나타낼 수 있어. 마지막 관계식에 대입하면 e 하나로 된 식이 나오고. 끝.&lt;/p&gt;
  &lt;p&gt;아빠가 이 영상을 보고 정말 감동받았어.&lt;/p&gt;
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;방정식은 &quot;답을 구하는 계산&quot;이 아니라 &quot;변수들 사이의 관계&quot;다.&lt;/div&gt;
  &lt;/div&gt;
  &lt;p&gt;그리고 그 관계를 네트워크로 보면, 복잡한 것도 하나씩 연결해서 풀어낼 수 있다. 이 사고방식이 너무 좋아서, 아빠는 이걸 함수에도 적용해보기로 했어. 그리고 놀라운 걸 발견했어. 함수 그래프 변형 문제가 확 쉬워지더라고.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;함수식이라는 감옥&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page04.png&quot; alt=&quot;page04&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;우리가 수학 시간에 배우는 함수. y = f(x). 이걸 어떻게 배웠어?&lt;/p&gt;
  &lt;p&gt;&quot;x에 어떤 값을 넣으면 y가 나온다.&quot;&lt;/p&gt;
  &lt;p&gt;맞지? x가 입력이고 y가 출력이야. 자판기처럼. 동전을 넣으면 음료수가 나오듯이, x를 넣으면 y가 나와. 이 사고방식, 나쁘지 않아. 함수의 기본 개념으로는 완벽해.&lt;/p&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page05.png&quot; alt=&quot;page05&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;근데 문제가 하나 있어.&lt;/p&gt;
  &lt;p&gt;이 사고방식은 철저하게 &lt;strong&gt;x 중심&lt;/strong&gt;이야. x가 주인공이고, y는 x에 종속된 부하 같은 존재야. x가 결정되면 y는 자동으로 따라오는 거니까.&lt;/p&gt;
  &lt;p&gt;그런데 말이야, 요즘 수학 문제를 잘 들여다보면 재미있는 변화가 보여. 예전에는 &quot;x=2일 때 y의 값을 구하시오&quot; 같은 문제가 많았어. 전형적인 x 중심 문제지. 근데 요즘은? &quot;y=0이 되는 x의 개수를 구하시오&quot;, &quot;y가 0보다 큰 x의 범위를 구하시오&quot; 이런 문제가 늘고 있어.&lt;/p&gt;
  &lt;p&gt;심지어 킬러 문항에서는 y의 조건을 먼저 주고, 거기서 x를 역추적하라는 문제가 나와.&lt;/p&gt;
  &lt;p&gt;무슨 말이냐면, 이제 &lt;strong&gt;y도 x만큼 중요한 주인공이 됐다&lt;/strong&gt;는 거야. x에서 y로의 일방통행이 아니라, x와 y가 서로 대등하게 얽혀 있는 관계. 그 관계를 읽어내는 능력을 시험하겠다는 거지.&lt;/p&gt;
  &lt;p&gt;그런데 우리는 여전히 &quot;y = f(x)&quot;라는 함수식에 갇혀서, x를 넣어서 y를 구한다는 생각만 하고 있어. 이게 감옥이야. 이 감옥에서 나와야 해.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;관계식이라는 자유 — x와 y를 평등하게&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page06.png&quot; alt=&quot;page06&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;감옥에서 나오는 방법은 간단해. &lt;strong&gt;&quot;함수식&quot;을 &quot;관계식&quot;으로 바꿔서 보는 거야.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;\(y = 2x + 3\)이라는 함수식을 생각해봐. 이건 &quot;x를 넣으면 y가 나온다&quot;는 사고방식이야. 그런데 이걸 이렇게 써보면 어떨까?&lt;/p&gt;
  
  &lt;div class=&quot;math-highlight reveal&quot;&gt;
    $$2x - y + 3 = 0$$
  &lt;/div&gt;
  
  &lt;p&gt;뭐가 달라졌냐고? 글자만 바뀌었지 같은 거 아니냐고?&lt;/p&gt;
  &lt;p&gt;아니, 달라. 놀라울 정도로 달라.&lt;/p&gt;
  &lt;p&gt;첫 번째 형태 \(y = 2x + 3\)에서는 x가 원인이고 y가 결과야. x → y. 일방통행. 그런데 두 번째 형태 \(2x - y + 3 = 0\)에서는? x와 y가 &lt;strong&gt;평등해&lt;/strong&gt;. 둘 다 이 관계식을 만족시키는 파트너야. 어느 쪽이 입력이고 어느 쪽이 출력이라는 위계가 없어.&lt;/p&gt;
  &lt;p&gt;신기한 게 있어. 이렇게 표현을 바꾸는 것만으로도 우리 뇌의 사고방식이 바뀌어. \(y = 2x + 3\)을 보면 뇌가 자동으로 &quot;x값을 대입해서 y값을 구해야지&quot;라는 1차적 사고를 해. 그런데 \(2x - y + 3 = 0\)을 보면? &quot;x와 y가 어떤 관계로 엮여 있구나&quot;라는 2차적 사고로 업그레이드돼.&lt;/p&gt;
  &lt;p&gt;이 2차적 사고가 바로 요즘 수능 문제에서 요구하는 트렌드야.&lt;/p&gt;

  &lt;div class=&quot;chalkboard reveal&quot; data-script='[
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-y&quot;, &quot;text&quot;: &quot;★ 핵심은 딱 하나야.&quot;, &quot;size&quot;: 26, &quot;bold&quot;: true},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 300},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-w&quot;, &quot;text&quot;: &quot;y = 2x + 3  ← 함수식. x가 주인.&quot;, &quot;size&quot;: 21},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 250},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-b&quot;, &quot;text&quot;: &quot;2x - y + 3 = 0  ← 관계식. x와 y가 평등.&quot;, &quot;size&quot;: 21},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 350},
    {&quot;type&quot;: &quot;box&quot;, &quot;color&quot;: &quot;chalk-y&quot;, &quot;main&quot;: &quot;함수식 말고 관계식으로 봐.&quot;, &quot;sub&quot;: &quot;이 작은 시선의 전환이 모든 걸 바꾼다.&quot;, &quot;underline&quot;: true}
  ]'&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;방법론 하나로 공식 10개를 대체한다&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page07.png&quot; alt=&quot;page07&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;자, 이제 핵심이야. 관계식의 눈으로 그래프 변형을 바라보면, 모든 변형에 적용되는 &lt;strong&gt;하나의 방법론&lt;/strong&gt;이 보여.&lt;/p&gt;
  &lt;p&gt;그 방법론은 딱 4단계야.&lt;/p&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page08.png&quot; alt=&quot;page08&quot;&gt;&lt;/figure&gt;
  
  &lt;div class=&quot;math-steps&quot;&gt;
    &lt;div class=&quot;math-step reveal&quot;&gt;
      &lt;span class=&quot;step-label&quot;&gt;Step 1&lt;/span&gt;
      &lt;div&gt;주어진 함수를 관계식으로 본다. \(f(x, y) = 0\).&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;math-step reveal reveal-delay-1&quot;&gt;
      &lt;span class=&quot;step-label&quot;&gt;Step 2&lt;/span&gt;
      &lt;div&gt;변형 조건에서, 원래 점 (x, y)와 새 점 (X, Y) 사이의 관계식을 뽑아낸다.&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;math-step reveal reveal-delay-2&quot;&gt;
      &lt;span class=&quot;step-label&quot;&gt;Step 3&lt;/span&gt;
      &lt;div&gt;x = 뭔가, y = 뭔가 형태로 정리한다.&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;math-step reveal reveal-delay-3&quot;&gt;
      &lt;span class=&quot;step-label&quot;&gt;Step 4&lt;/span&gt;
      &lt;div&gt;원래 관계식에 대입한다. 새 관계식 완성.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;끝이야. 이게 전부야.&lt;/p&gt;
  &lt;p&gt;평행이동이든 대칭이동이든 압축이든 팽창이든 축소든 확대든, 이 4단계 구조는 &lt;strong&gt;절대 변하지 않아&lt;/strong&gt;. 달라지는 건 딱 2단계뿐이야. 2단계의 관계식이 뭔지만 알면, 나머지는 기계적으로 따라가면 돼.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;직접 해보자 — 4단계 실전 적용&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page09.png&quot; alt=&quot;page09&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;말로만 하면 와닿지 않으니까, 직접 해보자.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;문제&lt;/strong&gt;: 관계식이 \(x + y + 3 = 0\)인 그래프를 x축으로 +3, y축으로 -2만큼 평행이동한 그래프의 관계식을 구하여라.&lt;/p&gt;
  &lt;p&gt;자, 잠깐. 시작하기 전에 딱 한 가지만 정리하고 가자.&lt;/p&gt;
  &lt;p&gt;우리가 구하려는 건 &lt;strong&gt;평행이동한 새 그래프&lt;/strong&gt;야. 이 새 그래프 위의 임의의 점을 &lt;strong&gt;(X, Y)&lt;/strong&gt; 라고 하자. 그러면 우리의 목적은 딱 하나야.&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;x, y에 관한 관계식을 이용해서, X, Y에 관한 관계식을 구하는 것.&lt;/div&gt;
  &lt;/div&gt;
  
  &lt;p&gt;원래 관계식은 x, y의 언어로 쓰여 있어. 우리는 그걸 X, Y의 언어로 번역하고 싶은 거야. 이 목적을 머릿속에 딱 박아두고, 이제 4단계를 차근차근 따라가 보자.&lt;/p&gt;

  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-header&quot;&gt;
      &lt;span&gt;1단계 — 원래 관계식 확인&lt;/span&gt;
      &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-body&quot;&gt;
      &lt;p&gt;원래 그래프의 관계식을 확인해.&lt;/p&gt;
      &lt;div class=&quot;math-highlight&quot;&gt;$$x + y + 3 = 0$$&lt;/div&gt;
      &lt;p&gt;이게 우리가 가진 출발점이야. 이 관계식을 만족하는 점 (x, y)가 원래 그래프 위에 있어.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page10.png&quot; alt=&quot;page10&quot;&gt;&lt;/figure&gt;

  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-header&quot;&gt;
      &lt;span&gt;2단계 — 점의 이동 관계식 뽑기&lt;/span&gt;
      &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-body&quot;&gt;
      &lt;p&gt;이제 핵심이야. 원래 그래프 위의 점 (x, y)가 평행이동을 통해 새 그래프 위의 점 (X, Y)로 옮겨간다고 생각해봐.&lt;/p&gt;
      &lt;p&gt;x축으로 +3만큼 이동했으니까, X좌표는 원래 x좌표보다 3이 커. 즉:&lt;/p&gt;
      &lt;div class=&quot;math-highlight&quot;&gt;$$X = x + 3$$&lt;/div&gt;
      &lt;p&gt;y축으로 -2만큼 이동했으니까, Y좌표는 원래 y좌표보다 2가 작아. 즉:&lt;/p&gt;
      &lt;div class=&quot;math-highlight&quot;&gt;$$Y = y - 2$$&lt;/div&gt;
      &lt;p&gt;이게 2단계야. &quot;점이 어떻게 움직였는가&quot;를 수식으로 표현한 것뿐이야. 어렵지 않지?&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-header&quot;&gt;
      &lt;span&gt;3단계 &amp; 4단계 — 정리 및 대입&lt;/span&gt;
      &lt;span class=&quot;accordion-icon&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-body&quot;&gt;
      &lt;p&gt;2단계에서 얻은 두 식을, x와 y를 주인공으로 다시 정리해.&lt;/p&gt;
      &lt;div&gt;$$X = x + 3 \quad \Rightarrow \quad x = X - 3$$&lt;/div&gt;
      &lt;div&gt;$$Y = y - 2 \quad \Rightarrow \quad y = Y + 2$$&lt;/div&gt;
      &lt;p&gt;이게 3단계야. 원래 좌표 x, y를 새 좌표 X, Y로 나타낸 거야. 이제 마지막으로 1단계 관계식에 이걸 대입해.&lt;/p&gt;
      &lt;div class=&quot;math-steps&quot;&gt;
        &lt;div class=&quot;math-step&quot;&gt;
          $$x + y + 3 = 0$$
        &lt;/div&gt;
        &lt;div class=&quot;math-step&quot;&gt;
          $$(X - 3) + (Y + 2) + 3 = 0$$
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;p&gt;정리하면 &lt;strong&gt;\(X + Y + 2 = 0\)&lt;/strong&gt;&lt;/p&gt;
      &lt;p&gt;끝! 새 관계식 완성.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page11.png&quot; alt=&quot;page11&quot;&gt;&lt;/figure&gt;
  &lt;h3&gt;잠깐, 이게 왜 되는 거야?&lt;/h3&gt;
  &lt;p&gt;한 발짝 물러서서 생각해봐.&lt;/p&gt;
  &lt;p&gt;원래 그래프 위의 점 (x, y)는 관계식 \(x + y + 3 = 0\)을 만족해. 이 점이 이동해서 새 그래프 위의 점 (X, Y)가 됐어. X, Y와 x, y 사이에는 \(x = X - 3\), \(y = Y + 2\)라는 관계가 성립하지? 그러면 원래 관계식에 이걸 대입하면, 새 그래프 위의 점 (X, Y)가 만족해야 하는 관계식이 나오는 거야. 논리가 딱 맞아떨어지지?&lt;/p&gt;
  &lt;p&gt;뭘 외웠어? 아무것도 안 외웠어. &quot;오른쪽으로 3 가면 X = x + 3&quot;이라는 건 외우는 게 아니야. 당연한 사실이야. 나머지는 그냥 대입했을 뿐이야.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;07&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;왜 마이너스를 대입하는가 — 드디어 풀리는 의문&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page12.png&quot; alt=&quot;page12&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;여기서 아주 중요한 포인트가 하나 나와.&lt;/p&gt;
  &lt;p&gt;수학 시간에 이런 말 들었지? &quot;x축으로 +3만큼 평행이동하려면, x 자리에 x빼기3을 대입하면 된다.&quot; 처음 들었을 때 이상하지 않았어? 플러스 3 이동인데 왜 마이너스 3을 대입하는 거지?&lt;/p&gt;
  &lt;p&gt;그 의문이 지금 완전히 풀려.&lt;/p&gt;
  
  &lt;div class=&quot;key-message&quot;&gt;
    &lt;div class=&quot;key-message-icon&quot;&gt; &lt;/div&gt;
    &lt;div class=&quot;key-message-text&quot;&gt;우리가 한 걸 봐. 오른쪽으로 3 이동하면 X = x + 3이야. 여기서 x를 정리하면 x = X - 3이잖아. 이걸 원래 관계식에 대입하니까, x 자리에 X - 3이 들어간 거야.&lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;새 그래프의 좌표 X 기준으로 원래 좌표 x를 표현하면 X - 3이 되니까, 당연히 마이너스 3이 나오는 거야.&lt;/p&gt;
  &lt;p&gt;당연한 거야. 전혀 이상할 게 없어.&lt;/p&gt;
  &lt;p&gt;이걸 이해했다는 건, 이제 외울 필요가 없다는 거야. 시험장에서 30초 안에 직접 유도해낼 수 있어. 유도한 공식은 틀릴 수가 없어. 네가 그 자리에서 직접 만든 거니까.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;08&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;잠깐, 라이프니츠 이야기&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page13.png&quot; alt=&quot;page13&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;여기서 잠깐 옆길로 새볼게. 재미있는 이야기니까.&lt;/p&gt;
  &lt;p&gt;미분을 처음 만든 사람이 두 명이야. 뉴턴과 라이프니츠. 뉴턴은 미분을 \(f'(x)\), 하나의 숫자로 봤어. 깔끔하지? 근데 라이프니츠는 달랐어. 미분을 \(dy/dx\)라고 썼어. y의 아주 작은 변화량을 x의 아주 작은 변화량으로 나눈 것. 분수처럼 보이지?&lt;/p&gt;
  
  &lt;div class=&quot;tabs&quot;&gt;
    &lt;div class=&quot;tab-buttons&quot;&gt;
      &lt;button class=&quot;tab-btn active&quot; data-tab=&quot;tab-newton&quot;&gt;뉴턴의 시선&lt;/button&gt;
      &lt;button class=&quot;tab-btn&quot; data-tab=&quot;tab-leibniz&quot;&gt;라이프니츠의 시선&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id=&quot;tab-newton&quot; class=&quot;tab-panel active&quot;&gt;
      &lt;p&gt;&lt;strong&gt;함수식 사고&lt;/strong&gt;&lt;/p&gt;
      &lt;p&gt;\(f'(x)\)는 &quot;x를 넣으면 기울기가 나오는&quot; 철저한 x중심 사고방식.&lt;/p&gt;
    &lt;/div&gt;
    &lt;div id=&quot;tab-leibniz&quot; class=&quot;tab-panel&quot;&gt;
      &lt;p&gt;&lt;strong&gt;관계식 사고&lt;/strong&gt;&lt;/p&gt;
      &lt;p&gt;\(dy/dx\)는 x와 y 변화량의 파트너십. x도 변하고 y도 변하는 대등한 관계.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;p&gt;이게 관계식 사고랑 정확히 같은 맥락이야. 시험장에서 뭐가 더 유용할까? 솔직히 말하면 라이프니츠 쪽이야. 특히 치환적분이나 매개변수 미분에서, dy/dx를 분수처럼 다루면 놀라울 정도로 간단해져.&lt;/p&gt;
  &lt;p&gt;핵심은 이거야. &lt;strong&gt;x와 y를 평등하게 보는 관점이, 수학 여러 분야에서 강력하다.&lt;/strong&gt; 그래프 변형에서도, 미분에서도.&lt;/p&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;09&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;앞으로 7편의 여정&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page14.png&quot; alt=&quot;page14&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;이 시리즈에서 우리가 갈 길을 미리 보여줄게. 매 편마다 같은 4단계 방법론을 사용할 거야. 달라지는 건 2단계뿐이야.&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;1편 — 평행이동:&lt;/strong&gt; 2단계 관계식이 \(X = x + a\), \(Y = y + b\). 가장 기본이야.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;2편 — 대칭이동:&lt;/strong&gt; 2단계 관계식이 부호 바꾸기. \(X = -x\) 또는 교환.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;3편 — 복합이동:&lt;/strong&gt; 대칭이랑 평행이동을 합치면 순서가 중요한데, 4단계를 거치면 순서 문제가 해결돼.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;4편 — 압축과 팽창:&lt;/strong&gt; 최근 킬러 문항에서 자주 나와. 2단계 관계식이 \(X = kx\).&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;5편 — 임의의 기준점:&lt;/strong&gt; 기준점이 원점이 아닐 때의 변형.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;6편 — 모든 이차함수의 귀결:&lt;/strong&gt; 모든 이차함수가 \(y = x^2\) 하나로 귀결된다는 걸 보여줄 거야.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;7편 — 지수함수의 변환:&lt;/strong&gt; 밑이 달라도 다 똑같은 함수의 압축팽창이라는 놀라운 사실.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/section&gt;

&lt;section class=&quot;reveal&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-number&quot;&gt;10&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;오늘의 핵심 — 딱 하나만 기억해&lt;/h2&gt;
  &lt;/div&gt;
  &lt;figure class=&quot;post-image reveal&quot;&gt;&lt;img src=&quot;https://raw.githubusercontent.com/winsososng/blog-images/main/images/0편/함수그래프변형_제0편_page15.png&quot; alt=&quot;page15&quot;&gt;&lt;/figure&gt;
  &lt;p&gt;오늘 이야기가 좀 길었지? 근데 핵심은 딱 하나야.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;함수식 말고 관계식으로 봐.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;x와 y를 주종관계로 보지 말고, 평등한 파트너로 봐. 그리고 그래프를 변형할 때는 4단계를 따라가면 돼. 공식 10개를 외울 필요가 없어. 방법론 1개만 이해하면 시험장에서 30초 안에 유도할 수 있어.&lt;/p&gt;

  &lt;div class=&quot;chalkboard reveal&quot; data-script='[
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-y&quot;, &quot;text&quot;: &quot;★ 오늘 핵심 — 딱 하나만 기억해.&quot;, &quot;size&quot;: 26, &quot;bold&quot;: true},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 300},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-w&quot;, &quot;text&quot;: &quot;외우지 마. 유도해. 30초면 돼.&quot;, &quot;size&quot;: 22},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 280},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-b&quot;, &quot;text&quot;: &quot;1→관계식 확인  2→이동관계식  3→정리  4→대입&quot;, &quot;size&quot;: 20, &quot;underline&quot;: true},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 300},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-r&quot;, &quot;text&quot;: &quot;⚠ 공식 10개 외우면 시험장에서 반드시 흔들려.&quot;, &quot;size&quot;: 20},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 250},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-y&quot;, &quot;text&quot;: &quot;★ 유도한 공식은 절대 안 흔들려.&quot;, &quot;size&quot;: 23, &quot;bold&quot;: true},
    {&quot;type&quot;: &quot;pause&quot;, &quot;ms&quot;: 200},
    {&quot;type&quot;: &quot;line&quot;, &quot;color&quot;: &quot;chalk-y&quot;, &quot;text&quot;: &quot;    네가 직접 만든 거니까.&quot;, &quot;size&quot;: 22}
  ]'&gt;&lt;/div&gt;

  &lt;p&gt;어렵다고? 아니야. 정말 간단한 아이디어야. 다음 편부터 하나씩 보여줄게. 나만 믿고 따라와.&lt;/p&gt;
  &lt;hr&gt;
  &lt;p&gt;&lt;em&gt;다음 편 예고: 1편 — 평행이동. &quot;x 대신 x빼기3을 넣어라&quot;를 외우지 말고, 왜 x빼기3인지를 30초 만에 유도하는 법.&lt;/em&gt;&lt;/p&gt;
&lt;/section&gt;

&lt;/div&gt;
&lt;script&gt;
document.addEventListener('DOMContentLoaded', function() {
  const observer = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
      }
    });
  }, { threshold: 0.15 });
  document.querySelectorAll('.reveal').forEach(function(el) { observer.observe(el); });

  document.querySelectorAll('.accordion-header').forEach(function(header) {
    header.addEventListener('click', function() {
      this.parentElement.classList.toggle('open');
    });
  });

  document.querySelectorAll('.tab-btn').forEach(function(btn) {
    btn.addEventListener('click', function() {
      var tabGroup = this.closest('.tabs');
      tabGroup.querySelectorAll('.tab-btn').forEach(function(b) { b.classList.remove('active'); });
      tabGroup.querySelectorAll('.tab-panel').forEach(function(p) { p.classList.remove('active'); });
      this.classList.add('active');
      tabGroup.querySelector('#' + this.dataset.tab).classList.add('active');
    });
  });

  function makeCharSpans(container, text, size, bold) {
    var spans = [];
    for (var i = 0; i &lt; text.length; i++) {
      var sp = document.createElement('span');
      sp.className = 'ch';
      sp.textContent = text[i];
      if (size) sp.style.fontSize = size + 'px';
      if (bold) sp.style.fontWeight = '700';
      var rot = (Math.random() - 0.5) * 2.5;
      var scl = 0.97 + Math.random() * 0.06;
      var ty = (Math.random() - 0.5) * 1.5;
      sp.style.transform = 'rotate(' + rot + 'deg) scale(' + scl + ') translateY(' + ty + 'px)';
      if (text[i] === ' ') sp.style.width = '0.3em';
      container.appendChild(sp);
      spans.push(sp);
    }
    return spans;
  }

  function spawnDust(board, charEl, color) {
    var rect = charEl.getBoundingClientRect();
    var bdRect = board.getBoundingClientRect();
    for (var i = 0; i &lt; 2; i++) {
      var d = document.createElement('div');
      d.className = 'chalk-dust';
      var sz = 1.5 + Math.random() * 2;
      d.style.width = sz + 'px';
      d.style.height = sz + 'px';
      d.style.background = color;
      d.style.left = (rect.right - bdRect.left) + 'px';
      d.style.top = (rect.bottom - bdRect.top - 6) + 'px';
      d.style.setProperty('--dx', (Math.random() * 10 - 5) + 'px');
      d.style.setProperty('--dy', (4 + Math.random() * 8) + 'px');
      board.appendChild(d);
      setTimeout(function(el) { return function() { if (el.parentNode) el.parentNode.removeChild(el); }; }(d), 1300);
    }
  }

  function animateChars(board, spans, speed, dustColor, onComplete) {
    var i = 0;
    var iv = setInterval(function() {
      if (i &lt; spans.length) {
        spans[i].classList.add('on');
        if (i % 3 === 0 &amp;&amp; spans[i].textContent !== ' ') spawnDust(board, spans[i], dustColor);
        i++;
      } else {
        clearInterval(iv);
        if(onComplete) onComplete();
      }
    }, speed);
  }

  function runChalkboard(board) {
    var scriptData = JSON.parse(board.dataset.script || '[]');
    var currentStep = 0;
    function nextStep() {
      if(currentStep &gt;= scriptData.length) return;
      var step = scriptData[currentStep++];
      if(step.type === 'pause') {
        setTimeout(nextStep, step.ms || 300);
      } else if(step.type === 'line' || step.type === 'box') {
        var row = document.createElement('div');
        row.className = 'chalk-row ' + (step.color || 'chalk-w');
        if(step.type === 'box') row.className += ' chalk-box';
        var textInner = document.createElement('div');
        textInner.className = step.underline ? 'chalk-underline-wrapper' : '';
        row.appendChild(textInner);
        
        var dustColor = '#FFF';
        if(step.color === 'chalk-y') dustColor = '#FCD34D';
        if(step.color === 'chalk-b') dustColor = '#93C5FD';
        if(step.color === 'chalk-r') dustColor = '#F87171';
        
        var txt = step.main ? (step.main + '\n' + step.sub) : step.text;
        var spans = makeCharSpans(textInner, txt, step.size, step.bold);
        board.appendChild(row);
        
        if(step.type === 'box') setTimeout(function(){ row.classList.add('on'); }, 100);

        animateChars(board, spans, 32, dustColor, function() {
          if(step.underline) {
            var ul = document.createElement('div');
            ul.className = 'chalk-underline-draw';
            ul.style.backgroundColor = dustColor;
            textInner.appendChild(ul);
            setTimeout(function(){ ul.style.width = '100%'; }, 50);
            setTimeout(nextStep, 600);
          } else {
            nextStep();
          }
        });
      }
    }
    nextStep();
    
    // Add tray
    var tray = document.createElement('div');
    tray.className = 'chalk-tray';
    for(var i=0; i&lt;4; i++) {
       var d = document.createElement('div');
       d.className = 'chalk-tray-dot';
       tray.appendChild(d);
    }
    board.appendChild(tray);
  }

  var chalkObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting &amp;&amp; !entry.target.dataset.played) {
        entry.target.dataset.played = 'true';
        setTimeout(function() { runChalkboard(entry.target); }, 300);
      }
    });
  }, { threshold: 0.3 });

  document.querySelectorAll('.chalkboard').forEach(function(el) {
    chalkObserver.observe(el);
  });
});
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <author>fafamath</author>
      <guid isPermaLink="true">https://fafamath.tistory.com/3</guid>
      <comments>https://fafamath.tistory.com/3#entry3comment</comments>
      <pubDate>Thu, 2 Apr 2026 15:20:06 +0900</pubDate>
    </item>
  </channel>
</rss>