---
theme: default
layout: center
class: text-center
---

# 🚀 AI 창업 탐험대: 내가 만드는 미래 기업
중학교 3학년 ~ 고등학교 3학년 심화 대상 (총 3차시 / 270분)

---
layout: default
---

# 📋 전체 커리큘럼 안내

<div class="w-full mt-4 border border-slate-300 rounded-lg overflow-hidden shadow-md text-[11px] font-sans">
<table class="w-full text-center border-collapse">
  <thead class="bg-slate-900 text-white font-bold">
    <tr>
      <th class="p-3 border-r border-slate-200 w-[10%]">구분</th>
      <th class="p-3 border-r border-slate-200 w-[15%]">교시</th>
      <th class="p-3 border-r border-slate-200 w-[60%]">학습 주제</th>
      <th class="p-3 border-r border-slate-200 w-[15%]">소요시간</th>
    </tr>
  </thead>
  <tbody>
    <tr class="bg-slate-800 text-white border-b border-slate-200">
      <td class="p-3 border-r border-slate-600 font-bold align-middle text-center">Prologue</td>
      <td class="p-3 border-r border-slate-600 text-center">오프닝</td>
      <td class="p-3 border-r border-slate-600 font-bold text-left text-yellow-400">🪄 AI 프롬프트 마법 기계 (우리는 왜 질문을 잘해야 할까?)</td>
      <td class="p-3 text-center">10분</td>
    </tr>
    <tr class="bg-blue-50 border-b border-slate-200">
      <td rowspan="4" class="p-3 border-r border-slate-200 font-bold align-middle text-center border-b-2 border-slate-300">1차시<br>(AI 디자인)</td>
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">공통 룰 하달 및 순진한 프롬프트</td>
      <td class="p-3 text-center">10분</td>
    </tr>
    <tr class="bg-blue-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">Round 1~3: 프롬프트 네고시에이션 (Trap 피하기)</td>
      <td class="p-3 text-center">30분</td>
    </tr>
    <tr class="bg-blue-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">바이브 코딩: 수치로 통제하는 로고 시스템 (코드 실습)</td>
      <td class="p-3 text-center">20분</td>
    </tr>
    <tr class="bg-blue-50 border-b-2 border-slate-300">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">바이브 코딩: 텍스트와 좌표로 짓는 간판 시스템 (코드 실습)</td>
      <td class="p-3 text-center">25분</td>
    </tr>
    <tr class="bg-green-50 border-b border-slate-200">
      <td rowspan="6" class="p-3 border-r border-slate-200 font-bold align-middle text-center border-b-2 border-slate-300">2차시<br>(데이터 분석)</td>
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left text-blue-600">1차시 복습 및 선호도 & Feature 정의</td>
      <td class="p-3 text-center">20분</td>
    </tr>
    <tr class="bg-green-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">오픈 6개월 차의 위기 & 비밀 장부 다운로드</td>
      <td class="p-3 text-center">10분</td>
    </tr>
    <tr class="bg-green-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">육안 검안: 단순 오류 및 비즈니스 모순 찾기</td>
      <td class="p-3 text-center">15분</td>
    </tr>
    <tr class="bg-green-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left text-green-700">CODAP 다차원 상관관계 분석 미션</td>
      <td class="p-3 text-center">15분</td>
    </tr>
    <tr class="bg-green-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left text-red-500">워드클라우드: 고객 불만 리뷰 텍스트 마이닝</td>
      <td class="p-3 text-center">15분</td>
    </tr>
    <tr class="bg-green-50 border-b-2 border-slate-300">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">위기 탈출 최종 피칭 (피봇팅 전략 발표)</td>
      <td class="p-3 text-center">15분</td>
    </tr>
    <tr class="bg-yellow-50 border-b border-slate-200">
      <td rowspan="5" class="p-3 border-r border-slate-200 font-bold align-middle text-center">3차시<br>(자율주행과<br>AI 윤리)</td>
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">자율주행 교구 제작 (하드웨어 실습)</td>
      <td class="p-3 text-center">20분</td>
    </tr>
    <tr class="bg-yellow-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">자율주행차는 어떻게 달릴까? (센서 삼총사)</td>
      <td class="p-3 text-center">15분</td>
    </tr>
    <tr class="bg-yellow-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">1교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">NTSB 사고 조사반: 기계는 왜 속았을까?</td>
      <td class="p-3 text-center">10분</td>
    </tr>
    <tr class="bg-yellow-50 border-b border-slate-200">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">AI 윤리 딜레마: 트롤리 딜레마 시뮬레이터</td>
      <td class="p-3 text-center">20분</td>
    </tr>
    <tr class="bg-yellow-50">
      <td class="p-3 border-r border-slate-200 text-center">2교시</td>
      <td class="p-3 border-r border-slate-200 font-bold text-left">CEO 윤리 선언: 우리 회사의 알고리즘 제정</td>
      <td class="p-3 text-center">25분</td>
    </tr>
  </tbody>
</table>
</div>

---

## 🤔 1차시: 장밋빛 기획과 절대 규칙

<p class="mb-6 text-lg">
  오늘부터 모든 팀은 
  <span class="bg-warning text-dark font-black px-3 py-1 rounded-lg shadow-sm align-middle mx-1">
    👨‍🍳 진짜 음식점 사장님
  </span> 
  으로서 결정해야 합니다. 아래의 <b>[절대 규칙]</b> 조건에서 살아남으세요!
</p>

<div class="bg-slate-800 text-white rounded-xl shadow-lg mb-6 p-6 flex justify-around items-center text-base border-2 border-slate-700">
  <div>🎯 <b>공통 목표:</b> 월 순수익 딱 <b class="text-yellow-400">1,000만 원</b></div>
  <div>📐 <b>매장 규모:</b> <b class="text-yellow-400">35~40평</b> 내외</div>
  <div>🪑 <b>홀 좌석:</b> <b class="text-yellow-400">4인 테이블 딱 6개</b> (최대 24명 수용)</div>
</div>

<div class="grid grid-cols-2 gap-6 mt-4">
  <div class="border-2 border-red-500 rounded-lg overflow-hidden shadow-sm">
    <div class="bg-red-500 text-white font-bold py-2 px-4">❌ Bad 예시 1: 강남 감성 카페</div>
    <div class="p-4 bg-red-50 text-[13px]">
      <p class="italic text-slate-700 mb-3">"강남역 가로수길에 35평 카페를 차릴 거야. 테이블은 딱 6개야. 아메리카노는 3,000원. 알바생 1명만 쓰고 월 1천만 원 남는 사업 계획 짜줘."</p>
      <hr class="border-red-200 my-2">
      <p class="text-red-600 font-bold mb-0">👉 AI의 거짓말: 테이블 6개로 1천을 남기려면 손님이 10분 만에 마시고 나간다는 기적의 회전율을 계산해 줍니다.</p>
    </div>
  </div>
  <div class="border-2 border-orange-400 rounded-lg overflow-hidden shadow-sm">
    <div class="bg-orange-400 text-white font-bold py-2 px-4">❌ Bad 예시 2: 이천시 식당/밀키트</div>
    <div class="p-4 bg-orange-50 text-[13px]">
      <p class="italic text-slate-700 mb-3">"이천시 관고동에 40평 식당. 15,000원짜리 팔고 홀 다 차면 배달 돌릴게. 재료비 50% 빼면 월 순수익 1천만원 가능하지?"</p>
      <hr class="border-orange-200 my-2">
      <p class="text-red-600 font-bold mb-0">👉 간과한 것: 배달 수수료 30%, 식자재 폐기율, 이천시 구인난에 따른 높은 인건비를 누락했습니다.</p>
    </div>
  </div>
</div>

<div class="border-2 border-blue-500 rounded-lg overflow-hidden shadow-md mt-6">
  <div class="bg-blue-500 text-white font-bold py-2 px-4">
    📝 Action: 막막하다면? AI 프롬프트 6가지 필수 조건 세팅
  </div>
  <div class="p-5 bg-blue-50 text-sm">
    <div class="grid grid-cols-3 gap-3 text-center font-bold px-4">
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">📍 상권 및 입지</div>
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">⏰ 영업 시간 (휴무 포함)</div>
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">🍔 주력 메뉴 및 객단가</div>
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">🙋 필요 인력 (알바/정직원)</div>
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">🛵 배달/포장 병행 여부</div>
      <div class="bg-white border border-slate-300 rounded-lg py-2 shadow-sm text-slate-800">📢 초기 마케팅 전략</div>
    </div>
    <hr class="border-blue-200 my-4">
    <p class="mb-0 text-blue-700 font-black text-center text-base">
      👉 위 6가지 조건과 [절대 규칙]을 결합하여, AI에게 첫 사업 계획서를 요구하는 프롬프트를 작성하세요!
    </p>
  </div>
</div>

---

## 🥊 프롬프트 네고시에이션: Round 1

AI가 완벽해 보이는 계획서를 줬나요? 자, 첫 번째 현실 트랩을 반영해 다시 질문하세요.

<div class="border-2 border-slate-800 rounded-t-lg overflow-hidden mt-6 shadow-sm bg-white">
  <div class="bg-slate-800 text-white font-black py-2.5 px-4 text-lg">
    🚨 1차 방어전: 사람과 음식은 완벽하지 않다
  </div>
  
  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">Trap 1. 숨겨진 인건비의 늪</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block">시급 1만 원? 주 15시간 이상 일하면 <b>'주휴수당'</b>과 <b>'4대 보험료(10%)'</b>를 내야 합니다. 실질 시급은 12,000원이 넘습니다. (특히 이천시나 지방은 알바생 구하기가 힘들어 시급을 더 높여야 합니다.)</span>
      <span class="text-red-500">👉 AI에게 "주휴수당과 4대 보험을 반영해서 인건비를 1.3배 올리고 다시 순이익 계산해!"라고 명령하세요.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">Trap 2. 식자재 폐기율(Loss)의 배신</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block">산 재료를 100% 다 팔 수 있을까요? 무른 채소, 안 팔려서 버리는 재료 등 최소 <b>15~20%의 식자재 폐기율</b>이 발생합니다.</span>
      <span class="text-red-500">👉 AI에게 "모든 식자재 원가에 폐기율 20%를 추가 비용으로 잡고 단가를 다시 설정해!"라고 압박하세요.</span>
    </template>
  </HintAccordion>
</div>

---

## 🥊 프롬프트 네고시에이션: Round 2

아직 목표수익 1,000만 원인가요? 공통 조건이었던 '테이블 6개'의 무서움을 보여드리죠.

<div class="border-2 border-slate-800 rounded-t-lg overflow-hidden mt-6 shadow-sm bg-white">
  <div class="bg-slate-800 text-white font-black py-2.5 px-4 text-lg">
    🚨 2차 방어전: 공간의 한계 (테이블 6개의 저주)
  </div>
  
  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">Trap 3. 테이블 회전율과 '카공족'</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block"><b>테이블이 딱 6개뿐입니다.</b> 만약 4인 테이블에 손님 1명이 앉아 노트북을 3시간 쓴다면? 피크 타임에 남은 테이블은 4~5개뿐입니다. AI는 좌석 점유율 100%라는 거짓말을 하고 있습니다.</span>
      <span class="text-red-500">👉 AI에게 "좌석 점유율을 최대 40%로 낮추고 매출을 보완할 '객단가 인상' 혹은 '테이크아웃 전문 메뉴' 전략을 세워봐!"라고 압박하세요.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">Trap 4. 넓은 매장의 무서운 고정비 (임대료/누진세)</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block">일반 대도시 35평 이상 월세는 250~400만 원입니다. 대형 냉/난방기와 업소용 냉장고를 돌리면 <b>전기세 누진세</b>로 한 달 수도광열비만 100만 원 이상 나옵니다.</span>
      <span class="text-red-500">👉 AI에게 "우리 지역 대형 평수 현실 월세(300만 원)와 수도광열비 120만 원을 고정비로 추가 차감해!"라고 명령하세요.</span>
    </template>
  </HintAccordion>
</div>

---

## 🥊 프롬프트 네고시에이션: Round 3

이제 거의 현실적인 사업계획서가 되었습니다. 마지막 재난 상황입니다.

<div class="border-2 border-red-500 rounded-t-lg overflow-hidden mt-6 shadow-sm bg-white">
  <div class="bg-red-500 text-white font-black py-2.5 px-4 text-lg">
    🚨 최종 방어전: 생태계 파괴자의 등장
  </div>
  
  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-red-50 text-red-900 border border-red-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-red-700">Trap 5. 배달 플랫폼의 '수수료 폭격'</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block">홀(테이블 6개) 매출로 부족해서 배달을 켰나요? 중개 수수료, 배달비, 포장비를 떼면 2만 원짜리 팔아도 내 손엔 1만 원 남짓입니다.</span>
      <span class="text-red-600">👉 AI에게 "배달 매출의 40%를 수수료로 제하고 순수익 1천만 원이 유지되는지 검증해!"라고 명령하세요.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-red-50 text-red-900 border border-red-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-red-700">Trap 6. 반값 매장의 기습 오픈</span>
      </div>
    </template>
    <template #content>
      <span class="font-normal text-slate-700 mb-2 block">우리 가게 바로 맞은편에 아메리카노 1,500원짜리 메가커피나 초저가 할인 매장이 들어왔습니다!</span>
      <span class="text-red-600">👉 AI에게 "가격 경쟁 대신 객단가를 방어할 '세트 메뉴'나 우리만의 '공간 서비스'를 기획서에 추가해!"라고 지시하세요.</span>
    </template>
  </HintAccordion>
</div>

---

## 🎨 2차시: 바이브 코딩 (디자인 시스템)

사업 계획을 세웠다면, 이제 AI에게 수치와 변수(Variable)를 명령하여 내 브랜드 로고를 설계합니다.

<div class="grid grid-cols-2 gap-6 mt-8">
  <div class="bg-blue-50 p-6 rounded-xl shadow-sm border-t-4 border-blue-500">
    <h5 class="font-black text-blue-600 text-xl mb-3">💡 Vibe Coding이란?</h5>
    <p class="text-slate-700 text-base leading-relaxed">
      "그냥 예쁘게 그려줘"라는 애매한 언어 대신, <b>"반지름(radius)은 50, 선 굵기(pensize)는 3, 30도씩 회전시켜 12번 반복해"</b>처럼 수학적 수치로 AI를 통제하여 코드를 짜는 방식입니다.
    </p>
  </div>
  
  <div class="bg-slate-800 text-white p-6 rounded-xl shadow-sm border-t-4 border-yellow-400">
    <h5 class="font-black text-yellow-400 text-xl mb-3">🛠️ 실습 방법</h5>
    <div class="space-y-3 text-base text-slate-200">
      <p>1. 다음 장에 있는 파이썬(Python) 코드를 복사하세요.</p>
      <p>2. 왼쪽 <b>Trinket 에디터</b>에 붙여넣고 재생(▶) 버튼을 누르세요.</p>
      <p>3. 색상(Hex), 반복 횟수(range), 각도를 내 브랜드에 맞게 수정하며 명령해보세요.</p>
    </div>
  </div>
</div>

---
layout: default
---

## 💻 로고 시스템 레퍼런스 3선

<script setup>
// Slide 7
</script>

<div class="grid grid-cols-2 gap-6 mt-4 h-[460px]">

  <div class="h-full shadow-lg border border-slate-300 bg-white" style="transform: translateZ(0);">
    <iframe src="https://trinket.io/embed/python/c283ebb4165a" width="100%" height="100%" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
  </div>

  <div class="overflow-y-auto pr-2 space-y-4 custom-scrollbar">

<CodeCard title="Type A. 기하학적 만다라" color="#3b82f6">

```python
import turtle
t = turtle.Turtle()
t.speed(0); t.pensize(2)

for i in range(12): # 12번 반복
  t.color("#8B4513") # 커피 브라운 색상
  t.circle(50)       # 반지름 50인 원
  t.left(30)         # 30도씩 회전 (360/12)
t.hideturtle()
```

</CodeCard>

<CodeCard title="Type B. 추상적 파동" color="#10b981">

```python
import turtle
t = turtle.Turtle()
t.speed(0); t.pensize(2)

colors = ["#00CED1", "#4682B4"] # 청록색 계열
for i in range(36):
  t.color(colors[i % 2])
  t.circle(i * 3, 180) # 점점 커지는 반원
  t.right(10)          # 10도씩 우측 회전
t.hideturtle()
```

</CodeCard>

<CodeCard title="Type C. 스파이럴 플라워" color="#ef4444">

```python
import turtle
t = turtle.Turtle()
t.speed(0); t.pensize(2)

colors = ['#FF5733', '#FFC300', '#DAF7A6'] 
for i in range(50):
  t.color(colors[i % 3])
  t.forward(i * 3) # 선 길이가 점점 길어짐
  t.left(91)       # 90도보다 살짝 크게 돌아 꽃잎 형성
t.hideturtle()
```

</CodeCard>

  </div>

</div>

---
layout: default
---

## 🏪 텍스트와 좌표로 짓는 간판 시스템

<script setup>
// Slide 8
</script>

<div class="grid grid-cols-2 gap-6 mt-4 h-[460px]">

  <div class="h-full flex flex-col gap-3">
    <div class="h-full shadow-lg border border-slate-300 bg-white" style="transform: translateZ(0);">
      <iframe src="https://trinket.io/embed/python/fc9c1290a6ab" width="100%" height="100%" frameborder="0" marginwidth="0" marginheight="0" allowfullscreen></iframe>
    </div>
    <div class="p-3 bg-yellow-50 border-2 border-yellow-400 text-yellow-800 rounded-xl text-[13px] font-bold shadow-sm">
      🔥 미션: <code>t.goto(x, y)</code> 숫자를 조작하여 간판 안의 글자 위치를 변경해 보세요. 간판에 사용할 문구는 AI에게 추천받으세요!
    </div>
  </div>

  <div class="overflow-y-auto pr-2 space-y-4 custom-scrollbar">

<CodeCard title="Type A. 클래식 카페 간판" color="#06b6d4">

```python
import turtle

def draw_sign():
  """ 파이썬 터틀로 가게 간판을 그리는 예제 코드입니다. """
  screen = turtle.Screen()
  screen.setup(width=600, height=400)
  screen.bgcolor("#fdf5e6")  # 부드러운 크림색 배경

  t = turtle.Turtle()
  t.speed(0)  # 가장 빠른 속도
  t.hideturtle()  # 터틀 숨기기

  # 간판 테두리 그리기
  t.penup()
  t.goto(-250, 150)
  t.pendown()
  t.color("#a0522d")  # 갈색
  t.pensize(5)
          
  for _ in range(2):
    t.forward(500)
    t.right(90)
    t.forward(300)
    t.right(90)
              
  # 간판 안쪽 색상 채우기
  t.penup()
  t.goto(-245, 145)
  t.pendown()
  t.begin_fill()
  t.color("#fcfcfc")  # 깨끗한 흰색
  for _ in range(2):
    t.forward(490)
    t.right(90)
    t.forward(290)
    t.right(90)
  t.end_fill()

  # --- 가게 이름 (메인 텍스트) ---
  t.penup()
  t.goto(0, 50)
  t.color("black")
  t.write("터틀 커피", align="center", font=("Malgun Gothic", 40, "bold"))

  t.goto(0, 0)
  t.color("#8b4513")  # 진한 갈색
  t.write("TURTLE COFFEE", align="center", font=("Arial", 25, "bold"))

  # --- 슬로건 (서브 텍스트) ---
  t.goto(0, -40)
  t.color("#696969")  # 회색
  t.write("느림의 미학, 따뜻한 한 잔", align="center", font=("Malgun Gothic", 12, "normal"))

  # --- 추가 정보 ---
  t.penup()
  t.goto(-230, -130)
  t.color("#696969")
  t.write("SINCE 2026", align="left", font=("Arial", 10, "italic"))

  t.goto(230, -130)
  t.color("#696969")
  t.write("OPEN 09:00 - 22:00", align="right", font=("Arial", 10, "italic"))

  turtle.done()

draw_sign()
```

</CodeCard>

<CodeCard title="Type B. 모던 사이버 네온사인" color="#334155">

```python
import turtle
t = turtle.Turtle()
t.speed(0); t.hideturtle()
turtle.Screen().bgcolor("#1a1a1a") # 다크 배경

# 네온 테두리
t.penup(); t.goto(-180, 80); t.pendown()
t.color("#00ffff"); t.pensize(3)
for _ in range(2):
  t.forward(360); t.right(90)
  t.forward(160); t.right(90)

# 사이버 텍스트
t.penup(); t.goto(0, -10)
t.color("#ff00ff")
t.write("CYBER MART", align="center", font=("Courier", 35, "bold"))

t.goto(0, -40)
t.color("#00ffff")
t.write("24/7 UNMANNED STORE", align="center", font=("Courier", 12, "normal"))
```

</CodeCard>

<CodeCard title="Type C. 빈티지 둥근 간판" color="#94a3b8">

```python
import turtle
t = turtle.Turtle()
t.speed(0); t.hideturtle()
turtle.Screen().bgcolor("#e8f4f8") # 스카이블루 배경

# 둥근 테두리
t.penup(); t.goto(0, -100); t.pendown()
t.color("#2c3e50"); t.pensize(8)
t.circle(100) # 반지름 100인 원

# 중앙 텍스트 배치
t.penup(); t.goto(0, 10)
t.color("#e74c3c")
t.write("MOM'S", align="center", font=("Arial", 25, "bold"))

t.goto(0, -25)
t.color("#2c3e50")
t.write("MEAL KIT", align="center", font=("Arial", 20, "bold"))

t.goto(0, -50)
t.write("- since 2026 -", align="center", font=("Arial", 10, "normal"))
```

</CodeCard>

  </div>

</div>

---

## 🧠 2차시 시작 전: 1차시 핵심 복습 OX 퀴즈

<div class="mt-6 space-y-4">
  <BasicQuiz 
    question="Q1. 생성형 AI에게 사업 계획서를 요구할 때, '강남역 35평, 알바생 1명, 월 순수익 1천만 원'처럼 비현실적인 조건을 주면, AI는 스스로 판단하여 현실적인 목표로 수정하여 답변해 준다." 
    options="['O', 'X']" 
    answer="X" 
    explanation="AI는 비현실성을 스스로 지적하기보다, 목표를 억지로 맞추기 위해 '10분마다 손님이 회전한다'는 식의 할루시네이션(거짓말)을 만들어냅니다. 명확한 제약 조건 통제가 필수입니다." 
  />

  <BasicQuiz 
    question="Q2. 식당 운영 시 구매한 식자재는 100% 매출로 직결되지 않는다. 보관 중 무르거나 안 팔려서 버려지는 최소 15~20%의 '식자재 폐기율(Loss)'을 원가에 반드시 반영해야 한다." 
    options="['O', 'X']" 
    answer="O" 
    explanation="식자재 폐기율을 원가에 반영하지 않으면, 장부상으로는 흑자여도 실제로는 적자가 나는 치명적인 재무 트랩에 빠지게 됩니다." 
  />

  <BasicQuiz 
    question="Q3. 매장 홀(테이블 6개)의 공간적 한계를 극복하기 위해 배달을 도입하여 '총매출액'이 증가하면, 매장의 마진율(순이익률)도 무조건 이전보다 높게 상승한다." 
    options="['O', 'X']" 
    answer="X" 
    explanation="총매출액 규모는 커질 수 있지만, 플랫폼 중개 수수료, 배달 대행비, 포장 용기 비용 등 '수수료 폭격' 때문에 마진율(%)은 오히려 홀 장사보다 떨어질 수 있습니다." 
  />

  <BasicQuiz 
    question="Q4. '바이브 코딩(Vibe Coding)'은 프로그래머처럼 문법을 완벽히 암기하여 직접 코드를 타이핑하는 방식이 아니라, AI에게 수학적 수치와 자연어로 의도를 명령하여 코드를 통제하는 방식이다." 
    options="['O', 'X']" 
    answer="O" 
    explanation="그냥 예쁘게 그려줘가 아니라, 반지름 50, 30도 회전처럼 변수를 명확히 통제하여 결과를 도출하는 것이 핵심입니다." 
  />
</div>

---

## 🍦 실시간 데이터 수집: 민초청국장 선호도

<script setup>
import { ref } from 'vue'
const preference_score = ref(5)
</script>

<p class="text-slate-600">데이터 과학의 첫걸음은 <b>추상적 취향을 숫자로 정량화</b>하는 것입니다.</p>

<div class="bg-white p-8 rounded-xl shadow-md mx-auto mt-10 max-w-3xl border border-slate-200">
  <h4 class="mb-8 text-slate-800 font-bold text-center text-2xl">"신메뉴 '민초청국장'에 대한 당신의 선호도는?"</h4>
  
  <div class="flex justify-between px-4 font-bold text-slate-500 mb-2">
    <span>절대 안 먹음 (1점)</span>
    <span>최고의 맛 (10점)</span>
  </div>
  
  <input type="range" class="w-full h-3 bg-slate-200 rounded-lg appearance-none cursor-pointer accent-green-500" min="1" max="10" step="1" v-model="preference_score">
  
  <div class="text-center mt-8">
    <span class="bg-green-100 text-green-800 text-3xl font-black px-6 py-3 rounded-xl shadow-inner inline-block min-w-[120px]">
      {{ preference_score }} 점
    </span>
  </div>
</div>

---

## 📊 음식점 운영에는 어떤 데이터가 필요할까?

<p class="text-slate-600 text-lg mb-6">컴퓨터는 '분위기'를 이해하지 못합니다. 모든 것을 <b>숫자(Feature)</b>로 바꿔봅시다.</p>

<div class="grid grid-cols-2 gap-8 mt-4">
  <div class="border border-blue-300 rounded-xl overflow-hidden shadow-sm bg-blue-50">
    <div class="bg-blue-600 text-white font-bold p-4 text-lg">🗣️ 추상적 개념 (Human)</div>
    <div class="p-6 text-slate-800 text-base space-y-4">
      <div class="bg-white p-3 rounded shadow-sm border border-blue-100">"오늘따라 날씨 때문에 손님이 없네"</div>
      <div class="bg-white p-3 rounded shadow-sm border border-blue-100">"배달 수수료 떼면 남는 게 없어"</div>
      <div class="bg-white p-3 rounded shadow-sm border border-blue-100">"단골들이 가게를 좋아하는 것 같아"</div>
    </div>
  </div>

  <div class="border border-green-300 rounded-xl overflow-hidden shadow-sm bg-green-50">
    <div class="bg-green-600 text-white font-bold p-4 text-lg">🤖 데이터 항목 (AI Feature)</div>
    <div class="p-6 text-slate-800 text-base space-y-4">
      <div class="bg-white p-3 rounded shadow-sm border border-green-100"><b>[강수량/기온]</b> : 정밀도 높은 수치데이터</div>
      <div class="bg-white p-3 rounded shadow-sm border border-green-100"><b>[순이익률]</b> : (순이익 / 총매출) * 100</div>
      <div class="bg-white p-3 rounded shadow-sm border border-green-100"><b>[재방문율]</b> : (전체고객수 / 단골수)</div>
    </div>
  </div>
</div>

<div class="bg-yellow-50 border-2 border-yellow-300 text-yellow-800 font-bold p-4 rounded-xl mt-8 text-center shadow-sm">
  <b>🎯 고딩용 미션:</b> 가게 '친절도'를 숫자로 측정하려면 포스기(POS)에 어떤 버튼을 추가해야 할까요?
</div>

---

## 📥 오픈 6개월 차, 우리 가게에 도둑이 있다?

<script setup>
const headers = ["ID", "날짜", "기온(℃)", "방문객수", "결제건수", "총매출액(원)", "환불건수", "배달수수료(원)", "순이익(원)"];
const dataRows = [
  "1,2026-07-01,28,150,140,560000,2,20000,250000",
  "2,2026-07-02,29,145,135,540000,1,15000,240000",
  "3,2026-07-03,31,160,150,600000,3,30000,240000",
  "4,2026-07-04,30,155,148,592000,0,25000,270000",
  "5,2026-07-05,28,150,140,55000000,2,20000,54000000",
  "6,2026-07-06,27,130,120,480000,1,10000,210000",
  "7,2026-07-07,29,140,130,520000,2,20000,230000",
  "8,2026-07-08,32,180,170,680000,4,40000,310000",
  "9,2026-07-09,33,300,0,0,0,0,-150000",
  "10,2026-07-10,31,160,150,600000,1,25000,280000",
  "11,2026-07-11,28,145,135,540000,2,20000,240000",
  "12,2026-07-12,27,135,125,500000,0,15000,220000",
  "13,2026-07-13,26,120,110,440000,1,10000,190000",
  "14,2026-07-14,30,1500,1400,5600000,10,200000,2500000",
  "15,2026-07-15,31,170,160,640000,2,30000,290000",
  "16,2026-07-16,32,180,170,680000,3,40000,310000",
  "17,2026-07-17,29,150,140,560000,1,20000,250000",
  "18,2026-07-18,28,140,130,520000,2,15000,230000",
  "19,2026-07-19,-40,135,125,500000,0,15000,220000",
  "20,2026-07-20,29,145,135,540000,1,20000,240000",
  "21,2026-07-21,30,160,150,600000,2,25000,250000",
  "22,2026-07-22,31,165,155,620000,1,30000,280000",
  "23,2026-07-23,30,280,270,1000000,3,600000,50000",
  "24,2026-07-24,28,140,130,520000,1,15000,230000",
  "25,2026-07-25,27,130,120,480000,0,10000,210000",
  "26,2026-07-26,28,150,140,560000,85,20000,-150000",
  "27,2026-07-27,29,145,135,540000,2,20000,240000",
  "28,2026-07-28,30,155,145,580000,1,25000,260000",
  "29,2026-07-29,32,30,25,100000,0,5000,-50000",
  "30,2026-07-30,30,160,150,600000,2,25000,280000",
  "31,2026-07-31,29,145,135,540000,1,20000,250000",
  "32,2026-08-01,28,150,140,5000000,2,20000,4800000",
  "33,2026-08-02,30,155,145,580000,1,25000,260000",
  "34,2026-08-03,31,165,155,620000,2,30000,290000",
  "35,2026-08-04,30,160,150,600000,60,25000,-100000",
  "36,2026-08-05,28,140,130,520000,1,15000,230000",
  "37,2026-08-06,27,135,125,500000,0,10000,220000",
  "38,2026-08-07,45,130,120,480000,1,10000,200000",
  "39,2026-08-08,30,150,140,560000,2,20000,250000",
  "40,2026-08-09,31,160,150,600000,1,25000,270000",
  "41,2026-08-10,29,250,0,0,0,0,-150000",
  "42,2026-08-11,28,145,135,540000,2,20000,240000",
  "43,2026-08-12,27,140,130,520000,0,15000,230000",
  "44,2026-08-13,29,150,140,560000,1,20000,250000",
  "45,2026-08-14,31,1800,1700,6800000,15,300000,3000000",
  "46,2026-08-15,32,175,165,660000,2,35000,300000",
  "47,2026-08-16,30,160,150,600000,1,25000,270000",
  "48,2026-08-17,31,310,300,1200000,4,700000,80000",
  "49,2026-08-18,29,155,145,580000,2,20000,260000",
  "50,2026-08-19,30,25,20,80000,0,5000,-60000"
];
</script>

<p class="mb-4 text-lg">장부상 총매출은 오르는데 통장 잔고가 비어갑니다. 누군가 데이터를 오염시키고 있습니다.</p>

<div class="bg-slate-50 border border-slate-200 rounded-xl shadow-md p-8 text-center mt-6 max-w-3xl mx-auto">
  <h4 class="font-black text-2xl mb-6 text-red-600">🚨 긴급 입수: 우리 가게 50일 치 영업 장부</h4>
  
  <div class="bg-yellow-50 border border-yellow-200 p-5 rounded-lg text-left mb-6 shadow-sm inline-block w-full max-w-xl">
    <h6 class="font-black text-yellow-800 mb-3 text-lg">💡 데이터 탐정을 위한 기본 정보 (정상 기준)</h6>
    <div class="text-slate-700 space-y-2 text-[15px]">
      <p>✔️ <b>일 평균 방문객:</b> 약 150명 내외</p>
      <p>✔️ <b>일 평균 총매출액:</b> 약 500,000원 내외</p>
      <p>✔️ <b>매장 환경:</b> 4인 테이블 딱 6개 (1차시 룰 유지)</p>
    </div>
  </div>

  <p class="text-slate-600 mb-6 text-[15px]">
    아래 버튼을 눌러 데이터를 다운받아 엑셀로 열어보세요. <br>
    <b>첫 번째 열(ID 번호)</b>을 기준으로 기준점을 심각하게 벗어난 날짜를 찾아야 합니다.
  </p>
  
  <ExcelDownload :headers="headers" :dataRows="dataRows" fileName="store_data_analytics" />

  <div class="mt-8 pt-4 border-t border-slate-300 text-slate-500 text-[13px]">
    <b>데이터 컬럼:</b> ID, 날짜, 기온(℃), 방문객수, 결제건수, 총매출액(원), 환불건수, 배달수수료(원), 순이익(원)
  </div>
</div>

---

## 🕵️ 1교시: 육안 검안 (데이터 탐정단)

시각화를 하기 전, 눈으로만 봐도 말이 안 되는 <b>'단순 시스템 오류'</b>를 찾으세요. <br>평균 매출(50만)과 방문객(150명)을 무시한 <b>이상한 ID 번호(각 2개씩)</b>를 찾아보세요.

<div class="border-2 border-slate-800 rounded-t-lg overflow-hidden mt-6 shadow-sm bg-white">
  <div class="bg-slate-800 text-white font-black py-2.5 px-4 text-lg">
    🚨 1단계 발견 트랩 (입력/센서 오류)
  </div>
  
  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">🔍 트랩 1. "사장님, 오늘 매출이 엄청납니다!"</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 정답: ID 5번, 32번 (매출 입력 오타)</span>
      <span class="font-normal text-slate-700">총매출액이 500만 원, 5,500만 원으로 부풀려져 있습니다. 직원이 포스기에 '0'을 잘못 누른 <b>Human Error</b>입니다. 이 이상치를 안 지우면 전체 평균이 박살 납니다.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">🔍 트랩 2. "손님은 바글바글한데, 돈은 안 들어왔어"</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 정답: ID 9번, 41번 (시스템 장애)</span>
      <span class="font-normal text-slate-700">방문객은 많은데 총매출액이 '0원'입니다. <b>인터넷 통신이 끊겨</b> 결제가 안 돼서 손님들이 그냥 돌아간 날입니다.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-blue-50 text-blue-900 border border-blue-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-blue-700">🔍 트랩 3. "한여름에 북극 추위가 찾아왔다?"</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 정답: ID 19번(-40도), 38번(45도) (센서 오류)</span>
      <span class="font-normal text-slate-700">기온이 비정상적입니다. 외부 온도 센서의 고장입니다. 날씨-매출 상관관계 그래프를 그릴 때 이 점(Point)들이 그래프의 축을 망가뜨립니다.</span>
    </template>
  </HintAccordion>
</div>

---

## 🕵️ 1교시: 논리적 모순 찾기 (심화)

단순 오타가 아닙니다. 1차시에서 배웠던 <b>[테이블 6개], [배달 수수료], [폐기율]</b> 룰을 기억하며 비즈니스적 모순이 발생한 <b>ID 번호(각 2개씩)</b>를 찾으세요.

<div class="border-2 border-red-500 rounded-t-lg overflow-hidden mt-6 shadow-sm bg-white">
  <div class="bg-red-500 text-white font-black py-2.5 px-4 text-lg">
    🚨 2단계 발견 트랩 (비즈니스 함정)
  </div>
  
  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-red-50 text-red-900 border border-red-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-red-700">🔍 트랩 4. 물리법칙을 무시한 손님들</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 정답: ID 14번(1500명), 45번(1800명) (허위/배달 몰빵 데이터)</span>
      <span class="font-normal text-slate-700">우리 매장은 4인 테이블이 딱 6개(최대 24명)입니다. 아무리 회전율이 좋아도 1,500명이 홀에서 먹고 가는 것은 물리적으로 절대 불가능합니다.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-red-50 text-red-900 border border-red-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-red-700">🔍 트랩 5. 빛 좋은 개살구 (배달의 배신)</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 정답: ID 23번, 48번 (배달 수수료 폭탄)</span>
      <span class="font-normal text-slate-700">매출은 100만 원 이상인데, <b>순이익은 5만 원, 8만 원</b>입니다. 배달 수수료와 포장비로 60~70만 원이 빠져나갔습니다. 매출이 높아도 적자가 날 수 있습니다.</span>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white" contentClass="bg-red-50 text-red-900 border border-red-200 mt-2 p-4 rounded-lg font-bold text-[14px]">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[16px] font-black text-red-700">🔍 트랩 6 & 7. 환불 폭탄과 대기업의 기습</span>
      </div>
    </template>
    <template #content>
      <span class="text-red-600 font-bold mb-1 block">👉 트랩 6 (ID 26, 35):</span>
      <span class="font-normal text-slate-700 mb-2 block">환불건수가 60~85건으로 폭증하여 순이익 마이너스. (식자재 변질 사태)</span>
      <span class="text-red-600 font-bold mb-1 block">👉 트랩 7 (ID 29, 50):</span>
      <span class="font-normal text-slate-700">날씨가 좋은데 방문객이 20~30명으로 급감. (바로 앞 대기업 반값 매장 오픈일)</span>
    </template>
  </HintAccordion>
</div>

---

## 📈 2교시: 다차원 상관관계 분석 (CODAP)

<script setup>
const codapHeaders = ["ID", "날짜", "기온(℃)", "방문객수", "결제건수", "총매출액(원)", "환불건수", "배달수수료(원)", "순이익(원)"];
const codapRows = [
  "1,2026-07-01,28,150,140,560000,2,20000,250000",
  "2,2026-07-02,29,145,135,540000,1,15000,240000",
  "3,2026-07-03,31,160,150,600000,3,30000,240000",
  "4,2026-07-04,30,155,148,592000,0,25000,270000",
  "5,2026-07-05,28,150,140,55000000,2,20000,54000000",
  "6,2026-07-06,27,130,120,480000,1,10000,210000",
  "7,2026-07-07,29,140,130,520000,2,20000,230000",
  "8,2026-07-08,32,180,170,680000,4,40000,310000",
  "9,2026-07-09,33,300,0,0,0,0,-150000",
  "10,2026-07-10,31,160,150,600000,1,25000,280000",
  "11,2026-07-11,28,145,135,540000,2,20000,240000",
  "12,2026-07-12,27,135,125,500000,0,15000,220000",
  "13,2026-07-13,26,120,110,440000,1,10000,190000",
  "14,2026-07-14,30,1500,1400,5600000,10,200000,2500000",
  "15,2026-07-15,31,170,160,640000,2,30000,290000",
  "16,2026-07-16,32,180,170,680000,3,40000,310000",
  "17,2026-07-17,29,150,140,560000,1,20000,250000",
  "18,2026-07-18,28,140,130,520000,2,15000,230000",
  "19,2026-07-19,-40,135,125,500000,0,15000,220000",
  "20,2026-07-20,29,145,135,540000,1,20000,240000",
  "21,2026-07-21,30,160,150,600000,2,25000,250000",
  "22,2026-07-22,31,165,155,620000,1,30000,280000",
  "23,2026-07-23,30,280,270,1000000,3,600000,50000",
  "24,2026-07-24,28,140,130,520000,1,15000,230000",
  "25,2026-07-25,27,130,120,480000,0,10000,210000",
  "26,2026-07-26,28,150,140,560000,85,20000,-150000",
  "27,2026-07-27,29,145,135,540000,2,20000,240000",
  "28,2026-07-28,30,155,145,580000,1,25000,260000",
  "29,2026-07-29,32,30,25,100000,0,5000,-50000",
  "30,2026-07-30,30,160,150,600000,2,25000,280000",
  "31,2026-07-31,29,145,135,540000,1,20000,250000",
  "32,2026-08-01,28,150,140,5000000,2,20000,4800000",
  "33,2026-08-02,30,155,145,580000,1,25000,260000",
  "34,2026-08-03,31,165,155,620000,2,30000,290000",
  "35,2026-08-04,30,160,150,600000,60,25000,-100000",
  "36,2026-08-05,28,140,130,520000,1,15000,230000",
  "37,2026-08-06,27,135,125,500000,0,10000,220000",
  "38,2026-08-07,45,130,120,480000,1,10000,200000",
  "39,2026-08-08,30,150,140,560000,2,20000,250000",
  "40,2026-08-09,31,160,150,600000,1,25000,270000",
  "41,2026-08-10,29,250,0,0,0,0,-150000",
  "42,2026-08-11,28,145,135,540000,2,20000,240000",
  "43,2026-08-12,27,140,130,520000,0,15000,230000",
  "44,2026-08-13,29,150,140,560000,1,20000,250000",
  "45,2026-08-14,31,1800,1700,6800000,15,300000,3000000",
  "46,2026-08-15,32,175,165,660000,2,35000,300000",
  "47,2026-08-16,30,160,150,600000,1,25000,270000",
  "48,2026-08-17,31,310,300,1200000,4,700000,80000",
  "49,2026-08-18,29,155,145,580000,2,20000,260000",
  "50,2026-08-19,30,25,20,80000,0,5000,-60000"
];
</script>

<div class="d-flex justify-content-center gap-3 mb-4">
  <CsvDownload :headers="codapHeaders" :dataRows="codapRows" fileName="store_data_codap" />
  <a href="https://codap.concord.org/beta" target="_blank" class="bg-red-500 hover:bg-red-600 text-white px-6 py-3 rounded-lg font-bold shadow-md transition-all flex items-center gap-2 text-lg inline-block text-center mt-4">
    <i class="fas fa-external-link-alt"></i> CODAP 탐험 도구 열기
  </a>
</div>

<p style="font-size: 0.9rem;">태블릿이나 PC 환경에서 CODAP을 실행하고, 다운로드한 CSV 데이터를 시각화합니다.</p>

<div style="display:flex; justify-content:center; align-items:center; gap:8px; margin-top:10px; flex-wrap:wrap; font-size: 0.75rem;">
  <div style="padding:8px; background-color:#E6E6FA; border-radius:5px; text-align:center;">
    <b>CODAP 열기</b><br>새 문서 만들기
  </div>
  <div>➡️</div>
  <div style="padding:8px; background-color:#FFE4B5; border-radius:5px; text-align:center;">
    왼쪽 상단 <b>[☰ 메뉴]</b> 누르고<br><b>[가져오기]</b>로 CSV 업로드
  </div>
  <div>➡️</div>
  <div style="padding:8px; background-color:#FFB6C1; border-radius:5px; text-align:center;">
    상단 <b>[그래프]</b> 생성 후<br>축(Axis)에 지표 드래그
  </div>
  <div>➡️</div>
  <div style="padding:8px; background-color:#98FB98; border-radius:5px; text-align:center; font-weight:bold;">
    이상치 정제 및<br>추세선(LS Line) 확인
  </div>
</div>

<div class="border-2 border-slate-800 rounded-xl overflow-hidden shadow-sm mb-6 mt-6">
  <div class="bg-slate-800 text-white font-bold p-3 text-[14px]">
    🕵️ 데이터 정제 및 스케일 재조정 (Rescale) 가이드
  </div>
  <div class="p-3 bg-slate-50 text-[13px] text-slate-700 leading-relaxed text-left">
    <p class="mb-2">명백한 이상치(Outlier)나 표준편차가 너무 큰 데이터 때문에 그래프가 왜곡되어 보일 때 적용하는 필수 과정입니다.</p>
    <ol class="list-decimal pl-5 mb-0">
      <li class="mb-1">왜곡을 유발하는 이상치 데이터를 마우스나 터치로 <b>선택(드래그)</b>합니다.</li>
      <li class="mb-1">그래프 우측 <b>눈 모양 아이콘(👁️)</b>을 누르고 <b>[선택한 데이터 숨기기 (Hide Selected Cases)]</b>를 클릭합니다.</li>
      <li class="text-red-500 font-bold">가장 중요! 그래프 우측 상단의 <b>[모든 데이터를 표시하도록 화면크기조정 (십자 화살표 🔀)]</b> 버튼을 클릭하세요.</li>
    </ol>
    <div class="mt-3 text-blue-600 font-bold text-center bg-blue-100 p-2 rounded-lg">
      👉 이상치가 스케일에서 제외되며, 유의미한 데이터들이 화면에 꽉 차게 재배치됩니다.
    </div>
  </div>
</div>

---
layout: default
---

## 🎯 데이터 탐정단의 시각화 미션 3선

<div class="border-2 border-blue-500 rounded-xl overflow-hidden mt-6 shadow-sm bg-white">
  
  <HintAccordion badgeText="축 세팅 보기 ⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white transition-colors" contentClass="bg-blue-100 text-blue-800 border border-blue-200 mt-3 p-3 rounded-lg font-bold text-[13px] shadow-inner">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[15px] font-black text-slate-800">🔥 미션 1. 계절별 판매량의 진실 찾기</span>
        <span class="text-[13px] font-medium text-slate-600 leading-relaxed">센서 오류(-40도, 45도)를 그래프에서 찾아 숨기고 화면크기조정(Rescale)을 실행하여 진짜 추세를 확인하세요.</span>
      </div>
    </template>
    <template #content>
      👉 <b>[설정]</b> X축: 기온(℃) / Y축: 방문객수
    </template>
  </HintAccordion>

  <HintAccordion badgeText="축 세팅 보기 ⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white transition-colors" contentClass="bg-blue-100 text-blue-800 border border-blue-200 mt-3 p-3 rounded-lg font-bold text-[13px] shadow-inner">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[15px] font-black text-slate-800">🔥 미션 2. 배달 함정의 시각적 증명</span>
        <span class="text-[13px] font-medium text-slate-600 leading-relaxed">매출이 높은데 배달 수수료가 높으면 점의 위치(순이익)가 어떻게 되는지 컬러맵으로 증명하세요.</span>
      </div>
    </template>
    <template #content>
      👉 <b>[설정]</b> X축: 총매출액(원) / Y축: 순이익(원) / <b>그래프 안 색상(Legend):</b> 배달수수료(원)
    </template>
  </HintAccordion>

  <HintAccordion badgeText="축 세팅 보기 ⬇️" badgeClass="bg-slate-500 hover:bg-slate-600 text-white transition-colors" contentClass="bg-blue-100 text-blue-800 border border-blue-200 mt-3 p-3 rounded-lg font-bold text-[13px] shadow-inner">
    <template #title>
      <div class="flex flex-col gap-2 text-left py-1 pr-4">
        <span class="text-[15px] font-black text-slate-800">🔥 미션 3. 경쟁사 오픈에 따른 절벽 붕괴</span>
        <span class="text-[13px] font-medium text-slate-600 leading-relaxed">일자별 흐름을 보다가 갑자기 방문객이 뚝 떨어지는 절벽 구간을 그래프에서 짚어내세요.</span>
      </div>
    </template>
    <template #content>
      👉 <b>[설정]</b> X축: 날짜 / Y축: 방문객수 / 선으로 연결(Connecting Lines) 활성화
    </template>
  </HintAccordion>
</div>

---

## 🛑 CEO의 고민: "홀 영업을 유지해야 할까?"

<script setup>
import { ref } from 'vue'
const decision_x = ref(null)
const decision_y = ref(null)
</script>

<p style="font-size: 0.9rem;">임대료는 오르는데 홀이 비어있습니다. 어떤 데이터를 추가해서 분석해야 할까요?</p>

<div class="border-2 border-red-500 mx-auto mt-6 shadow-sm rounded-xl overflow-hidden" style="max-width: 85%;">
  <div class="bg-red-50 p-6 text-left">
    <h6 class="fw-bold mb-4 text-blue-600 text-lg">📍 분석을 위한 핵심 지표(Feature) 선택하기</h6>
    
<div class="mb-4">
    <label class="block text-slate-500 text-sm mb-1 font-bold">A 데이터 (X축)</label>
    <select class="w-full p-2 border-2 border-blue-400 rounded outline-none" v-model="decision_x">
    <option :value="null" disabled>항목 선택</option>
    <option value="date">날짜 (시간 흐름)</option>
    <option value="temp">오늘의 기온</option>
    </select>
</div>

<div class="mb-5">
    <label class="block text-slate-500 text-sm mb-1 font-bold">B 데이터 (Y축 - 정답을 찾아보세요)</label>
    <select class="w-full p-2 border-2 border-red-400 rounded outline-none" v-model="decision_y">
    <option :value="null" disabled>항목 선택</option>
    <option value="total">총매출액</option>
    <option value="answer">홀 결제건수 vs 배달 결제건수</option>
    <option value="refund">환불 건수</option>
    </select>
</div>

<div v-if="decision_y === 'answer'" class="bg-green-100 border border-green-300 text-green-800 p-4 rounded-lg font-bold animate-[popIn_0.3s_forwards]">
    <b>🎉 인사이트 발견:</b> 매출이 동일해도 '홀 결제건수'가 급감하고 있다면, 과감하게 홀을 줄이고 <b>배달 전문점</b>으로 전환하는 피봇팅 전략이 필요합니다!
</div>
  </div>
</div>

<div class="mt-8 pt-4 border-t border-slate-300">
  <h5 class="font-black text-blue-600 text-lg mb-3">🧪 이건 진짜 데이터과학자! (객단가 분석 순서)</h5>
  <div class="grid grid-cols-3 gap-4">
    <div class="bg-white p-3 rounded-lg shadow border border-slate-200 text-center">
      <div class="bg-slate-800 text-white text-xs px-2 py-1 rounded inline-block mb-2 font-bold">Step 1</div>
      <p class="text-sm font-bold m-0 text-slate-700">날짜-총매출 이상치 제거</p>
    </div>
    <div class="bg-white p-3 rounded-lg shadow border border-slate-200 text-center">
      <div class="bg-slate-800 text-white text-xs px-2 py-1 rounded inline-block mb-2 font-bold">Step 2</div>
      <p class="text-sm font-bold m-0 text-slate-700">날짜-방문객수 이상치 제거</p>
    </div>
    <div class="bg-white p-3 rounded-lg shadow border border-slate-200 text-center">
      <div class="bg-slate-800 text-white text-xs px-2 py-1 rounded inline-block mb-2 font-bold">Step 3</div>
      <p class="text-sm font-bold m-0 text-slate-700">방문객수-총매출 그래프 확인</p>
    </div>
  </div>
</div>

---

## ☁️ 워드클라우드: 고객 불만 리뷰 텍스트 마이닝

<script setup>
import { ref } from 'vue'
const copyReviews = async (event) => {
  const btn = event.target.closest('button');
  const reviewList = [
    "배달이 너무 늦어요. 1시간이나 기다렸습니다.", "배달 떡볶이가 다 식어서 왔어요.", "가게가 너무 좁아요. 먹기 불편함.",
    "기다리다가 지쳐서 그냥 갑니다. 가게가 좁아요.", "배달비가 너무 비싸요. 떡볶이값보다 배달비가 더 나옴.", "배달 늦어요.",
    "맛은 있는데 배달이 너무 늦어요.", "가게 테이블이 4개밖에 없어서 한참 밖에서 기다렸어요. 좁아요.", "비싸요. 배달비 좀 내려주세요.",
    "알바생 형이 바빠서 그런지 불친절해요.", "떡이 덜 익었어요. 배달도 늦고요.", "가게가 너무 좁아요 옆 사람과 부딪힘.",
    "치즈가 다 굳어서 왔어요. 배달 늦어요.", "배달비 비싸요.", "매장이 너무 좁아요.", "배달 늦어요.",
    "진짜 너무 늦어요. 배고파 죽는 줄.", "양은 많은데 매장이 좁아요.", "배달 늦어요 배달 늦어요.", "배달비가 너무너무 비싸요.",
    "맛있어요! 근데 좁아요.", "알바생 누나가 친절해요.", "가게가 너무너무 좁아요.", "배달이 늦어요 식었어요.",
    "비싸요.", "배달이 늦어요.", "좁아요.", "좁아요 대기가 길어요.", "대기 시간이 너무 길어요. 좁아요.",
    "치즈 떡볶이 맛있어요! 하지만 배달이 늦어요.", "배달비 비싸요.", "가게가 좁아요.", "식어서 왔어요.", "배달 늦어요.",
    "늦어요.", "좁아요.", "배달이 너무 늦어요 식었어요.", "테이블이 없어서 서서 기다림. 좁아요.", "배달비가 너무 비싸요.",
    "최악의 배달 속도. 늦어요.", "가게가 좁아요.", "맛있어요.", "맛있어요.", "비싸요.", "배달이 늦어요.",
    "배달비 비싸요.", "가게가 좁아요.", "식었어요 늦어요.", "매장이 좁아요.", "친절해요.", "떡볶이 최고! 근데 좁아요.",
    "배달이 늦어요.", "배달비 비싸요.", "좁아요.", "너무 좁아요.", "식었어요.", "늦어요.", "배달비 비싸요.", "가게 좁아요.",
    "늦어요.", "배달 늦어요.", "비싸요 배달비.", "좁아요.", "대기 시간이 길어요 좁아요.", "식었어요.", "늦어요 늦어요.",
    "배달비가 비싸요.", "가게가 좁아요.", "맛있어요.", "친절해요.", "알바생 불친절해요.", "좁아요.", "늦어요.", "식었어요.",
    "배달이 너무 늦어요.", "배달비 비싸요.", "가게가 좁아요.", "좁아요.", "비싸요.", "늦어요.", "식었어요.", "대기 길어요.",
    "배달 늦어요.", "배달비 비싸요.", "좁아요.", "너무 좁아요.", "맛있어요.", "늦어요.", "식었어요.", "비싸요.", "좁아요.",
    "배달이 늦어요.", "배달비 너무 비싸요.", "가게가 좁아요.", "좁아요.", "늦어요.", "식었어요.", "비싸요.", "대기가 길어요 좁아요."
  ];
  const fullReviewsText = reviewList.join("\n");
  try {
    await navigator.clipboard.writeText(fullReviewsText);
    const originalHtml = btn.innerHTML;
    btn.innerHTML = '복사 성공! 워드클라우드에 붙여넣으세요';
    btn.classList.replace('bg-red-500', 'bg-green-500');
    setTimeout(() => {
      btn.innerHTML = originalHtml;
      btn.classList.replace('bg-green-500', 'bg-red-500');
    }, 3000);
  } catch (err) {
    console.error("복사 실패:", err);
    alert("복사에 실패했습니다. 브라우저 설정을 확인해 주세요.");
  }
}
</script>

<div class="flex justify-center mb-6 mt-4">
  <a href="https://wordcloud.kr/v2/index.php" target="_blank" class="bg-red-500 hover:bg-red-600 text-white px-6 py-3 rounded-lg font-bold shadow-md transition-all">
    워드클라우드 사이트 열기
  </a>
</div>

<p class="text-slate-700 text-[14px] text-center mb-6">
  정량적 데이터(CODAP)로 문제의 현상을 파악했다면, 이제 <b>정성적 데이터(고객 리뷰)</b>를 통해 구체적인 원인을 시각화할 차례입니다.
</p>

<div style="display:flex; justify-content:center; align-items:center; gap:10px; margin-top:10px; flex-wrap:wrap; font-size: 0.8rem;" class="mb-8">
  <div style="padding:10px; background-color:#E6E6FA; border-radius:5px; text-align:center;">
    아래 버튼을 눌러<br><b>리뷰 100개 복사하기</b>
  </div>
  <div>➡️</div>
  <div style="padding:10px; background-color:#FFE4B5; border-radius:5px; text-align:center;">
    <b>워드클라우드 사이트</b><br>새 창으로 열기
  </div>
  <div>➡️</div>
  <div style="padding:10px; background-color:#FFB6C1; border-radius:5px; text-align:center;">
    '텍스트' 입력 칸에<br><b>마우스 우클릭 -> 붙여넣기</b>
  </div>
  <div>➡️</div>
  <div style="padding:10px; background-color:#98FB98; border-radius:5px; text-align:center; font-weight:bold;">
    [워드클라우드 만들기]<br>버튼 클릭!
  </div>
</div>

<div class="border-2 border-red-500 rounded-xl overflow-hidden shadow-md text-center max-w-2xl mx-auto">
  <div class="bg-red-500 text-white font-bold p-3 text-lg">🚨 우리 가게 리뷰 100건 데이터셋</div>
  <div class="p-6 bg-red-50">
    <p class="text-slate-600 text-[13px] mb-6 leading-relaxed">
      배달 지연, 협소한 매장 공간, 높은 배달 수수료 등 함정에 빠진 매장의 실제 고객 반응을 모아둔 데이터입니다.<br>
      클릭하여 텍스트 마이닝을 시작하세요.
    </p>
    <button @click="copyReviews" class="bg-red-500 hover:bg-red-600 text-white px-8 py-4 rounded-xl font-black text-lg shadow-lg transition-colors">
      고객 리뷰 100건 복사하기
    </button>
  </div>
</div>

---
layout: center
class: bg-slate-800 text-white
---

## 📢 위기 탈출 최종 피칭 (Pitching)

<p class="mb-6 text-light text-center" style="font-size: 0.9rem;">CEO는 발견한 트랩을 근거로 다음 달 생존 전략(Pivoting)을 발표합니다.</p>
        
<div class="bg-light text-slate-800 p-6 rounded-xl shadow-lg text-left mx-auto border" style="width: 90%;">
  <h5 class="font-black mb-4 border-b-2 border-slate-300 pb-2 text-blue-600 text-lg">📊 필수 포함 내용</h5>
  <ul style="font-size: 0.95rem; line-height: 1.5;" class="list-disc pl-5 mb-6">
    <li><b>1. 오염 보고:</b> "가장 치명적인 오류는 ID O번의 OOO(이유)이었습니다."</li>
    <li><b>2. 시각화 증명:</b> "CODAP으로 X축과 Y축을 비교해 보니 OOO한 현상을 확인했습니다."</li>
  </ul>

  <h6 class="font-black mt-4 mb-3 text-red-500 text-lg">💡 3. 미션별 피봇팅(전략 수정) 선택지</h6>
  <p class="text-slate-500 mb-3" style="font-size: 0.85rem;">
    <b>※ 팀 미션:</b> 아래 항목을 눌러 예시를 확인한 후, <span class="text-blue-600 font-bold">AI와 토의(프롬프팅)하여 우리 매장만의 기발한 생존 전략을 수립해 발표하세요!</span>
  </p>

  <HintAccordion badgeText="🔻" badgeClass="bg-slate-200 text-slate-800" contentClass="bg-slate-50 border-t border-slate-200 p-4 rounded-b-lg text-[13px]">
    <template #title><span class="font-bold text-slate-800 text-[15px]">📍 [미션 1] 날씨/기온에 따른 매출 방어 전략</span></template>
    <template #content>
      ✔️ <b>예시 A:</b> 비/눈 오는 날 한정 배달비 반값 이벤트로 홀 매출 감소 방어<br>
      ✔️ <b>예시 B:</b> 폭염(30도 이상) 대비 테이크아웃 전용 대용량 빙수 메뉴 도입
    </template>
  </HintAccordion>

  <div class="my-2"></div>

  <HintAccordion badgeText="🔻" badgeClass="bg-slate-200 text-slate-800" contentClass="bg-slate-50 border-t border-slate-200 p-4 rounded-b-lg text-[13px]">
    <template #title><span class="font-bold text-slate-800 text-[15px]">📍 [미션 2] 배달 수수료 폭탄 극복 전략</span></template>
    <template #content>
      ✔️ <b>예시 A:</b> 배달앱 대신 매장 직접 전화/포장 주문 시 메뉴 10% 할인 (수수료 절감)<br>
      ✔️ <b>예시 B:</b> 배달 최소 주문금액을 상향하고, 마진율이 높은 음료 묶음 세트로만 배달 운영
    </template>
  </HintAccordion>

  <div class="my-2"></div>

  <HintAccordion badgeText="🔻" badgeClass="bg-slate-200 text-slate-800" contentClass="bg-slate-50 border-t border-slate-200 p-4 rounded-b-lg text-[13px]">
    <template #title><span class="font-bold text-slate-800 text-[15px]">📍 [미션 3] 경쟁사(반값 매장) 방어 브랜딩 전략</span></template>
    <template #content>
      ✔️ <b>예시 A:</b> 가격 인하 출혈경쟁 대신, 프리미엄 식재료를 강조하는 팝업 설명회 개최<br>
      ✔️ <b>예시 B:</b> 테이블 6개의 장점(조용함)을 살려 '카공족' 환영 공간으로 개편 및 정액제 도입
    </template>
  </HintAccordion>
</div>

---

## 🎬 [심화] 인공지능이 데이터를 읽는 법: 피처(Feature)

<p class="text-slate-600 text-[14px] mb-6">
  우리가 장부에서 본 '기온', '방문객수' 같은 항목들을 인공지능은 <b>'피처(Feature)'</b>라고 부릅니다.<br>
  영상을 보고 인공지능이 어떻게 이 피처를 통해 세상을 이해하는지 알아봅시다.
</p>

<div class="grid grid-cols-2 gap-6">
  <div class="border border-slate-200 rounded-xl overflow-hidden shadow-sm">
    <div class="bg-blue-600 text-white font-bold px-4 py-2">1. 데이터가 정보가 되는 과정</div>
    <div class="bg-slate-100 p-3 h-[240px]">
      <iframe width="100%" height="100%" src="https://www.youtube.com/embed/vc6heXAXqEs" frameborder="0" allowfullscreen></iframe>
    </div>
    <HintAccordion badgeText="🔻" badgeClass="bg-slate-200 text-slate-800" contentClass="bg-white p-4 text-[13px] border-t border-slate-200">
      <template #title><span class="font-bold text-blue-600">📍 핵심 포인트 보기</span></template>
      <template #content>
        • <b>데이터 수집:</b> 가공되지 않은 원시 데이터(Raw Data)를 모으는 단계<br>
        • <b>데이터 과학:</b> 데이터를 분석해 의미 있는 '정보'를 찾아내는 기술<br>
        • <b>비즈니스 적용:</b> 우리가 장부를 분석해 전략을 짠 것이 바로 데이터 과학입니다.
      </template>
    </HintAccordion>
  </div>

  <div class="border border-slate-200 rounded-xl overflow-hidden shadow-sm">
    <div class="bg-green-600 text-white font-bold px-4 py-2">2. 인공지능의 눈, '피처' 추출</div>
    <div class="bg-slate-100 p-3 h-[240px]">
      <iframe width="100%" height="100%" src="https://www.youtube.com/embed/Ym3IM9y4U5U" frameborder="0" allowfullscreen></iframe>
    </div>
    <HintAccordion badgeText="🔻" badgeClass="bg-slate-200 text-slate-800" contentClass="bg-white p-4 text-[13px] border-t border-slate-200">
      <template #title><span class="font-bold text-green-600">📍 핵심 포인트 보기</span></template>
      <template #content>
        • <b>피처(Feature):</b> 데이터를 구분하는 결정적인 '특징' (예: 커피의 향, 온도)<br>
        • <b>피처 추출:</b> 수많은 데이터 중 문제 해결에 꼭 필요한 항목만 골라내는 과정<br>
        • <b>주의점:</b> 엉뚱한 피처(오염된 데이터)를 학습하면 AI는 바보가 됩니다.
      </template>
    </HintAccordion>
  </div>
</div>

---
layout: default
class: bg-slate-50
---

## 💡 오늘 우리가 다룬 '피처' 총정리

<div class="grid grid-cols-12 gap-6 mt-8">
  <div class="col-span-7">
    <div class="bg-white border border-slate-200 rounded-xl shadow-sm p-6">
      <h6 class="font-black text-blue-600 mb-4 text-lg">📌 CSV 장부의 열(Column) = 피처(Feature)</h6>
      <ul class="space-y-3 text-slate-700 text-[15px] list-disc pl-5">
        <li><b>기온 피처:</b> 방문객 수에 영향을 주는 외부 환경 변수</li>
        <li><b>배달 수수료 피처:</b> 순이익을 결정짓는 핵심 경제 변수</li>
        <li><b>환불 건수 피처:</b> 매장 운영의 품질을 보여주는 신뢰도 변수</li>
      </ul>
    </div>
  </div>
  
  <div class="col-span-5">
    <div class="bg-yellow-50 border-2 border-yellow-400 rounded-xl shadow-sm p-6 h-full flex flex-col justify-center">
      <h5 class="font-black text-yellow-800 text-xl mb-4">🕵️ 데이터 탐정의 결론</h5>
      <p class="text-[15px] leading-relaxed text-slate-800">
        "데이터 분석이란, <br>
        <span class="text-red-600 font-bold">가장 중요한 피처</span>를 찾아내고, <br>
        <span class="text-red-600 font-bold">잘못된 피처(오류)</span>를 걸러내는 과정이다!"
      </p>
      <hr class="border-yellow-200 my-4">
      <p class="text-[13px] text-slate-600">
        이 능력이 있어야 AI를 도구로 써서 비즈니스를 성공시킬 수 있습니다.
      </p>
    </div>
  </div>
</div>

---
layout: center
class: text-center
---

<img src="https://e000.bond/vibe/ai-sequence.png" alt="AI Sequence" class="h-[450px] mx-auto object-contain shadow-lg rounded-xl border border-slate-200" />

<div class="font-black mt-8 text-red-600 text-4xl">
  "전처리(Preprocessing)란?"
</div>
<p class="text-slate-500 mt-2">
  데이터 과학의 80%를 차지하는, <br><b>지저분한 원본 데이터를 AI가 이해할 수 있는 깨끗한 숫자</b>로 가공하는 과정!
</p>

---
layout: center
class: bg-slate-900 text-white
---

## 📱 미니게임: 당근 AI '중고폰 적정가 예측기' 만들기

<p class="text-slate-400 mb-6 text-center text-[13px]">데이터 수집부터 추론(Inference)까지, AI가 어떻게 만들어지는지 직접 조작하며 확인하세요.</p>

<AiPipelineGameHigh />

---

## 👩‍🎓 AI 파이프라인 개념 평가 (고등)

<div class="h-[500px] overflow-y-auto px-4 py-2 space-y-6 custom-scrollbar">

  <ListQuiz 
    question="Q1. 엑셀이나 표로 예쁘게 정리하기 어려운 사진, 영상, 오디오 형태의 데이터를 무엇이라고 하나요?"
    options="['1. 정형 데이터 (Structured)', '2. 시계열 데이터 (Time-series)', '3. 비정형 데이터 (Unstructured)', '4. 관계형 데이터 (Relational)', '5. 메타 데이터 (Meta)']"
    answer="3. 비정형 데이터 (Unstructured)"
    correctMsg="형태가 규격화되지 않은 텍스트, 이미지 등은 비정형 데이터로 분류됩니다."
    wrongMsg="엑셀처럼 딱 떨어지는 표 형태가 '아닌' 것을 고르세요."
  />

  <ListQuiz 
    question="Q2. 측정 오류로 인해 정상 분포에서 크게 벗어난 '이상치(Outlier)'를 제거하지 않으면 발생하는 대표적인 문제는?"
    options="['1. 평균값이 심각하게 왜곡된다', '2. 데이터 용량이 0이 된다', '3. 중앙값이 무조건 최댓값과 같아진다', '4. 차원의 저주가 발생한다', '5. 학습 속도가 100배 빨라진다']"
    answer="1. 평균값이 심각하게 왜곡된다"
    correctMsg="극단적인 이상치는 중앙값(Median)보다 평균값(Mean)을 크게 끌어당겨 통계를 왜곡시킵니다."
    wrongMsg="차원의 저주는 열(Feature)이 너무 많을 때 생기는 문제입니다. 이상치가 있다고 데이터 용량이 줄진 않습니다."
  />

  <ListQuiz 
    question="Q3. 데이터의 단위(예: 키 cm, 체중 kg)가 다를 때, 숫자의 범위를 일정한 수준으로 통일시켜주는 전처리 기법은?"
    options="['1. 라벨링 (Labeling)', '2. 군집화 (Clustering)', '3. 스케일링 (Scaling)', '4. 크롤링 (Crawling)', '5. 토큰화 (Tokenization)']"
    answer="3. 스케일링 (Scaling)"
    correctMsg="피처(Feature) 간의 크기 단위를 맞추는 정규화/표준화 작업을 통틀어 스케일링이라고 합니다."
    wrongMsg="라벨링은 정답 달기, 크롤링은 수집, 토큰화는 문장 쪼개기입니다."
  />

  <ListQuiz 
    question="Q4. 학습용 기출문제만 완벽하게 암기한 나머지, 한 번도 보지 못한 새로운 데이터(실전)에 대한 정답률이 뚝 떨어지는 현상은?"
    options="['1. 과소적합 (Underfitting)', '2. 전이학습 (Transfer Learning)', '3. 일반화 (Generalization)', '4. 과적합 (Overfitting)', '5. 역전파 (Backpropagation)']"
    answer="4. 과적합 (Overfitting)"
    correctMsg="훈련 데이터의 노이즈까지 과도하게(Over) 적합(Fitting)되어서 실전 응용력이 떨어지는 현상입니다."
    wrongMsg="과소적합은 아예 공부를 덜 한 상태입니다. 일반화는 우리가 지향하는 완벽한 목표입니다."
  />

  <ListQuiz 
    question="Q5. 훈련이 완벽히 끝난 AI 모델을 실제 서비스에 배포하고, 새로운 입력값을 넣어 결과를 내놓는 단계를 뜻하는 용어는?"
    options="['1. 추론 (Inference)', '2. 데이터 증강 (Augmentation)', '3. 손실 함수 (Loss Function)', '4. 파라미터 (Parameter)', '5. 차원 축소 (PCA)']"
    answer="1. 추론 (Inference)"
    correctMsg="모델이 학습한 패턴(가중치)을 바탕으로 새로운 미지의 데이터에 대한 답을 계산(예측)하는 것을 추론이라고 합니다."
    wrongMsg="파라미터는 가중치 수치 자체를 말하며, 손실 함수는 오차를 계산하는 식입니다."
  />

</div>

---

## 🛠️ 1교시: 자율주행 교구 제작 (실습)

원리를 배우기 전, 우리의 손으로 직접 자율주행차의 뼈대와 감각 기관을 만들어봅시다!

<div class="grid grid-cols-12 gap-6 mt-8">
  <div class="col-span-5 bg-slate-800 text-white rounded-xl shadow-lg flex flex-col justify-center items-center p-6 text-center border border-slate-700">
    <h4 class="font-black text-yellow-400 text-2xl mb-6">🔧 실습 목표</h4>
    <ul class="text-left space-y-3 text-lg text-slate-200 w-full pl-4 list-disc">
      <li>차체 조립 및 모터(구동계) 연결</li>
      <li>전방 장애물 감지 센서 부착</li>
      <li>메인보드(두뇌)와 센서 케이블 연결</li>
    </ul>
    <div class="mt-8 bg-slate-700 p-3 rounded-lg text-slate-300 italic w-full text-[13px]">
      "이 작은 부품들이 모여 어떻게 스스로 판단하고 움직이게 될까요?"
    </div>
  </div>

  <div class="col-span-7 border-2 border-blue-500 rounded-xl overflow-hidden shadow-lg">
    <div class="bg-blue-500 text-white font-black p-4 text-xl">
      ⚠️ 조립 시 주의사항
    </div>
    <div class="p-6 bg-blue-50 text-slate-800">
      <ol class="list-decimal pl-5 space-y-4 text-base">
        <li><b>케이블 방향 주의:</b> 메인보드에 핀을 꽂을 때 +와 - 극성이 바뀌지 않도록 색상을 반드시 확인하세요.</li>
        <li><b>센서 위치:</b> 전방 센서가 바닥을 향하거나 하늘을 향하면 장애물을 인식할 수 없습니다. 정확히 정면을 보게 고정하세요.</li>
        <li><b>안전 제일:</b> 모터가 회전할 때 손가락이 끼이지 않도록 주의하고, 배터리는 가장 마지막 단계에 연결합니다.</li>
      </ol>
      <hr class="border-blue-200 my-6">
      <p class="text-red-500 font-black text-center text-xl m-0 animate-pulse">타이머: 20분! 설명서의 순서대로 팀원과 협력하여 완성하세요.</p>
    </div>
  </div>
</div>

---

## 🚘 자율주행차, 스스로 달리는 마법의 원리

여러분이 방금 조립한 자동차. 이 안에는 어떤 과학적 원리가 숨어있을까요?

<div class="bg-slate-100 p-3 mt-4 mb-4 rounded-xl shadow-sm border border-slate-200 h-[320px]">
  <iframe width="100%" height="100%" src="https://www.youtube.com/embed/6f_joanlON4" frameborder="0" allowfullscreen></iframe>
</div>

<div class="bg-yellow-50 border-l-8 border-yellow-400 p-4 rounded-r-xl shadow-sm">
  <b class="text-yellow-800 text-[15px] block mb-2">💡 영상 핵심 요약: 자율주행의 3가지 필수 요소</b>
  <div class="space-y-1 text-slate-700 text-[14px]">
    <p>1️⃣ <b>센서(Sensor):</b> 방금 우리가 부착한 '눈' (카메라, 레이더, 라이다)</p>
    <p>2️⃣ <b>소프트웨어(SW):</b> 케이블을 연결한 메인보드 안의 '두뇌' (딥러닝)</p>
    <p>3️⃣ <b>도로 인프라:</b> 혼자서는 부족한 정보를 채워주는 '통신망' (정밀도로지도 & C-ITS)</p>
  </div>
</div>

---

## 👀 인간의 눈을 대신하는 '센서(Sensor)' 삼총사

자율주행차는 한 가지 센서만 믿지 않습니다. 각자의 장단점이 뚜렷하기 때문이죠.

<div class="grid grid-cols-3 gap-4 mt-6">
  <HintAccordion badgeText="🔻" badgeClass="bg-blue-600 text-white" contentClass="bg-white border-2 border-blue-200 mt-2 p-4 text-[13px] shadow-sm h-[180px] rounded-lg text-slate-700">
    <template #title><span class="text-blue-700 text-[16px] font-black">📷 카메라 (Camera)</span></template>
    <template #content>
      <p class="mb-2">✔️ <b>원리:</b> 인간의 눈처럼 시각 이미지 수집</p>
      <p class="mb-3">✔️ <b>장점:</b> 물체의 형태와 '색상' 파악 가능 (신호등 판별 필수), 가격이 매우 저렴함.</p>
      <hr class="border-slate-200 my-2">
      <p class="text-red-500 font-bold m-0 leading-tight">❌ <b>단점:</b> 역광, 폭우, 짙은 안개 등 사람이 안 보일 때 기계도 똑같이 안 보임.</p>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="🔻" badgeClass="bg-green-600 text-white" contentClass="bg-white border-2 border-green-200 mt-2 p-4 text-[13px] shadow-sm h-[180px] rounded-lg text-slate-700">
    <template #title><span class="text-green-700 text-[16px] font-black">📡 레이더 (Radar)</span></template>
    <template #content>
      <p class="mb-2">✔️ <b>원리:</b> 전파(라디오 웨이브)를 쏴서 돌아오는 시간 측정</p>
      <p class="mb-3">✔️ <b>장점:</b> 날씨(눈, 비)의 영향을 전혀 받지 않고 멀리까지 감지 가능.</p>
      <hr class="border-slate-200 my-2">
      <p class="text-red-500 font-bold m-0 leading-tight">❌ <b>단점:</b> 금속성 물체는 잘 잡지만, 플라스틱이나 사람은 잘 못 봄. 형태 구별이 떨어짐.</p>
    </template>
  </HintAccordion>

  <HintAccordion badgeText="🔻" badgeClass="bg-red-600 text-white" contentClass="bg-white border-2 border-red-200 mt-2 p-4 text-[13px] shadow-sm h-[180px] rounded-lg text-slate-700">
    <template #title><span class="text-red-700 text-[16px] font-black">🔦 라이다 (LiDAR)</span></template>
    <template #content>
      <p class="mb-2">✔️ <b>원리:</b> 고출력 레이저를 360도로 발사</p>
      <p class="mb-3">✔️ <b>장점:</b> 주변을 완벽한 '3D 입체 지도'로 실시간 구현. 오차가 cm 단위임.</p>
      <hr class="border-slate-200 my-2">
      <p class="text-red-500 font-bold m-0 leading-tight">❌ <b>단점:</b> 장비가 수천만 원으로 비싸고, 눈/비가 오면 레이저가 흩어져 바보가 됨.</p>
    </template>
  </HintAccordion>
</div>

---
layout: center
class: bg-slate-800 text-white
---

## 🤝 CEO의 첫 번째 결단: 어떤 센서를 달 것인가?

<p class="mb-8 text-center text-slate-300">여러분이 자동차를 만든다면 어떤 방식을 택하겠습니까? 현재 글로벌 1위 기업들도 서로 싸우고 있습니다.</p>

<div class="grid grid-cols-2 gap-6 text-left max-w-4xl mx-auto">
  <div class="bg-white text-slate-800 rounded-xl overflow-hidden shadow-lg">
    <div class="bg-blue-500 text-white font-black py-3 px-4 text-lg">🅰️ 가성비와 AI 올인 (테슬라 방식)</div>
    <div class="p-5">
      <p class="italic text-slate-600 font-bold mb-4">"비싼 라이다(LiDAR)는 필요 없다! 사람도 눈(카메라) 2개로만 운전하지 않느냐!"</p>
      <ul class="list-disc pl-5 space-y-2 text-[14px]">
        <li><b>구성:</b> 저렴한 고해상도 카메라 8개 + 슈퍼컴퓨터(AI)</li>
        <li><b>장점:</b> 원가가 저렴해 당장 수백만 대의 차에 팔 수 있음. 디자인이 예쁨.</li>
        <li class="text-red-500 font-bold">리스크: AI가 아직 사람만큼 똑똑하지 않아 가끔 치명적인 착각을 함.</li>
      </ul>
    </div>
  </div>

  <div class="bg-white text-slate-800 rounded-xl overflow-hidden shadow-lg">
    <div class="bg-slate-600 text-white font-black py-3 px-4 text-lg">🅱️ 초정밀 센서 퓨전 (웨이모 방식)</div>
    <div class="p-5">
      <p class="italic text-slate-600 font-bold mb-4">"안전이 최우선이다! 카메라, 레이더, 라이다를 전부 다 달아서 약점을 없애자!"</p>
      <ul class="list-disc pl-5 space-y-2 text-[14px]">
        <li><b>구성:</b> 카메라 + 레이더 + 천장에 도는 비싼 라이다(LiDAR)</li>
        <li><b>장점:</b> 기계적으로 가장 안전함. 3D 지도를 완벽히 스캔함.</li>
        <li class="text-red-500 font-bold">리스크: 센서값만 수천만 원이라 일반인에게 차를 팔 수 없음. 지붕이 못생겨짐.</li>
      </ul>
    </div>
  </div>
</div>

<div class="bg-yellow-400 text-slate-900 font-black p-3 mt-8 rounded-xl text-center shadow-md max-w-2xl mx-auto">
  🗣️ 조별 토의 (3분): 우리 팀의 자율주행차는 🅰️와 🅱️ 중 어떤 방식을 선택할지 합의하세요!
</div>

---

## 🚨 NTSB 사고 조사반: 기계는 왜 속았을까?

학생 여러분은 지금부터 NTSB(국가교통안전위원회)의 사고 조사관입니다.<br>
전 세계에서 실제로 발생한 기상천외한 자율주행 오류들을 보고, <b>어떤 센서/AI가 왜 속았는지</b> 추리해 보세요.

<div class="border-2 border-slate-800 rounded-xl mt-6 overflow-hidden shadow-md bg-white">
  <div class="bg-red-600 text-white font-black p-3 text-lg">
    📂 기밀 문서: 자율주행 X-File 6선
  </div>
  
  <div class="p-4 space-y-2 h-[380px] overflow-y-auto bg-slate-50 custom-scrollbar">
    <HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
      <template #title><span class="text-[14.5px] font-bold text-slate-800">File 1. 직진하던 차가 하얀색 대형 트럭을 들이받다 (2016)</span></template>
      <template #content>
        <span class="text-red-600 font-bold block mb-1">👉 [카메라 센서의 착각: 빛의 배신]</span>
        맑고 눈부신 날, 강한 햇빛(역광)이 비치자 카메라는 트럭의 '하얀색 옆면'을 '텅 빈 밝은 하늘'로 인식해버렸습니다.
      </template>
    </HintAccordion>

<HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
    <template #title><span class="text-[14.5px] font-bold text-slate-800">File 2. 텅 빈 도로에서 갑자기 급브레이크! '팬텀 브레이킹'</span></template>
    <template #content>
    <span class="text-red-600 font-bold block mb-1">👉 [레이더 센서의 한계: 그림자의 역습]</span>
    고가도로 밑의 '짙은 그림자'나, 공중에 떠 있는 '철제 표지판'에 전파가 부딪혀 돌아오자, 레이더는 이를 도로 위에 있는 거대한 콘크리트 벽으로 착각하고 급정거를 지시했습니다.
    </template>
</HintAccordion>

<HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
    <template #title><span class="text-[14.5px] font-bold text-slate-800">File 3. 멈춰있는 소방차와 경찰차만 골라서 들이받는다?</span></template>
    <template #content>
    <span class="text-red-600 font-bold block mb-1">👉 [센서 퓨전의 딜레마: 정지 물체 무시 알고리즘]</span>
    도로에는 정지된 물체가 너무 많습니다. 레이더가 이걸 다 피하려다간 앞으로 갈 수 없어서, AI는 <b>'완전히 정지된 금속 물체는 무시하라'</b>는 규칙을 가집니다. 게다가 밤에 번쩍이는 경광등 불빛은 카메라의 눈마저 멀게 만들었습니다.
    </template>
</HintAccordion>

<HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
    <template #title><span class="text-[14.5px] font-bold text-slate-800">File 4. 정지(STOP) 표지판을 무시하고 시속 130km로 질주!</span></template>
    <template #content>
    <span class="text-red-600 font-bold block mb-1">👉 [AI 시각 지능의 취약점: 적대적 공격(Adversarial Attack)]</span>
    누군가 빨간 STOP 표지판에 검은 테이프를 붙여 낙서해두었습니다. 사람은 당연히 '낙서'로 읽지만, AI는 테이프의 패턴 때문에 이를 <b>'속도제한 80마일(130km) 표지판'</b>으로 잘못 분류했습니다.
    </template>
</HintAccordion>

<HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
    <template #title><span class="text-[14.5px] font-bold text-slate-800">File 5. 사람이 지나가도 멈추지 않은 자율주행차 (2018)</span></template>
    <template #content>
    <span class="text-red-600 font-bold block mb-1">👉 [센서 간의 충돌과 딥러닝의 오판]</span>
    어두운 밤 무단 횡단하는 사람을 레이더는 '물체'로 감지했지만, 카메라는 어두워서 '날아다니는 쓰레기봉투'로 분류했습니다. 두 센서의 의견이 엇갈리자, AI 시스템은 카메라의 손을 들어주며 브레이크를 밟지 않았습니다.
    </template>
</HintAccordion>

<HintAccordion badgeText="원인 보기 🔻" badgeClass="bg-slate-500 text-white hover:bg-slate-600 transition-colors" contentClass="bg-red-50 border border-red-200 mt-2 p-3 text-[13px] rounded-lg text-slate-700">
    <template #title><span class="text-[14.5px] font-bold text-slate-800">File 6. 굳지 않은 시멘트 도로로 돌진해 갇혀버린 택시 (2023)</span></template>
    <template #content>
    <span class="text-red-600 font-bold block mb-1">👉 [AI의 상식(Context) 부재]</span>
    센서는 앞이 뻥 뚫린 평평한 도로라고 인식했습니다. 사람은 주변 공사 표지판과 질감을 보고 시멘트가 덜 말랐다고 판단하지만, 인공지능에게는 그런 <b>'사회적 상식과 맥락'</b>을 이해하는 능력이 없습니다.
    </template>
</HintAccordion>
  </div>
</div>

---

## ⚖️ 2교시: 트롤리 딜레마 (당신의 선택은?)

자율주행차가 고장 나서 브레이크가 안 듣습니다. 여러분이 이 차를 만든 사장님이라면, **누구를 구하도록 로봇에게 명령하시겠습니까?**

<div class="bg-slate-50 border-l-8 border-red-500 p-6 rounded-r-xl shadow-md mt-6 relative">
  <h5 class="font-black text-red-600 text-xl mb-4">🤔 피할 수 없는 사고의 순간</h5>
  <p class="text-slate-700 text-base mb-6">차는 현재 시속 80km로 직진 중입니다.</p>
  
  <div class="space-y-4 text-slate-800">
    <div class="bg-white p-4 rounded border border-slate-200 shadow-sm">
      <b class="text-lg block mb-1 text-red-600">[선택 A]</b> 그대로 직진한다. (무단 횡단하는 <b>보행자 5명 사망</b>)
    </div>
    <div class="bg-white p-4 rounded border border-slate-200 shadow-sm">
      <b class="text-lg block mb-1 text-blue-600">[선택 B]</b> 운전대를 꺾어 벽에 박는다. (차량에 탑승한 <b>운전자 1명 사망</b>)
    </div>
    <div class="bg-white p-4 rounded border border-slate-200 shadow-sm">
      <b class="text-lg block mb-1 text-green-600">[선택 C]</b> 운전대를 꺾어 인도로 돌진한다. (규칙을 지키던 <b>무고한 보행자 1명 사망</b>)
    </div>
  </div>
</div>

<div class="mt-8 text-center flex flex-col items-center">
  <a href="https://science.seoul.go.kr/RAIM/aiPlaygrnd/list.do?key=2310160006" target="_blank" class="bg-red-500 text-white font-black px-8 py-4 rounded-full shadow-lg hover:bg-red-600 hover:scale-105 transition-all text-xl inline-block">
    🎮 직접 체험하기: 트롤리 딜레마 시뮬레이터 (클릭)
  </a>
  <p class="mt-3 text-slate-500 font-bold text-sm">* 서울시립과학관 사이트로 이동해서 직접 게임처럼 선택을 해보세요!</p>
</div>

---
layout: default
class: text-center bg-[#1e293b] text-white
---

## 📢 [최종 피칭] 자율주행 기업 윤리 선언문

<p class="mb-8 text-light text-center">여러분은 이제 글로벌 자율주행 기업의 CEO입니다. 우리 회사의 윤리 알고리즘을 세상에 발표하세요.</p>

<div class="bg-white text-slate-800 p-8 rounded-2xl shadow-2xl text-left w-full max-w-4xl mx-auto border-4 border-yellow-400">
  <h5 class="font-black text-2xl mb-6 border-b-2 border-slate-200 pb-3 text-blue-600">📝 조별 토의 및 프롬프트 미션</h5>
  
  <ul class="space-y-4 text-[15px]">
    <li class="flex items-start gap-3 p-3 bg-slate-50 rounded-lg">
      <span class="bg-red-500 text-white text-xs font-bold px-3 py-1.5 rounded shrink-0 mt-0.5">Step 1</span> 
      <span>시뮬레이션 결과를 바탕으로, 피할 수 없는 사고에서 우리 차는 <b>누구를 최우선으로 보호할지</b> 합의하세요. (탑승객 vs 다수의 보행자 vs 법규 준수자)</span>
    </li>
    <li class="flex items-start gap-3 p-3 bg-slate-50 rounded-lg">
      <span class="bg-blue-500 text-white text-xs font-bold px-3 py-1.5 rounded shrink-0 mt-0.5">Step 2</span> 
      <span>어려운 딜레마를 대중과 언론에 납득시키기 위해 <b>생성형 AI</b>의 도움을 받으세요.</span>
    </li>
    <li class="flex flex-col gap-3 p-3 bg-slate-50 rounded-lg">
      <div class="flex items-start gap-3">
        <span class="bg-green-500 text-white text-xs font-bold px-3 py-1.5 rounded shrink-0 mt-0.5">Step 3</span> 
        <span>AI에게 다음과 같이 프롬프팅 하여 선언문을 얻어내세요.</span>
      </div>
      <div class="text-slate-600 font-bold bg-white p-4 ml-14 border border-slate-200 rounded-lg shadow-inner italic">
        "우리는 피할 수 없는 사고 상황에서 [ 선택한 기준 ]을 최우선으로 보호하기로 한 자율주행 기업의 CEO야. 소비자와 언론을 설득할 수 있는 감동적이고 책임감 있는 기업 윤리 선언문(보도자료)을 300자로 작성해 줘."
      </div>
    </li>
  </ul>

  <div class="bg-blue-50 border-2 border-blue-300 text-blue-800 py-3 mt-6 text-center rounded-xl font-bold text-lg">
    <b>🔥 최종 발표:</b> AI가 써준 선언문을 다듬어, 우리 회사의 철학을 무대에서 피칭하세요!
  </div>
</div>

---
layout: center
class: text-center
---

<h1 class="text-7xl mb-6">👏🏽</h1>

<h2 class="font-black text-4xl leading-tight mb-12 text-slate-800">
  멋진 로고부터 비밀 장부 추리,<br>
  그리고 따뜻한 마음을 가진 AI 윤리까지!<br>
  학생 창업가 여러분, 진심으로 수고하셨습니다!
</h2>

<h1 class="text-red-500 font-black text-6xl animate-pulse mt-10">
  🚨 설문 꼭 참여해주세요! 🚨
</h1>

---
layout: center
class: bg-[#1e293b] text-white
---

## 🪄 AI 프롬프트 마법 기계 (가챠 게임)

<p class="text-slate-400 mb-8 text-center">똑같은 AI라도 사장님이 어떻게 말하느냐에 따라 결과는 천지차이! 버튼을 여러 번 눌러보세요.</p>

<PromptMachineMiddle />

---

## 📚 부록: 파이썬 기초 문법 레시피

<div class="mb-4">
  <a href="https://jupyter.org/try-jupyter/lab/" target="_blank" class="bg-slate-800 hover:bg-slate-700 text-white px-6 py-3 rounded-full font-bold shadow-md transition-colors flex items-center justify-center gap-2 w-fit">
    <i class="fas fa-external-link-alt text-yellow-400"></i> 주피터 온라인 실습장 바로가기
  </a>
  <p class="text-slate-500 mt-2 text-sm">* 별도의 설치 없이 브라우저에서 바로 파이썬 코드를 실행할 수 있습니다.</p>
</div>

<div class="grid grid-cols-3 gap-4 h-[350px]">
  
<CodeCard title="1. 리스트(List)" color="#3b82f6">
  
```python
# 우리 가게 추천 메뉴 리스트
menu = ["떡볶이", "튀김", "순대"]

print(menu)
print(menu[0]) # 첫 번째 항목 출력
```

</CodeCard>

<CodeCard title="2. for 반복문" color="#10b981">

```python
# 메뉴판을 하나씩 출력해봅시다.
menu = ["떡볶이", "튀김", "순대"]

for item in menu:
    print("오늘의 추천 메뉴는:", item)
```

</CodeCard>

<CodeCard title="3. if-else 조건문" color="#ef4444">

```python
# 매출에 따른 기분?
today_profit = 150000

if today_profit >= 100000:
    print("오늘은 장사가 잘 됐네!")
else:
    print("내일은 더 열심히 해보자.")
```

</CodeCard>

</div>

---

## 📊 CODAP을 파이썬으로! (데이터 분석 코딩)

<script setup>
import { ref } from 'vue'
const copyCommand = async (event, text) => {
  const btn = event.target;
  try {
    await navigator.clipboard.writeText(text);
    const originalText = btn.innerText;
    btn.innerText = "복사 완료!";
    btn.classList.replace('bg-slate-100', 'bg-green-100');
    setTimeout(() => {
      btn.innerText = originalText;
      btn.classList.replace('bg-green-100', 'bg-slate-100');
    }, 2000);
  } catch (err) {
    alert("복사 실패!");
  }
}
</script>

<p class="text-slate-600 text-sm mb-4">마우스 클릭으로 하던 데이터 분석, 이제 <b>파이썬 코드</b>로 더 자유롭게 해봅시다!</p>

<div class="grid grid-cols-12 gap-6 h-[420px]">
  <div class="col-span-7 h-full overflow-y-auto custom-scrollbar pr-2">

<CodeCard title="🎨 도자기 온도 분석기 (v1.0)" color="#0ea5e9">

```python
import pandas as pd
import matplotlib.pyplot as plt

# [준비] 도자기 온도 데이터 (내가 만든 리스트)
temp_list = [1050, 1180, 1290, 1320, 1250, 1310, 1100, 1350, 1280, 1400, 1150]

# [조립] 숫자들에 'Temperature'라는 이름표를 붙여 표(DataFrame)로 만들어요
df = pd.DataFrame({'Temperature': temp_list})

plt.figure(figsize=(10, 5))

# [그리기 1] 전체적인 온도 흐름을 선 그래프로 그려요
plt.plot(df.index, df['Temperature'], color='skyblue', marker='o', label='Normal Temp')

# [그리기 2] 1300도가 넘는 곳만 찾아서 빨간 점을 찍어요 (이상치 강조)
x = 0  # 처음 시작하는 칸의 번호표는 0번!
for temp in temp_list:
    if temp > 1300:
        # 1300도가 넘으면 지금 칸(x)에 빨간 점을 찍어라!
        plt.scatter(x, temp, color='red', s=100, zorder=5)
    x = x + 1  # 다음 칸 확인을 위해 번호표 숫자를 키워요

# [마무리] 기준선과 제목 넣기
plt.axhline(y=1300, color='orange', linestyle='--')
plt.title('Pottery Temperature Check (List Version)')
plt.show()
```

</CodeCard>
  </div>

  <div class="col-span-5 flex flex-col gap-4">
    <div class="bg-slate-50 border border-slate-200 rounded-xl p-4 shadow-sm">
      <h6 class="font-bold text-blue-600 mb-2"><i class="fas fa-book me-1"></i> 도구 설명</h6>
      <ul class="text-[13px] text-slate-700 space-y-1 list-disc pl-4">
        <li><b>Pandas(판다스):</b> 파이썬계의 '엑셀'. 데이터를 표 형태로 예쁘게 정리해주는 라이브러리입니다.</li>
        <li><b>Matplotlib(맷플롯립):</b> 파이썬계의 '화가'. 데이터를 선, 막대, 점 그래프로 시각화해줍니다.</li>
      </ul>
    </div>

<div class="bg-white border-2 border-yellow-400 rounded-xl shadow-sm overflow-hidden">
    <div class="bg-yellow-400 text-slate-900 font-bold p-2 text-sm text-center">🔥 AI에게 이렇게 명령해보세요!</div>
    <div class="p-3 text-[12px] space-y-2">
    <p class="text-slate-500 mb-1 text-center">주피터에 코드를 붙여넣은 뒤, 다음 문구를 복사해서 AI에게 시켜보세요.</p>
    <button @click="copyCommand($event, '위의 코드에서 데이터(temp_list)에 1500도를 2개 더 추가하고 그래프 제목을 한글로 바꿔줘.')" class="w-full text-left bg-slate-100 hover:bg-slate-200 p-2 rounded border border-slate-300 transition-colors">
        "데이터를 더 추가하고 제목을 바꿔줘"
    </button>
    <button @click="copyCommand($event, '1300도가 아니라 1200도가 넘으면 파란색 별 모양으로 표시하도록 코드를 수정해줘.')" class="w-full text-left bg-slate-100 hover:bg-slate-200 p-2 rounded border border-slate-300 transition-colors">
        "이상치 기준 온도와 모양을 바꿔줘"
    </button>
    <button @click="copyCommand($event, '선 그래프 말고 막대 그래프(bar chart)로 바꾸고, 막대 색깔은 초록색으로 해줘.')" class="w-full text-left bg-slate-100 hover:bg-slate-200 p-2 rounded border border-slate-300 transition-colors">
        "그래프 종류와 색깔을 바꿔줘"
    </button>
    </div>
</div>
  </div>
</div>

---

## 📂 CSV 자료도 척척! (파일 데이터 분석)

<script setup>
const downloadPotteryCsv = () => {
  const csvContent = "ID,Temperature\n1,1050\n2,1180\n3,1290\n4,1320\n5,1250\n6,1310\n7,1100\n8,1350\n9,1280\n10,1400\n11,1150";
  const blob = new Blob(["\uFEFF" + csvContent], { type: 'text/csv;charset=utf-8;' });
  const link = document.createElement("a");
  const url = URL.createObjectURL(blob);
  link.setAttribute("href", url);
  link.setAttribute("download", "pottery.csv");
  link.style.visibility = 'hidden';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
}
</script>

<div class="grid grid-cols-2 gap-6 mt-4">
  <div class="flex flex-col gap-4">
    
<div class="bg-slate-50 border border-slate-200 rounded-xl p-4 shadow-sm">
    <h6 class="font-bold text-green-600 mb-2"><i class="fas fa-file-csv me-1"></i> CSV란 무엇일까요?</h6>
    <p class="text-[13px] text-slate-700 leading-relaxed m-0">
    <b>Comma-Separated Values</b>의 약자로, 데이터들을 쉼표(,)로 구분해서 저장한 아주 가벼운 표 파일입니다. 엑셀이나 주피터 노트북 어디서든 열리는 '데이터계의 공용어'예요!
    </p>
</div>

<div class="bg-white border-2 border-green-500 rounded-xl p-4 shadow-sm text-center">
    <p class="font-bold text-slate-800 text-sm mb-3">Step 1. 연습용 데이터 받기</p>
    <button @click="downloadPotteryCsv" class="bg-green-500 hover:bg-green-600 text-white font-bold py-2 px-6 rounded-lg transition-colors">
    <i class="fas fa-download me-2"></i> pottery.csv 다운로드
    </button>
</div>

<div class="bg-[#f0faff] border border-blue-200 rounded-xl p-4 shadow-sm">
    <h6 class="font-bold text-blue-600 mb-2"><i class="fas fa-cloud-upload-alt me-1"></i> Step 2. 주피터 온라인에 올리기</h6>
    <ol class="text-[13px] text-slate-700 space-y-1 list-decimal pl-4 m-0">
    <li>주피터 화면 왼쪽 파일 목록 창에서 <b>[↑] (상향 화살표)</b> 아이콘을 클릭하세요.</li>
    <li>방금 다운로드한 <b>pottery.csv</b> 파일을 선택합니다.</li>
    <li>목록에 파일 이름이 나타나면 준비 끝!</li>
    </ol>
    <p class="text-red-500 font-bold text-xs mt-3 m-0">* 주의: 파일을 올리지 않으면 우측 코드가 에러 납니다!</p>
</div>

  </div>

  <div class="h-[400px] overflow-y-auto custom-scrollbar pr-2">
<CodeCard title="🐍 CSV 자동 분석 스크립트" color="#334155">

```python
import pandas as pd
import matplotlib.pyplot as plt

# [불러오기] csv 파일을 읽어서 바로 표(df)로 만들어요
# 파일 이름이 업로드한 이름과 정확히 같아야 합니다!
df = pd.read_csv('pottery.csv') 

# [준비] 표 안에 있는 'Temperature' 칸의 숫자들만 리스트로 뽑아요
temp_list = df['Temperature'].tolist()

plt.figure(figsize=(10, 5))

# [그리기 1] 전체 선 그래프 그리기
plt.plot(df.index, temp_list, color='skyblue', marker='o', label='Normal Temp')

# [그리기 2] 1300도 이상 구간 빨간색 점 강조
x = 0
for temp in temp_list:
    if temp > 1300:
        plt.scatter(x, temp, color='red', s=100, zorder=5)
    x = x + 1

# [마무리] 기준선과 제목 넣기
plt.axhline(y=1300, color='orange', linestyle='--')
plt.title('Pottery Temperature Check (CSV Version)')
plt.show()
```

</CodeCard>
  </div>
</div>

---

## 🚗 인간자율주행차를 움직여봅시다

<p class="text-slate-600 text-sm mb-4">자율주행차의 두뇌는 쉬지 않고 작동해야 합니다. 흐름을 제어하는 핵심 문법을 알아봅시다!</p>

<div class="grid grid-cols-3 gap-4 mb-6">
  <div class="bg-white border-2 border-yellow-400 rounded-xl p-3 shadow-sm text-center">
    <div class="bg-yellow-400 text-slate-900 font-bold px-2 py-1 rounded inline-block text-xs mb-2">while True</div>
    <div class="text-[13px] text-slate-700"><b>"무한 가동"</b><br>전원을 끄기 전까지 내부 코드를 무한히 반복 실행합니다.</div>
  </div>
  <div class="bg-white border-2 border-green-500 rounded-xl p-3 shadow-sm text-center">
    <div class="bg-green-500 text-white font-bold px-2 py-1 rounded inline-block text-xs mb-2">continue</div>
    <div class="text-[13px] text-slate-700"><b>"정상 주행 유지"</b><br>아래 코드를 무시하고 즉시 루프의 처음으로 돌아갑니다.</div>
  </div>
  <div class="bg-white border-2 border-red-500 rounded-xl p-3 shadow-sm text-center">
    <div class="bg-red-500 text-white font-bold px-2 py-1 rounded inline-block text-xs mb-2">break</div>
    <div class="text-[13px] text-slate-700"><b>"비상 정지/탈출"</b><br>반복문을 즉시 종료하고 루프 밖으로 빠져나갑니다.</div>
  </div>
</div>

<div class="h-[250px] overflow-y-auto custom-scrollbar pr-2">
<CodeCard title="🐍 자율주행 제어 시스템 예제 (복사용)" color="#334155">

```python
distance = 100 # 장애물까지의 거리 (m)

while True:
    print("현재 거리:" + str(distance))
    if distance == 0:
        print("🚩 목적지 도착! 엔진 정지.")
        break  # 루프 탈출
    if distance > 50:
        print("🚀 가속합니다.")
        distance = distance - 20
        continue  # 다시 처음으로 돌아가 거리 확인
    print("⚠️ 서행하며 장애물을 피합니다.")
    distance = distance - 10
```

</CodeCard>
</div>

---

## 🚗 인간자율주행차 알고리즘 Mission

<p class="text-slate-600 mb-4">아래 설계도를 완성해보세요. 빈칸에 들어갈 코드는 무엇일까요?</p>

<div class="bg-[#1e1e1e] border border-[#333] rounded-xl overflow-hidden shadow-2xl mx-auto w-full max-w-3xl">
  <div class="bg-[#323233] px-4 py-3 flex items-center gap-2">
    <span class="w-3 h-3 bg-[#ff5f56] rounded-full"></span>
    <span class="w-3 h-3 bg-[#ffbd2e] rounded-full"></span>
    <span class="w-3 h-3 bg-[#27c93f] rounded-full"></span>
    <span class="text-[#969696] font-mono text-xs ml-2">autonomous_logic.py</span>
  </div>
  
  <div class="p-6 font-mono text-lg leading-loose text-left" style="color: #d4d4d4;">
    <div>distance = 1000 <span style="color: #6a9955;"># 목적지까지 거리 설정</span></div>
    <div>sensor = 1000 <span style="color: #6a9955;"># 초기 센서 거리 설정</span></div>
    <br>
    <div><span style="color: #ce9178; font-weight: bold;">________ ________</span>: <span style="color: #6a9955;"># [1] 무한 루프를 시작하는 명령은?</span></div>
    <br>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #c586c0;">if</span> <span style="color: #ce9178;">________ ________ ________</span>: <span style="color: #6a9955;"># [2] 센서거리가 30m 보다 가까워지면 속도를 줄여야합니다!</span></div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("⚠️ 장애물 주의")</div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;distance = distance - 10</div>
    <br>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #c586c0;">if</span> <span style="color: #ce9178;">________ ________ ________</span>: <span style="color: #6a9955;"># [3] 센서거리가 50m보다 멀리 있다면 가속하고 처음으로!</span></div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("🚀 쾌속 주행!")</div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;distance = distance - 20</div>
    <br>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #c586c0;">if</span> <span style="color: #ce9178;">________ ________ ________</span>: <span style="color: #6a9955;"># [4] 목적지에 도착하면 멈춤!</span></div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print("🚩 목적지 도착!")</div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #569cd6;">________</span></div>
  </div>
</div>