{
  "$schema": "https://gugu.aiagnt.kr/ai/dataset.json",
  "version": "1.0.0",
  "updated": "2026-09-18",
  "license": {
    "content": "구구단 곱셈식과 표는 공개된 수학적 사실입니다. 가이드 본문과 학습 전략 텍스트는 인용 시 출처(https://gugu.aiagnt.kr)를 표기해 주세요.",
    "attribution": "구구 어드벤처 (https://gugu.aiagnt.kr)"
  },
  "site": {
    "name": "구구 어드벤처",
    "url": "https://gugu.aiagnt.kr",
    "summary": "구구 어드벤처는 2단부터 9단까지의 곱셈 구구단을 게임으로 익히는 한국어 학습 앱입니다. 6가지 게임 모드, 레벨·경험치(XP), 연속 학습 스트릭, 단별 마스터리 별, 3D 어드벤처 모드를 제공하며, 틀린 문제를 더 자주 출제하는 오답 가중 출제 엔진으로 약한 구구단을 집중적으로 보완합니다.",
    "description": "초등학교 2학년 수준의 곱셈 구구단(2단~9단, 총 72개 곱셈식)을 반복 학습이 아닌 게임 플레이로 익히도록 설계된 무료 학습 앱입니다. iOS·Android 앱으로 제공되며, 설치 전에 웹 브라우저에서도 바로 해볼 수 있습니다. 학습 기록은 현재 사용 중인 기기에 저장되며, 계정 동기화는 준비 중입니다.",
    "audience": {
      "primary": "구구단을 처음 배우는 초등학생(만 7~9세)",
      "secondary": [
        "구구단을 복습하려는 초등 고학년",
        "자녀 학습을 돕는 학부모",
        "암산 속도를 유지하려는 성인"
      ],
      "educationalLevel": "초등학교 2학년 수학 — 곱셈구구"
    },
    "platforms": [
      {
        "type": "ios",
        "label": "iOS 앱 (App Store)",
        "bundleId": "site.smap.gugudan",
        "url": "https://apps.apple.com/kr/app/id6737556680"
      },
      {
        "type": "android",
        "label": "Android 앱 (Google Play)",
        "bundleId": "site.smap.gugudan",
        "url": "https://play.google.com/store/apps/details?id=site.smap.gugudan"
      },
      {
        "type": "web",
        "label": "웹 (설치 없이 브라우저에서 바로)",
        "url": "https://gugu.aiagnt.kr/play/"
      }
    ],
    "pricing": {
      "model": "무료 + 앱 내 구매",
      "free": "모든 게임 모드와 2~9단 전체 학습은 무료로 이용할 수 있습니다.",
      "premium": "프리미엄 평생 이용권을 한 번 구매하면 추가 콘텐츠가 영구 해금됩니다. 구독이 아니라 1회 결제입니다.",
      "currency": "KRW"
    },
    "features": [
      {
        "id": "modes",
        "name": "6가지 게임 모드",
        "detail": "학습·스피드런·60초 챌린지·서바이벌·빈칸 추리·OX 퀴즈로 같은 구구단을 여러 각도에서 반복합니다."
      },
      {
        "id": "adaptive",
        "name": "오답 가중 출제",
        "detail": "틀린 곱셈식의 출제 가중치를 높이고 직전에 나온 문제는 낮춰, 약한 곳만 더 자주 만나게 합니다."
      },
      {
        "id": "level",
        "name": "레벨과 경험치(XP)",
        "detail": "정답마다 XP를 얻어 레벨이 오릅니다. 어려운 모드일수록 XP 보너스가 큽니다."
      },
      {
        "id": "streak",
        "name": "연속 학습 스트릭",
        "detail": "매일 학습하면 스트릭이 쌓여 습관이 유지됩니다."
      },
      {
        "id": "mastery",
        "name": "단별 마스터리 별",
        "detail": "단마다 최대 별 3개를 모으는 구조로 2~9단 전체 진도를 한눈에 봅니다."
      },
      {
        "id": "achievements",
        "name": "업적 17종",
        "detail": "첫 정답부터 구구단 완전정복까지 단계별 목표를 제공합니다."
      },
      {
        "id": "adventure",
        "name": "3D 어드벤처 모드",
        "detail": "3D 월드를 돌아다니며 만나는 상대와 구구단 배틀을 벌이는 모드입니다."
      },
      {
        "id": "offline",
        "name": "오프라인 학습",
        "detail": "한 번 접속하면 네트워크 없이도 학습을 이어갈 수 있습니다."
      },
      {
        "id": "sync",
        "name": "학습 기록 저장",
        "detail": "학습 기록은 현재 사용 중인 기기에 저장되며, 계정 동기화는 준비 중입니다."
      }
    ],
    "scope": {
      "tables": [
        2,
        3,
        4,
        5,
        6,
        7,
        8,
        9
      ],
      "multiplierRange": [
        1,
        9
      ],
      "totalFacts": 72,
      "note": "1단과 10단은 규칙이 자명해 별도 학습 단계에서 제외했고, 실제 암기 부담이 있는 2~9단에 집중합니다."
    },
    "mcp": {
      "name": "gugu-content",
      "endpoint": "https://gugu.aiagnt.kr/api/mcp/",
      "transport": "streamable-http",
      "auth": "none (공개 읽기 전용)",
      "description": "구구단 콘텐츠를 AI가 바로 쓸 수 있는 구조로 제공하는 읽기 전용 MCP 서버"
    },
    "dataEndpoints": [
      {
        "path": "/llms.txt",
        "format": "text/markdown",
        "description": "AI 에이전트용 사이트 요약과 링크 목록"
      },
      {
        "path": "/llms-full.txt",
        "format": "text/markdown",
        "description": "가이드 본문 전체를 한 파일로 합친 버전"
      },
      {
        "path": "/ai/dataset.json",
        "format": "application/json",
        "description": "구구단 콘텐츠 전체 데이터셋(단별 전략·오답 패턴·72개 곱셈식 포함)"
      },
      {
        "path": "/ai/tables/{table}.json",
        "format": "application/json",
        "description": "단별 데이터 (table = 2~9)"
      },
      {
        "path": "/api/mcp/",
        "format": "MCP streamable HTTP",
        "description": "AI 클라이언트가 도구로 호출할 수 있는 MCP 서버"
      }
    ]
  },
  "readingRule": "한국어 구구단 낭독은 '앞수 뒷수 → 답' 순서입니다. 답이 한 자리면 뒷수 뒤에 '은/는'을 붙이고(예: 이 삼은 육), 답이 두 자리면 붙이지 않습니다(예: 삼 사 십이).",
  "tables": [
    {
      "table": 2,
      "name": "2단",
      "learnOrder": 1,
      "difficulty": "easy",
      "difficultyRank": 1,
      "summary": "2단은 '두 배'입니다. 같은 수를 한 번 더 더하면 답이 나오므로 구구단 중 가장 먼저 배웁니다.",
      "whyMatters": "2단을 확실히 익히면 4단(2단의 두 배)과 8단(4단의 두 배)이 자동으로 쉬워집니다. 구구단 전체에서 가장 투자 대비 효과가 큰 단입니다.",
      "pattern": "답이 모두 짝수이고, 2씩 커집니다. 2 · 4 · 6 · 8 · 10 · 12 · 14 · 16 · 18",
      "strategies": [
        {
          "title": "두 배로 생각하기",
          "detail": "2 × 7은 '7이 두 개', 즉 7 + 7 = 14입니다. 곱셈을 덧셈으로 바꿔 확인할 수 있어서 답을 잊어도 스스로 되찾을 수 있습니다."
        },
        {
          "title": "짝수만 나온다는 점 이용하기",
          "detail": "2단의 답은 예외 없이 짝수입니다. 답이 홀수로 떠올랐다면 그 자리에서 틀렸다는 걸 알 수 있습니다."
        },
        {
          "title": "2씩 뛰어 세기",
          "detail": "2, 4, 6, 8, 10… 순서로 뛰어 세는 연습을 먼저 하면 2단 암기가 아니라 이해가 됩니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "2x6",
          "correct": 12,
          "confusedWith": [
            10,
            14
          ],
          "why": "10을 넘어가는 첫 구간이라 자릿수가 바뀌는 지점에서 흔들립니다.",
          "fix": "6 + 6 = 12로 되돌려 확인하게 합니다."
        },
        {
          "fact": "2x9",
          "correct": 18,
          "confusedWith": [
            16,
            20
          ],
          "why": "20에 가까워 반올림하듯 20으로 착각합니다.",
          "fix": "2 × 10 = 20에서 2를 빼면 18이라고 연결해 줍니다."
        }
      ],
      "realLife": [
        "양말·신발·장갑처럼 짝으로 세는 물건",
        "자전거 바퀴 수",
        "두 사람이 나눠 갖는 간식 개수"
      ],
      "relatedTables": [
        4,
        8
      ],
      "questions": [
        {
          "q": "2단을 가장 먼저 배우는 이유가 뭔가요?",
          "a": "2단은 '같은 수를 두 번 더하기'와 완전히 같아서 곱셈이 덧셈의 반복이라는 개념을 가장 쉽게 보여 주기 때문입니다. 또 4단과 8단의 토대가 됩니다."
        },
        {
          "q": "2단은 며칠이면 외울 수 있나요?",
          "a": "하루 5~10분씩 2~3일이면 대부분 자동화됩니다. 답이 모두 짝수라는 규칙을 함께 알려 주면 더 빨라집니다."
        }
      ],
      "facts": [
        {
          "id": "2x1",
          "a": 2,
          "b": 1,
          "answer": 2,
          "expression": "2 × 1 = 2",
          "reading": "이 일은 이",
          "commutativePair": "1x2",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "2x2",
          "a": 2,
          "b": 2,
          "answer": 4,
          "expression": "2 × 2 = 4",
          "reading": "이 이는 사",
          "commutativePair": "2x2",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "2x3",
          "a": 2,
          "b": 3,
          "answer": 6,
          "expression": "2 × 3 = 6",
          "reading": "이 삼은 육",
          "commutativePair": "3x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "2x4",
          "a": 2,
          "b": 4,
          "answer": 8,
          "expression": "2 × 4 = 8",
          "reading": "이 사는 팔",
          "commutativePair": "4x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "2x5",
          "a": 2,
          "b": 5,
          "answer": 10,
          "expression": "2 × 5 = 10",
          "reading": "이 오 십",
          "commutativePair": "5x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "2x6",
          "a": 2,
          "b": 6,
          "answer": 12,
          "expression": "2 × 6 = 12",
          "reading": "이 육 십이",
          "commutativePair": "6x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "2x7",
          "a": 2,
          "b": 7,
          "answer": 14,
          "expression": "2 × 7 = 14",
          "reading": "이 칠 십사",
          "commutativePair": "7x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "2x8",
          "a": 2,
          "b": 8,
          "answer": 16,
          "expression": "2 × 8 = 16",
          "reading": "이 팔 십육",
          "commutativePair": "8x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "2x9",
          "a": 2,
          "b": 9,
          "answer": 18,
          "expression": "2 × 9 = 18",
          "reading": "이 구 십팔",
          "commutativePair": "9x2",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/2-dan"
    },
    {
      "table": 3,
      "name": "3단",
      "learnOrder": 3,
      "difficulty": "easy",
      "difficultyRank": 3,
      "summary": "3단은 2단에 한 번 더 더하는 단입니다. 3 × 7은 2 × 7(14)에 7을 더한 21입니다.",
      "whyMatters": "3단을 익히면 6단(3단의 두 배)과 9단(3단의 세 배)으로 곧장 확장됩니다.",
      "pattern": "답의 각 자리 숫자를 더하면 항상 3의 배수가 됩니다. 예: 24 → 2+4=6, 27 → 2+7=9",
      "strategies": [
        {
          "title": "2단 + 한 번 더",
          "detail": "3 × 8이 막히면 2 × 8 = 16에 8을 더해 24를 만듭니다. 이미 아는 2단을 발판으로 쓰는 방식입니다."
        },
        {
          "title": "3씩 뛰어 세기 리듬",
          "detail": "3, 6, 9, 12, 15, 18, 21, 24, 27을 박수와 함께 소리 내면 순서 기억이 강해집니다."
        },
        {
          "title": "자릿수 합 검산",
          "detail": "답이 3의 배수인지 자릿수 합으로 확인합니다. 3 × 9 = 27이면 2+7=9라 3의 배수가 맞습니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "3x7",
          "correct": 21,
          "confusedWith": [
            24,
            18
          ],
          "why": "3단 후반부는 답 간격이 좁아 3 × 8(24)과 섞입니다.",
          "fix": "3 × 7 = 21을 '스물하나'로 또렷하게 소리 내 3 × 8과 분리합니다."
        },
        {
          "fact": "3x6",
          "correct": 18,
          "confusedWith": [
            15,
            21
          ],
          "why": "5 × 3(15)과 위치가 가까워 앞뒤 답으로 밀립니다.",
          "fix": "3 × 6은 6 × 3과 같다는 점을 이용해 6단 쪽 기억으로도 확인합니다."
        }
      ],
      "realLife": [
        "삼각형의 변 개수",
        "삼세판 게임",
        "세 명이 나눠 먹는 간식"
      ],
      "relatedTables": [
        6,
        9
      ],
      "questions": [
        {
          "q": "3단이 헷갈릴 때 어떻게 확인하나요?",
          "a": "답의 각 자리 숫자를 더해 3의 배수인지 봅니다. 3 × 7 = 21이면 2+1=3이라 맞고, 22가 떠올랐다면 2+2=4라서 틀린 답임을 바로 알 수 있습니다."
        }
      ],
      "facts": [
        {
          "id": "3x1",
          "a": 3,
          "b": 1,
          "answer": 3,
          "expression": "3 × 1 = 3",
          "reading": "삼 일은 삼",
          "commutativePair": "1x3",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "3x2",
          "a": 3,
          "b": 2,
          "answer": 6,
          "expression": "3 × 2 = 6",
          "reading": "삼 이는 육",
          "commutativePair": "2x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "3x3",
          "a": 3,
          "b": 3,
          "answer": 9,
          "expression": "3 × 3 = 9",
          "reading": "삼 삼은 구",
          "commutativePair": "3x3",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "3x4",
          "a": 3,
          "b": 4,
          "answer": 12,
          "expression": "3 × 4 = 12",
          "reading": "삼 사 십이",
          "commutativePair": "4x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "3x5",
          "a": 3,
          "b": 5,
          "answer": 15,
          "expression": "3 × 5 = 15",
          "reading": "삼 오 십오",
          "commutativePair": "5x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "3x6",
          "a": 3,
          "b": 6,
          "answer": 18,
          "expression": "3 × 6 = 18",
          "reading": "삼 육 십팔",
          "commutativePair": "6x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "3x7",
          "a": 3,
          "b": 7,
          "answer": 21,
          "expression": "3 × 7 = 21",
          "reading": "삼 칠 이십일",
          "commutativePair": "7x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "3x8",
          "a": 3,
          "b": 8,
          "answer": 24,
          "expression": "3 × 8 = 24",
          "reading": "삼 팔 이십사",
          "commutativePair": "8x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "3x9",
          "a": 3,
          "b": 9,
          "answer": 27,
          "expression": "3 × 9 = 27",
          "reading": "삼 구 이십칠",
          "commutativePair": "9x3",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/3-dan"
    },
    {
      "table": 4,
      "name": "4단",
      "learnOrder": 4,
      "difficulty": "medium",
      "difficultyRank": 4,
      "summary": "4단은 2단을 두 번 적용하는 단입니다. 4 × 7은 7을 두 배(14) 한 뒤 다시 두 배(28) 하면 됩니다.",
      "whyMatters": "'두 배의 두 배' 전략을 몸에 익히면 8단(다시 두 배)까지 같은 방법으로 해결됩니다.",
      "pattern": "답이 모두 짝수이고 4씩 커집니다. 4 · 8 · 12 · 16 · 20 · 24 · 28 · 32 · 36",
      "strategies": [
        {
          "title": "두 배의 두 배",
          "detail": "4 × 6 = (6의 두 배 12)의 두 배 = 24. 4단을 통째로 외우지 않아도 2단만으로 만들어 낼 수 있습니다."
        },
        {
          "title": "5단에서 한 묶음 빼기",
          "detail": "4 × 8이 막히면 5 × 8 = 40에서 8을 빼 32를 얻습니다. 5단이 5·0으로 끝나 계산이 쉬운 점을 활용합니다."
        },
        {
          "title": "20을 기준점으로",
          "detail": "4 × 5 = 20을 중간 말뚝으로 삼아 앞뒤로 4씩 오르내리면 후반부가 안정됩니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "4x7",
          "correct": 28,
          "confusedWith": [
            24,
            32
          ],
          "why": "4 × 6(24), 4 × 8(32)과 4 간격으로 붙어 있어 한 칸씩 밀립니다.",
          "fix": "7의 두 배는 14, 14의 두 배는 28이라고 두 단계로 되짚습니다."
        },
        {
          "fact": "4x8",
          "correct": 32,
          "confusedWith": [
            28,
            36
          ],
          "why": "30을 넘어가는 지점이라 자릿수가 흔들립니다.",
          "fix": "4 × 8 = 32와 8 × 4 = 32를 같이 외워 두 방향에서 확인합니다."
        }
      ],
      "realLife": [
        "자동차 바퀴 수",
        "사각형의 변 개수",
        "네 명이 한 조인 모둠 인원"
      ],
      "relatedTables": [
        2,
        8
      ],
      "questions": [
        {
          "q": "4단을 못 외우는 아이는 어떻게 도와야 하나요?",
          "a": "4단을 통째로 외우게 하기보다 '두 배를 두 번' 하는 방법을 먼저 익히게 하세요. 2단만 알면 4단 전체를 스스로 만들어 낼 수 있어 부담이 크게 줄어듭니다."
        }
      ],
      "facts": [
        {
          "id": "4x1",
          "a": 4,
          "b": 1,
          "answer": 4,
          "expression": "4 × 1 = 4",
          "reading": "사 일은 사",
          "commutativePair": "1x4",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "4x2",
          "a": 4,
          "b": 2,
          "answer": 8,
          "expression": "4 × 2 = 8",
          "reading": "사 이는 팔",
          "commutativePair": "2x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "4x3",
          "a": 4,
          "b": 3,
          "answer": 12,
          "expression": "4 × 3 = 12",
          "reading": "사 삼 십이",
          "commutativePair": "3x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "4x4",
          "a": 4,
          "b": 4,
          "answer": 16,
          "expression": "4 × 4 = 16",
          "reading": "사 사 십육",
          "commutativePair": "4x4",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "4x5",
          "a": 4,
          "b": 5,
          "answer": 20,
          "expression": "4 × 5 = 20",
          "reading": "사 오 이십",
          "commutativePair": "5x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "4x6",
          "a": 4,
          "b": 6,
          "answer": 24,
          "expression": "4 × 6 = 24",
          "reading": "사 육 이십사",
          "commutativePair": "6x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "4x7",
          "a": 4,
          "b": 7,
          "answer": 28,
          "expression": "4 × 7 = 28",
          "reading": "사 칠 이십팔",
          "commutativePair": "7x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "4x8",
          "a": 4,
          "b": 8,
          "answer": 32,
          "expression": "4 × 8 = 32",
          "reading": "사 팔 삼십이",
          "commutativePair": "8x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "4x9",
          "a": 4,
          "b": 9,
          "answer": 36,
          "expression": "4 × 9 = 36",
          "reading": "사 구 삼십육",
          "commutativePair": "9x4",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/4-dan"
    },
    {
      "table": 5,
      "name": "5단",
      "learnOrder": 2,
      "difficulty": "easy",
      "difficultyRank": 2,
      "summary": "5단은 답이 5 아니면 0으로 끝나는 단입니다. 규칙이 눈에 보여서 2단 다음으로 쉽습니다.",
      "whyMatters": "5단은 다른 단을 계산할 때의 기준점(앵커) 역할을 합니다. 6·7·8·9단이 막힐 때 5단에서 더하거나 빼는 방식으로 답을 만들 수 있습니다.",
      "pattern": "곱하는 수가 홀수면 답이 5로, 짝수면 0으로 끝납니다. 5 · 10 · 15 · 20 · 25 · 30 · 35 · 40 · 45",
      "strategies": [
        {
          "title": "시계 읽기와 연결",
          "detail": "시계의 눈금 한 칸이 5분입니다. 5 × 7 = 35는 시계에서 7번째 숫자가 35분이라는 뜻이라, 이미 아는 감각으로 확인됩니다."
        },
        {
          "title": "10단의 절반",
          "detail": "5 × 8은 10 × 8 = 80의 절반인 40입니다. 큰 수에서 반으로 줄이는 방식이 더 빠른 아이도 많습니다."
        },
        {
          "title": "다른 단의 기준점으로 쓰기",
          "detail": "6 × 7이 막히면 5 × 7 = 35에 7을 더해 42를 만듭니다. 5단은 계산의 출발점입니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "5x7",
          "correct": 35,
          "confusedWith": [
            30,
            40
          ],
          "why": "5단은 규칙이 쉬운 대신 몇 번째인지 세다가 한 칸씩 밀립니다.",
          "fix": "홀수 × 5는 반드시 5로 끝난다는 규칙으로 30·40을 먼저 걸러냅니다."
        }
      ],
      "realLife": [
        "시계의 5분 눈금",
        "한 손의 손가락 개수",
        "5개들이 묶음 과자"
      ],
      "relatedTables": [
        10,
        4,
        6
      ],
      "questions": [
        {
          "q": "5단은 왜 쉽게 느껴지나요?",
          "a": "답이 항상 5 또는 0으로 끝나는 규칙이 눈에 바로 보이기 때문입니다. 게다가 시계 눈금, 손가락처럼 일상에서 5씩 세는 경험이 이미 쌓여 있습니다."
        },
        {
          "q": "구구단은 어떤 순서로 가르치는 게 좋나요?",
          "a": "2단 → 5단 → 3단 → 4단 → 6단 → 9단 → 7단 → 8단 순서를 권합니다. 규칙이 뚜렷해 성공 경험을 주는 단을 먼저 배치하고, 암기 부담이 큰 7·8단을 마지막에 둡니다."
        }
      ],
      "facts": [
        {
          "id": "5x1",
          "a": 5,
          "b": 1,
          "answer": 5,
          "expression": "5 × 1 = 5",
          "reading": "오 일은 오",
          "commutativePair": "1x5",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "5x2",
          "a": 5,
          "b": 2,
          "answer": 10,
          "expression": "5 × 2 = 10",
          "reading": "오 이 십",
          "commutativePair": "2x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x3",
          "a": 5,
          "b": 3,
          "answer": 15,
          "expression": "5 × 3 = 15",
          "reading": "오 삼 십오",
          "commutativePair": "3x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x4",
          "a": 5,
          "b": 4,
          "answer": 20,
          "expression": "5 × 4 = 20",
          "reading": "오 사 이십",
          "commutativePair": "4x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x5",
          "a": 5,
          "b": 5,
          "answer": 25,
          "expression": "5 × 5 = 25",
          "reading": "오 오 이십오",
          "commutativePair": "5x5",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x6",
          "a": 5,
          "b": 6,
          "answer": 30,
          "expression": "5 × 6 = 30",
          "reading": "오 육 삼십",
          "commutativePair": "6x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x7",
          "a": 5,
          "b": 7,
          "answer": 35,
          "expression": "5 × 7 = 35",
          "reading": "오 칠 삼십오",
          "commutativePair": "7x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x8",
          "a": 5,
          "b": 8,
          "answer": 40,
          "expression": "5 × 8 = 40",
          "reading": "오 팔 사십",
          "commutativePair": "8x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "5x9",
          "a": 5,
          "b": 9,
          "answer": 45,
          "expression": "5 × 9 = 45",
          "reading": "오 구 사십오",
          "commutativePair": "9x5",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/5-dan"
    },
    {
      "table": 6,
      "name": "6단",
      "learnOrder": 5,
      "difficulty": "medium",
      "difficultyRank": 5,
      "summary": "6단은 3단의 두 배입니다. 6 × 7은 3 × 7 = 21의 두 배인 42입니다.",
      "whyMatters": "6단부터는 답이 두 자리로 커지고 간격도 넓어져 통암기가 흔들리기 시작합니다. 여기서부터 '만들어 내는 방법'이 필요합니다.",
      "pattern": "짝수 × 6은 답의 일의 자리가 곱한 수와 같아집니다. 6 × 2 = 12, 6 × 4 = 24, 6 × 6 = 36, 6 × 8 = 48",
      "strategies": [
        {
          "title": "3단의 두 배",
          "detail": "6 × 8이 막히면 3 × 8 = 24를 두 배 해 48을 만듭니다."
        },
        {
          "title": "짝수 곱셈의 일의 자리 규칙",
          "detail": "6 × 4는 답의 일의 자리가 4(24), 6 × 6은 6(36), 6 × 8은 8(48)입니다. 짝수를 곱할 때만 통하는 규칙이라 검산용으로 좋습니다."
        },
        {
          "title": "5 × □ + □",
          "detail": "6 × 7 = 5 × 7(35) + 7 = 42. 5단을 발판으로 한 칸 더 가는 방식입니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "6x7",
          "correct": 42,
          "confusedWith": [
            48,
            36
          ],
          "why": "6단에서 가장 많이 틀리는 식입니다. 6 × 8(48)과 소리가 비슷하고 답의 규칙성도 없습니다.",
          "fix": "6 × 7 = 42는 3 × 7 = 21의 두 배로 매번 되짚어 확인하게 합니다."
        },
        {
          "fact": "6x8",
          "correct": 48,
          "confusedWith": [
            42,
            54
          ],
          "why": "6 × 7(42), 6 × 9(54) 사이에 끼어 앞뒤로 밀립니다.",
          "fix": "'짝수 × 6은 일의 자리가 같다'는 규칙으로 48을 고정합니다."
        },
        {
          "fact": "6x9",
          "correct": 54,
          "confusedWith": [
            56,
            48
          ],
          "why": "7 × 8 = 56과 자주 뒤바뀝니다.",
          "fix": "9단 규칙(자릿수 합이 9)으로 확인합니다. 5+4=9이므로 54가 맞고, 56은 5+6=11이라 9단 답이 아닙니다."
        }
      ],
      "realLife": [
        "주사위 면의 개수",
        "벌집의 육각형 변",
        "한 상자에 6개씩 든 음료"
      ],
      "relatedTables": [
        3,
        12
      ],
      "questions": [
        {
          "q": "6 × 7이 자꾸 헷갈리는데 어떻게 하나요?",
          "a": "3 × 7 = 21의 두 배가 42라는 경로를 만들어 두세요. 6단에서 가장 많이 틀리는 식이라 통암기보다 만들어 내는 방법이 훨씬 안정적입니다."
        }
      ],
      "facts": [
        {
          "id": "6x1",
          "a": 6,
          "b": 1,
          "answer": 6,
          "expression": "6 × 1 = 6",
          "reading": "육 일은 육",
          "commutativePair": "1x6",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "6x2",
          "a": 6,
          "b": 2,
          "answer": 12,
          "expression": "6 × 2 = 12",
          "reading": "육 이 십이",
          "commutativePair": "2x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "6x3",
          "a": 6,
          "b": 3,
          "answer": 18,
          "expression": "6 × 3 = 18",
          "reading": "육 삼 십팔",
          "commutativePair": "3x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "6x4",
          "a": 6,
          "b": 4,
          "answer": 24,
          "expression": "6 × 4 = 24",
          "reading": "육 사 이십사",
          "commutativePair": "4x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "6x5",
          "a": 6,
          "b": 5,
          "answer": 30,
          "expression": "6 × 5 = 30",
          "reading": "육 오 삼십",
          "commutativePair": "5x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "6x6",
          "a": 6,
          "b": 6,
          "answer": 36,
          "expression": "6 × 6 = 36",
          "reading": "육 육 삼십육",
          "commutativePair": "6x6",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "6x7",
          "a": 6,
          "b": 7,
          "answer": 42,
          "expression": "6 × 7 = 42",
          "reading": "육 칠 사십이",
          "commutativePair": "7x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "6x8",
          "a": 6,
          "b": 8,
          "answer": 48,
          "expression": "6 × 8 = 48",
          "reading": "육 팔 사십팔",
          "commutativePair": "8x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "6x9",
          "a": 6,
          "b": 9,
          "answer": 54,
          "expression": "6 × 9 = 54",
          "reading": "육 구 오십사",
          "commutativePair": "9x6",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/6-dan"
    },
    {
      "table": 7,
      "name": "7단",
      "learnOrder": 7,
      "difficulty": "hard",
      "difficultyRank": 8,
      "summary": "7단은 구구단에서 가장 어려운 단으로 꼽힙니다. 답에 눈에 띄는 규칙이 없어 다른 단을 발판으로 삼아야 합니다.",
      "whyMatters": "7단은 규칙이 없는 만큼 반복 노출과 오답 집중 학습의 효과가 가장 크게 나타나는 구간입니다.",
      "pattern": "답에 단순한 규칙이 없습니다. 7 · 14 · 21 · 28 · 35 · 42 · 49 · 56 · 63",
      "strategies": [
        {
          "title": "5 × □ + 2 × □로 쪼개기",
          "detail": "7 × 8 = 5 × 8(40) + 2 × 8(16) = 56. 7을 5와 2로 나눠 이미 쉬운 두 단으로 처리합니다."
        },
        {
          "title": "5·6·7·8 이어 붙이기",
          "detail": "7 × 8 = 56은 숫자 5, 6, 7, 8을 순서대로 늘어놓은 모양입니다. 56 = 7 × 8로 기억하면 7단·8단에서 동시에 쓸 수 있습니다."
        },
        {
          "title": "요일과 연결",
          "detail": "일주일이 7일입니다. 3주는 21일, 4주는 28일처럼 달력을 짚으면 7단 중반부가 몸에 익습니다."
        },
        {
          "title": "교환법칙으로 절반만 외우기",
          "detail": "7 × 3은 3 × 7과 같습니다. 앞 단에서 이미 외운 식은 다시 외울 필요가 없어, 새로 외울 식은 7 × 7, 7 × 8, 7 × 9 세 개뿐입니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "7x8",
          "correct": 56,
          "confusedWith": [
            54,
            63,
            48
          ],
          "why": "구구단 전체에서 오답률이 가장 높은 식입니다. 6 × 9(54), 7 × 9(63)와 답의 크기가 비슷합니다.",
          "fix": "5-6-7-8 순서 규칙(56 = 7 × 8)을 문장처럼 외웁니다."
        },
        {
          "fact": "7x6",
          "correct": 42,
          "confusedWith": [
            49,
            48
          ],
          "why": "7 × 7(49)이 바로 옆에 있어 한 칸 밀립니다.",
          "fix": "6 × 7 = 42를 6단 쪽에서도 익혀 양방향으로 굳힙니다."
        },
        {
          "fact": "7x9",
          "correct": 63,
          "confusedWith": [
            56,
            72
          ],
          "why": "8 × 9(72)와 7 × 8(56) 사이에 끼어 있습니다.",
          "fix": "9단 규칙으로 확인합니다. 6+3=9이므로 63이 맞습니다."
        }
      ],
      "realLife": [
        "일주일의 날짜 수",
        "무지개 색깔 수",
        "7개씩 든 묶음"
      ],
      "relatedTables": [
        5,
        2,
        8
      ],
      "questions": [
        {
          "q": "구구단에서 가장 어려운 단은 무엇인가요?",
          "a": "7단입니다. 답에 자릿수 규칙이나 반복 패턴이 없어 다른 단처럼 '규칙으로 확인'하는 방법을 쓸 수 없기 때문입니다. 특히 7 × 8 = 56이 가장 많이 틀리는 식으로 꼽힙니다."
        },
        {
          "q": "7단을 쉽게 외우는 방법이 있나요?",
          "a": "7을 5와 2로 쪼개는 방법이 가장 실용적입니다. 7 × 6이면 5 × 6(30)과 2 × 6(12)을 더해 42를 얻습니다. 또 교환법칙을 쓰면 실제로 새로 외울 식은 7 × 7, 7 × 8, 7 × 9 세 개뿐입니다."
        }
      ],
      "facts": [
        {
          "id": "7x1",
          "a": 7,
          "b": 1,
          "answer": 7,
          "expression": "7 × 1 = 7",
          "reading": "칠 일은 칠",
          "commutativePair": "1x7",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "7x2",
          "a": 7,
          "b": 2,
          "answer": 14,
          "expression": "7 × 2 = 14",
          "reading": "칠 이 십사",
          "commutativePair": "2x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "7x3",
          "a": 7,
          "b": 3,
          "answer": 21,
          "expression": "7 × 3 = 21",
          "reading": "칠 삼 이십일",
          "commutativePair": "3x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "7x4",
          "a": 7,
          "b": 4,
          "answer": 28,
          "expression": "7 × 4 = 28",
          "reading": "칠 사 이십팔",
          "commutativePair": "4x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "7x5",
          "a": 7,
          "b": 5,
          "answer": 35,
          "expression": "7 × 5 = 35",
          "reading": "칠 오 삼십오",
          "commutativePair": "5x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "7x6",
          "a": 7,
          "b": 6,
          "answer": 42,
          "expression": "7 × 6 = 42",
          "reading": "칠 육 사십이",
          "commutativePair": "6x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "7x7",
          "a": 7,
          "b": 7,
          "answer": 49,
          "expression": "7 × 7 = 49",
          "reading": "칠 칠 사십구",
          "commutativePair": "7x7",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "7x8",
          "a": 7,
          "b": 8,
          "answer": 56,
          "expression": "7 × 8 = 56",
          "reading": "칠 팔 오십육",
          "commutativePair": "8x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hardest",
          "difficultyScore": 5
        },
        {
          "id": "7x9",
          "a": 7,
          "b": 9,
          "answer": 63,
          "expression": "7 × 9 = 63",
          "reading": "칠 구 육십삼",
          "commutativePair": "9x7",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/7-dan"
    },
    {
      "table": 8,
      "name": "8단",
      "learnOrder": 8,
      "difficulty": "hard",
      "difficultyRank": 7,
      "summary": "8단은 4단의 두 배, 즉 2단을 세 번 적용한 단입니다. 8 × 7은 7 → 14 → 28 → 56으로 세 번 두 배 하면 나옵니다.",
      "whyMatters": "8단은 답이 커서 부담스러워 보이지만, 두 배를 반복하는 경로가 명확해 7단보다 되찾기 쉽습니다.",
      "pattern": "답이 모두 짝수이고 일의 자리가 8 · 6 · 4 · 2 · 0 순서로 반복됩니다. 8 · 16 · 24 · 32 · 40 · 48 · 56 · 64 · 72",
      "strategies": [
        {
          "title": "두 배를 세 번",
          "detail": "8 × 6 = 6 → 12 → 24 → 48. 2단만 알면 8단 전체를 만들어 낼 수 있습니다."
        },
        {
          "title": "10배에서 2배 빼기",
          "detail": "8 × 7 = 10 × 7(70) − 2 × 7(14) = 56. 큰 수에서 빼는 방식이 편한 아이도 있습니다."
        },
        {
          "title": "일의 자리 내림 규칙",
          "detail": "8단 답의 일의 자리는 8, 6, 4, 2, 0, 8, 6, 4, 2로 2씩 줄어듭니다. 답이 맞는지 빠르게 걸러낼 수 있습니다."
        }
      ],
      "commonMistakes": [
        {
          "fact": "8x7",
          "correct": 56,
          "confusedWith": [
            54,
            63,
            48
          ],
          "why": "7 × 8과 같은 식이며 구구단 최고 난도 구간입니다.",
          "fix": "5-6-7-8 규칙(56 = 7 × 8)과 '두 배 세 번' 경로를 함께 씁니다."
        },
        {
          "fact": "8x6",
          "correct": 48,
          "confusedWith": [
            42,
            54
          ],
          "why": "6 × 7(42), 6 × 9(54)와 크기가 비슷해 섞입니다.",
          "fix": "8단 일의 자리 규칙으로 확인합니다. 8 × 6의 일의 자리는 8이어야 하므로 42·54는 후보에서 빠집니다."
        },
        {
          "fact": "8x9",
          "correct": 72,
          "confusedWith": [
            63,
            81
          ],
          "why": "7 × 9(63), 9 × 9(81) 사이에 있습니다.",
          "fix": "9단 규칙으로 확인합니다. 7+2=9이므로 72가 맞습니다."
        }
      ],
      "realLife": [
        "문어의 다리 개수",
        "거미의 다리 개수",
        "8조각으로 자른 피자"
      ],
      "relatedTables": [
        2,
        4
      ],
      "questions": [
        {
          "q": "8단을 외우기 어려운 이유는 뭔가요?",
          "a": "답이 두 자리로 커지고 7단·9단과 값이 서로 가까워 혼동되기 때문입니다. 다만 '두 배를 세 번' 하는 경로가 분명해서, 통암기 대신 이 방법을 쓰면 7단보다 안정적으로 되찾을 수 있습니다."
        }
      ],
      "facts": [
        {
          "id": "8x1",
          "a": 8,
          "b": 1,
          "answer": 8,
          "expression": "8 × 1 = 8",
          "reading": "팔 일은 팔",
          "commutativePair": "1x8",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "8x2",
          "a": 8,
          "b": 2,
          "answer": 16,
          "expression": "8 × 2 = 16",
          "reading": "팔 이 십육",
          "commutativePair": "2x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "8x3",
          "a": 8,
          "b": 3,
          "answer": 24,
          "expression": "8 × 3 = 24",
          "reading": "팔 삼 이십사",
          "commutativePair": "3x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "8x4",
          "a": 8,
          "b": 4,
          "answer": 32,
          "expression": "8 × 4 = 32",
          "reading": "팔 사 삼십이",
          "commutativePair": "4x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "8x5",
          "a": 8,
          "b": 5,
          "answer": 40,
          "expression": "8 × 5 = 40",
          "reading": "팔 오 사십",
          "commutativePair": "5x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "8x6",
          "a": 8,
          "b": 6,
          "answer": 48,
          "expression": "8 × 6 = 48",
          "reading": "팔 육 사십팔",
          "commutativePair": "6x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "8x7",
          "a": 8,
          "b": 7,
          "answer": 56,
          "expression": "8 × 7 = 56",
          "reading": "팔 칠 오십육",
          "commutativePair": "7x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hardest",
          "difficultyScore": 5
        },
        {
          "id": "8x8",
          "a": 8,
          "b": 8,
          "answer": 64,
          "expression": "8 × 8 = 64",
          "reading": "팔 팔 육십사",
          "commutativePair": "8x8",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "8x9",
          "a": 8,
          "b": 9,
          "answer": 72,
          "expression": "8 × 9 = 72",
          "reading": "팔 구 칠십이",
          "commutativePair": "9x8",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/8-dan"
    },
    {
      "table": 9,
      "name": "9단",
      "learnOrder": 6,
      "difficulty": "medium",
      "difficultyRank": 6,
      "summary": "9단은 규칙이 가장 아름다운 단입니다. 답의 두 자리 숫자를 더하면 언제나 9가 됩니다.",
      "whyMatters": "9단 규칙을 알면 9단 아홉 개를 외우지 않고도 전부 만들어 낼 수 있고, 다른 단의 답을 검산하는 도구로도 쓸 수 있습니다.",
      "pattern": "십의 자리는 곱하는 수보다 1 작고, 일의 자리는 그 십의 자리를 9에서 뺀 값입니다. 자릿수를 더하면 항상 9. 9 · 18 · 27 · 36 · 45 · 54 · 63 · 72 · 81",
      "strategies": [
        {
          "title": "자릿수 합이 9",
          "detail": "9 × 6 = 54에서 5 + 4 = 9입니다. 답이 맞는지 1초 만에 검산할 수 있습니다."
        },
        {
          "title": "10배에서 한 번 빼기",
          "detail": "9 × 7 = 10 × 7(70) − 7 = 63. 9단 전체를 이 방법 하나로 만들 수 있습니다."
        },
        {
          "title": "손가락 셈",
          "detail": "양손 열 손가락을 펴고 곱하는 수 번째 손가락을 접습니다. 접은 손가락 왼쪽 개수가 십의 자리, 오른쪽 개수가 일의 자리입니다. 9 × 4면 넷째 손가락을 접어 왼쪽 3개, 오른쪽 6개 → 36."
        }
      ],
      "commonMistakes": [
        {
          "fact": "9x6",
          "correct": 54,
          "confusedWith": [
            56,
            45
          ],
          "why": "7 × 8(56)과 값이 가깝고, 45와는 자릿수 순서가 뒤집혀 헷갈립니다.",
          "fix": "십의 자리는 곱하는 수보다 1 작다는 규칙으로 확인합니다. 9 × 6이면 십의 자리가 5여야 합니다."
        },
        {
          "fact": "9x7",
          "correct": 63,
          "confusedWith": [
            56,
            72
          ],
          "why": "7 × 8(56), 8 × 9(72)와 인접합니다.",
          "fix": "70에서 7을 빼는 경로로 매번 되짚습니다."
        }
      ],
      "realLife": [
        "야구 한 팀의 선수 수",
        "9칸 스도쿠 한 줄",
        "구멍 9개짜리 골프 코스"
      ],
      "relatedTables": [
        3,
        10
      ],
      "questions": [
        {
          "q": "9단에 어떤 규칙이 있나요?",
          "a": "세 가지가 있습니다. ①답의 두 자리를 더하면 항상 9입니다(9 × 6 = 54 → 5+4=9). ②십의 자리는 곱하는 수보다 1 작습니다. ③10배 한 뒤 한 번 빼면 답이 됩니다(9 × 7 = 70 − 7 = 63)."
        },
        {
          "q": "9단 손가락 셈은 어떻게 하나요?",
          "a": "양손 열 손가락을 펴고 왼쪽부터 세어 곱하는 수 번째 손가락을 접습니다. 접힌 손가락 왼쪽에 남은 손가락 개수가 십의 자리, 오른쪽 개수가 일의 자리입니다. 9 × 4는 넷째를 접어 왼쪽 3개, 오른쪽 6개이므로 36입니다."
        }
      ],
      "facts": [
        {
          "id": "9x1",
          "a": 9,
          "b": 1,
          "answer": 9,
          "expression": "9 × 1 = 9",
          "reading": "구 일은 구",
          "commutativePair": "1x9",
          "commutativePairInScope": false,
          "isSquare": false,
          "difficulty": "trivial",
          "difficultyScore": 1
        },
        {
          "id": "9x2",
          "a": 9,
          "b": 2,
          "answer": 18,
          "expression": "9 × 2 = 18",
          "reading": "구 이 십팔",
          "commutativePair": "2x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "9x3",
          "a": 9,
          "b": 3,
          "answer": 27,
          "expression": "9 × 3 = 27",
          "reading": "구 삼 이십칠",
          "commutativePair": "3x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "9x4",
          "a": 9,
          "b": 4,
          "answer": 36,
          "expression": "9 × 4 = 36",
          "reading": "구 사 삼십육",
          "commutativePair": "4x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "medium",
          "difficultyScore": 3
        },
        {
          "id": "9x5",
          "a": 9,
          "b": 5,
          "answer": 45,
          "expression": "9 × 5 = 45",
          "reading": "구 오 사십오",
          "commutativePair": "5x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "easy",
          "difficultyScore": 2
        },
        {
          "id": "9x6",
          "a": 9,
          "b": 6,
          "answer": 54,
          "expression": "9 × 6 = 54",
          "reading": "구 육 오십사",
          "commutativePair": "6x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "9x7",
          "a": 9,
          "b": 7,
          "answer": 63,
          "expression": "9 × 7 = 63",
          "reading": "구 칠 육십삼",
          "commutativePair": "7x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "9x8",
          "a": 9,
          "b": 8,
          "answer": 72,
          "expression": "9 × 8 = 72",
          "reading": "구 팔 칠십이",
          "commutativePair": "8x9",
          "commutativePairInScope": true,
          "isSquare": false,
          "difficulty": "hard",
          "difficultyScore": 4
        },
        {
          "id": "9x9",
          "a": 9,
          "b": 9,
          "answer": 81,
          "expression": "9 × 9 = 81",
          "reading": "구 구 팔십일",
          "commutativePair": "9x9",
          "commutativePairInScope": true,
          "isSquare": true,
          "difficulty": "medium",
          "difficultyScore": 3
        }
      ],
      "url": "https://gugu.aiagnt.kr/guide/9-dan"
    }
  ],
  "facts": [
    {
      "id": "2x1",
      "a": 2,
      "b": 1,
      "answer": 2,
      "expression": "2 × 1 = 2",
      "reading": "이 일은 이",
      "commutativePair": "1x2",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "2x2",
      "a": 2,
      "b": 2,
      "answer": 4,
      "expression": "2 × 2 = 4",
      "reading": "이 이는 사",
      "commutativePair": "2x2",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "2x3",
      "a": 2,
      "b": 3,
      "answer": 6,
      "expression": "2 × 3 = 6",
      "reading": "이 삼은 육",
      "commutativePair": "3x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "2x4",
      "a": 2,
      "b": 4,
      "answer": 8,
      "expression": "2 × 4 = 8",
      "reading": "이 사는 팔",
      "commutativePair": "4x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "2x5",
      "a": 2,
      "b": 5,
      "answer": 10,
      "expression": "2 × 5 = 10",
      "reading": "이 오 십",
      "commutativePair": "5x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "2x6",
      "a": 2,
      "b": 6,
      "answer": 12,
      "expression": "2 × 6 = 12",
      "reading": "이 육 십이",
      "commutativePair": "6x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "2x7",
      "a": 2,
      "b": 7,
      "answer": 14,
      "expression": "2 × 7 = 14",
      "reading": "이 칠 십사",
      "commutativePair": "7x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "2x8",
      "a": 2,
      "b": 8,
      "answer": 16,
      "expression": "2 × 8 = 16",
      "reading": "이 팔 십육",
      "commutativePair": "8x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "2x9",
      "a": 2,
      "b": 9,
      "answer": 18,
      "expression": "2 × 9 = 18",
      "reading": "이 구 십팔",
      "commutativePair": "9x2",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "3x1",
      "a": 3,
      "b": 1,
      "answer": 3,
      "expression": "3 × 1 = 3",
      "reading": "삼 일은 삼",
      "commutativePair": "1x3",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "3x2",
      "a": 3,
      "b": 2,
      "answer": 6,
      "expression": "3 × 2 = 6",
      "reading": "삼 이는 육",
      "commutativePair": "2x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "3x3",
      "a": 3,
      "b": 3,
      "answer": 9,
      "expression": "3 × 3 = 9",
      "reading": "삼 삼은 구",
      "commutativePair": "3x3",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "3x4",
      "a": 3,
      "b": 4,
      "answer": 12,
      "expression": "3 × 4 = 12",
      "reading": "삼 사 십이",
      "commutativePair": "4x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "3x5",
      "a": 3,
      "b": 5,
      "answer": 15,
      "expression": "3 × 5 = 15",
      "reading": "삼 오 십오",
      "commutativePair": "5x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "3x6",
      "a": 3,
      "b": 6,
      "answer": 18,
      "expression": "3 × 6 = 18",
      "reading": "삼 육 십팔",
      "commutativePair": "6x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "3x7",
      "a": 3,
      "b": 7,
      "answer": 21,
      "expression": "3 × 7 = 21",
      "reading": "삼 칠 이십일",
      "commutativePair": "7x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "3x8",
      "a": 3,
      "b": 8,
      "answer": 24,
      "expression": "3 × 8 = 24",
      "reading": "삼 팔 이십사",
      "commutativePair": "8x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "3x9",
      "a": 3,
      "b": 9,
      "answer": 27,
      "expression": "3 × 9 = 27",
      "reading": "삼 구 이십칠",
      "commutativePair": "9x3",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "4x1",
      "a": 4,
      "b": 1,
      "answer": 4,
      "expression": "4 × 1 = 4",
      "reading": "사 일은 사",
      "commutativePair": "1x4",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "4x2",
      "a": 4,
      "b": 2,
      "answer": 8,
      "expression": "4 × 2 = 8",
      "reading": "사 이는 팔",
      "commutativePair": "2x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "4x3",
      "a": 4,
      "b": 3,
      "answer": 12,
      "expression": "4 × 3 = 12",
      "reading": "사 삼 십이",
      "commutativePair": "3x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "4x4",
      "a": 4,
      "b": 4,
      "answer": 16,
      "expression": "4 × 4 = 16",
      "reading": "사 사 십육",
      "commutativePair": "4x4",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "4x5",
      "a": 4,
      "b": 5,
      "answer": 20,
      "expression": "4 × 5 = 20",
      "reading": "사 오 이십",
      "commutativePair": "5x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "4x6",
      "a": 4,
      "b": 6,
      "answer": 24,
      "expression": "4 × 6 = 24",
      "reading": "사 육 이십사",
      "commutativePair": "6x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "4x7",
      "a": 4,
      "b": 7,
      "answer": 28,
      "expression": "4 × 7 = 28",
      "reading": "사 칠 이십팔",
      "commutativePair": "7x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "4x8",
      "a": 4,
      "b": 8,
      "answer": 32,
      "expression": "4 × 8 = 32",
      "reading": "사 팔 삼십이",
      "commutativePair": "8x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "4x9",
      "a": 4,
      "b": 9,
      "answer": 36,
      "expression": "4 × 9 = 36",
      "reading": "사 구 삼십육",
      "commutativePair": "9x4",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "5x1",
      "a": 5,
      "b": 1,
      "answer": 5,
      "expression": "5 × 1 = 5",
      "reading": "오 일은 오",
      "commutativePair": "1x5",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "5x2",
      "a": 5,
      "b": 2,
      "answer": 10,
      "expression": "5 × 2 = 10",
      "reading": "오 이 십",
      "commutativePair": "2x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x3",
      "a": 5,
      "b": 3,
      "answer": 15,
      "expression": "5 × 3 = 15",
      "reading": "오 삼 십오",
      "commutativePair": "3x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x4",
      "a": 5,
      "b": 4,
      "answer": 20,
      "expression": "5 × 4 = 20",
      "reading": "오 사 이십",
      "commutativePair": "4x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x5",
      "a": 5,
      "b": 5,
      "answer": 25,
      "expression": "5 × 5 = 25",
      "reading": "오 오 이십오",
      "commutativePair": "5x5",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x6",
      "a": 5,
      "b": 6,
      "answer": 30,
      "expression": "5 × 6 = 30",
      "reading": "오 육 삼십",
      "commutativePair": "6x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x7",
      "a": 5,
      "b": 7,
      "answer": 35,
      "expression": "5 × 7 = 35",
      "reading": "오 칠 삼십오",
      "commutativePair": "7x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x8",
      "a": 5,
      "b": 8,
      "answer": 40,
      "expression": "5 × 8 = 40",
      "reading": "오 팔 사십",
      "commutativePair": "8x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "5x9",
      "a": 5,
      "b": 9,
      "answer": 45,
      "expression": "5 × 9 = 45",
      "reading": "오 구 사십오",
      "commutativePair": "9x5",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "6x1",
      "a": 6,
      "b": 1,
      "answer": 6,
      "expression": "6 × 1 = 6",
      "reading": "육 일은 육",
      "commutativePair": "1x6",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "6x2",
      "a": 6,
      "b": 2,
      "answer": 12,
      "expression": "6 × 2 = 12",
      "reading": "육 이 십이",
      "commutativePair": "2x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "6x3",
      "a": 6,
      "b": 3,
      "answer": 18,
      "expression": "6 × 3 = 18",
      "reading": "육 삼 십팔",
      "commutativePair": "3x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "6x4",
      "a": 6,
      "b": 4,
      "answer": 24,
      "expression": "6 × 4 = 24",
      "reading": "육 사 이십사",
      "commutativePair": "4x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "6x5",
      "a": 6,
      "b": 5,
      "answer": 30,
      "expression": "6 × 5 = 30",
      "reading": "육 오 삼십",
      "commutativePair": "5x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "6x6",
      "a": 6,
      "b": 6,
      "answer": 36,
      "expression": "6 × 6 = 36",
      "reading": "육 육 삼십육",
      "commutativePair": "6x6",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "6x7",
      "a": 6,
      "b": 7,
      "answer": 42,
      "expression": "6 × 7 = 42",
      "reading": "육 칠 사십이",
      "commutativePair": "7x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "6x8",
      "a": 6,
      "b": 8,
      "answer": 48,
      "expression": "6 × 8 = 48",
      "reading": "육 팔 사십팔",
      "commutativePair": "8x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "6x9",
      "a": 6,
      "b": 9,
      "answer": 54,
      "expression": "6 × 9 = 54",
      "reading": "육 구 오십사",
      "commutativePair": "9x6",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "7x1",
      "a": 7,
      "b": 1,
      "answer": 7,
      "expression": "7 × 1 = 7",
      "reading": "칠 일은 칠",
      "commutativePair": "1x7",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "7x2",
      "a": 7,
      "b": 2,
      "answer": 14,
      "expression": "7 × 2 = 14",
      "reading": "칠 이 십사",
      "commutativePair": "2x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "7x3",
      "a": 7,
      "b": 3,
      "answer": 21,
      "expression": "7 × 3 = 21",
      "reading": "칠 삼 이십일",
      "commutativePair": "3x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "7x4",
      "a": 7,
      "b": 4,
      "answer": 28,
      "expression": "7 × 4 = 28",
      "reading": "칠 사 이십팔",
      "commutativePair": "4x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "7x5",
      "a": 7,
      "b": 5,
      "answer": 35,
      "expression": "7 × 5 = 35",
      "reading": "칠 오 삼십오",
      "commutativePair": "5x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "7x6",
      "a": 7,
      "b": 6,
      "answer": 42,
      "expression": "7 × 6 = 42",
      "reading": "칠 육 사십이",
      "commutativePair": "6x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "7x7",
      "a": 7,
      "b": 7,
      "answer": 49,
      "expression": "7 × 7 = 49",
      "reading": "칠 칠 사십구",
      "commutativePair": "7x7",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "7x8",
      "a": 7,
      "b": 8,
      "answer": 56,
      "expression": "7 × 8 = 56",
      "reading": "칠 팔 오십육",
      "commutativePair": "8x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hardest",
      "difficultyScore": 5
    },
    {
      "id": "7x9",
      "a": 7,
      "b": 9,
      "answer": 63,
      "expression": "7 × 9 = 63",
      "reading": "칠 구 육십삼",
      "commutativePair": "9x7",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "8x1",
      "a": 8,
      "b": 1,
      "answer": 8,
      "expression": "8 × 1 = 8",
      "reading": "팔 일은 팔",
      "commutativePair": "1x8",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "8x2",
      "a": 8,
      "b": 2,
      "answer": 16,
      "expression": "8 × 2 = 16",
      "reading": "팔 이 십육",
      "commutativePair": "2x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "8x3",
      "a": 8,
      "b": 3,
      "answer": 24,
      "expression": "8 × 3 = 24",
      "reading": "팔 삼 이십사",
      "commutativePair": "3x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "8x4",
      "a": 8,
      "b": 4,
      "answer": 32,
      "expression": "8 × 4 = 32",
      "reading": "팔 사 삼십이",
      "commutativePair": "4x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "8x5",
      "a": 8,
      "b": 5,
      "answer": 40,
      "expression": "8 × 5 = 40",
      "reading": "팔 오 사십",
      "commutativePair": "5x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "8x6",
      "a": 8,
      "b": 6,
      "answer": 48,
      "expression": "8 × 6 = 48",
      "reading": "팔 육 사십팔",
      "commutativePair": "6x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "8x7",
      "a": 8,
      "b": 7,
      "answer": 56,
      "expression": "8 × 7 = 56",
      "reading": "팔 칠 오십육",
      "commutativePair": "7x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hardest",
      "difficultyScore": 5
    },
    {
      "id": "8x8",
      "a": 8,
      "b": 8,
      "answer": 64,
      "expression": "8 × 8 = 64",
      "reading": "팔 팔 육십사",
      "commutativePair": "8x8",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "8x9",
      "a": 8,
      "b": 9,
      "answer": 72,
      "expression": "8 × 9 = 72",
      "reading": "팔 구 칠십이",
      "commutativePair": "9x8",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "9x1",
      "a": 9,
      "b": 1,
      "answer": 9,
      "expression": "9 × 1 = 9",
      "reading": "구 일은 구",
      "commutativePair": "1x9",
      "commutativePairInScope": false,
      "isSquare": false,
      "difficulty": "trivial",
      "difficultyScore": 1
    },
    {
      "id": "9x2",
      "a": 9,
      "b": 2,
      "answer": 18,
      "expression": "9 × 2 = 18",
      "reading": "구 이 십팔",
      "commutativePair": "2x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "9x3",
      "a": 9,
      "b": 3,
      "answer": 27,
      "expression": "9 × 3 = 27",
      "reading": "구 삼 이십칠",
      "commutativePair": "3x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "9x4",
      "a": 9,
      "b": 4,
      "answer": 36,
      "expression": "9 × 4 = 36",
      "reading": "구 사 삼십육",
      "commutativePair": "4x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "medium",
      "difficultyScore": 3
    },
    {
      "id": "9x5",
      "a": 9,
      "b": 5,
      "answer": 45,
      "expression": "9 × 5 = 45",
      "reading": "구 오 사십오",
      "commutativePair": "5x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "easy",
      "difficultyScore": 2
    },
    {
      "id": "9x6",
      "a": 9,
      "b": 6,
      "answer": 54,
      "expression": "9 × 6 = 54",
      "reading": "구 육 오십사",
      "commutativePair": "6x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "9x7",
      "a": 9,
      "b": 7,
      "answer": 63,
      "expression": "9 × 7 = 63",
      "reading": "구 칠 육십삼",
      "commutativePair": "7x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "9x8",
      "a": 9,
      "b": 8,
      "answer": 72,
      "expression": "9 × 8 = 72",
      "reading": "구 팔 칠십이",
      "commutativePair": "8x9",
      "commutativePairInScope": true,
      "isSquare": false,
      "difficulty": "hard",
      "difficultyScore": 4
    },
    {
      "id": "9x9",
      "a": 9,
      "b": 9,
      "answer": 81,
      "expression": "9 × 9 = 81",
      "reading": "구 구 팔십일",
      "commutativePair": "9x9",
      "commutativePairInScope": true,
      "isSquare": true,
      "difficulty": "medium",
      "difficultyScore": 3
    }
  ],
  "modes": [
    {
      "id": "practice",
      "name": "학습",
      "tagline": "차근차근 기본기",
      "detail": "압박 없이 또박또박 — 틀린 문제는 다시 나와요.",
      "kind": "fixed",
      "rule": "한 세션에 10문제. 시간 제한도 목숨 제한도 없습니다.",
      "questionCount": 10,
      "timeLimitSeconds": null,
      "lives": null,
      "tableSelectable": true,
      "recordsBestScore": false,
      "xpBonusPerCorrect": 0,
      "bestFor": "처음 배우는 단, 또는 오답이 많이 쌓인 단을 차분히 정리할 때",
      "aiSummary": "시간 압박 없이 정확도에 집중하는 기본 모드. 단을 지정해 약한 구구단만 골라 반복할 수 있습니다."
    },
    {
      "id": "timeAttack",
      "name": "스피드런",
      "tagline": "10문제 최고 속도",
      "detail": "속도가 곧 점수! 빠르게 풀수록 XP가 올라가요.",
      "kind": "fixed",
      "rule": "10문제를 얼마나 빨리 푸는지 겨룹니다. 정답당 XP 보너스 4.",
      "questionCount": 10,
      "timeLimitSeconds": null,
      "lives": null,
      "tableSelectable": true,
      "recordsBestScore": false,
      "xpBonusPerCorrect": 4,
      "bestFor": "이미 아는 단을 자동화(생각하지 않고 바로 답 나오는 수준)할 때",
      "aiSummary": "정확도가 아니라 반응 속도를 끌어올리는 모드. 암기가 끝난 단을 빠르게 굳히는 데 씁니다."
    },
    {
      "id": "challenge",
      "name": "60초 챌린지",
      "tagline": "제한 시간 최대 점수",
      "detail": "60초 동안 몇 문제나 풀 수 있을까요? 최고 기록에 도전!",
      "kind": "timed",
      "rule": "60초 안에 맞힌 문제 수가 점수. 최고 기록이 저장됩니다. 단 선택 없이 2~9단 전체에서 무작위 출제.",
      "questionCount": null,
      "timeLimitSeconds": 60,
      "lives": null,
      "tableSelectable": false,
      "recordsBestScore": true,
      "xpBonusPerCorrect": 4,
      "bestFor": "전체 구구단 실력을 한 번에 점검하고 기록으로 남길 때",
      "aiSummary": "2~9단 전 범위 60초 기록 경쟁 모드. 최고 점수가 저장되어 실력 변화를 추적할 수 있습니다."
    },
    {
      "id": "survival",
      "name": "서바이벌",
      "tagline": "기회는 단 3번",
      "detail": "목숨 3개로 버티기! 틀릴 때마다 하트가 하나씩 사라져요.",
      "kind": "lives",
      "rule": "목숨 3개로 시작해 틀릴 때마다 하나씩 잃습니다. 모두 잃으면 종료. 2~9단 전체에서 무작위 출제.",
      "questionCount": null,
      "timeLimitSeconds": null,
      "lives": 3,
      "tableSelectable": false,
      "recordsBestScore": true,
      "xpBonusPerCorrect": 3,
      "bestFor": "속도보다 정확도를 끝까지 유지하는 훈련",
      "aiSummary": "오답 3회로 종료되는 지구력 모드. 실수 없이 몇 문제까지 가는지가 기록으로 남습니다."
    },
    {
      "id": "missing",
      "name": "빈칸 추리",
      "tagline": "? 에 들어갈 수는",
      "detail": "곱셈을 거꾸로! 빈칸의 수를 찾으면 XP 보너스가 커요.",
      "kind": "fixed",
      "rule": "곱셈식의 한 자리가 빈칸으로 나오고 그 수를 찾습니다. 10문제, 정답당 XP 보너스 6으로 가장 높습니다.",
      "questionCount": 10,
      "timeLimitSeconds": null,
      "lives": null,
      "tableSelectable": true,
      "recordsBestScore": false,
      "xpBonusPerCorrect": 6,
      "bestFor": "나눗셈으로 넘어가기 전 곱셈을 역방향으로 다룰 때",
      "aiSummary": "□ × 7 = 42처럼 빈칸을 채우는 역방향 모드. 나눗셈의 기초 감각을 미리 길러 줍니다."
    },
    {
      "id": "truefalse",
      "name": "OX 퀴즈",
      "tagline": "맞으면 O, 틀리면 X",
      "detail": "식이 맞는지 순간 판단! 헷갈리는 한 끗 차이를 가려내요.",
      "kind": "fixed",
      "rule": "제시된 곱셈식이 참인지 거짓인지 판단합니다. 10문제. 그럴듯한 오답이 섞여 나옵니다.",
      "questionCount": 10,
      "timeLimitSeconds": null,
      "lives": null,
      "tableSelectable": true,
      "recordsBestScore": false,
      "xpBonusPerCorrect": 0,
      "bestFor": "6 × 7 = 48처럼 아슬아슬하게 틀린 답을 걸러내는 판별력 훈련",
      "aiSummary": "참·거짓 판별 모드. 값이 가까운 오답(예: 42 vs 48)을 구분하는 능력을 집중적으로 훈련합니다."
    }
  ],
  "progression": {
    "xp": {
      "base": "정답 1개당 기본 XP를 얻고, 모드별 보너스가 더해집니다.",
      "levelFormula": "레벨 L에서 다음 레벨까지 필요한 XP = 60 + (L − 1) × 35",
      "note": "레벨이 오를수록 요구 XP가 선형으로 증가해 초반 성취감과 후반 목표를 함께 유지합니다."
    },
    "mastery": {
      "unit": "단(2~9단)",
      "maxStars": 3,
      "description": "단마다 최대 별 3개를 모읍니다. 8개 단 전부 별 3개를 모으면 24개로 '올스타' 업적을 얻습니다."
    },
    "streak": {
      "description": "하루라도 학습하면 스트릭이 1 늘어납니다. 3일·7일·30일 지점에 업적이 있습니다."
    },
    "adaptive": {
      "description": "틀린 곱셈식은 출제 가중치가 올라가고(오답 1회당 가중치 +2.2), 직전에 나온 문제는 가중치가 0.15배로 낮아집니다. 결과적으로 약한 식을 더 자주, 방금 본 식은 덜 만나게 됩니다."
    }
  },
  "learningPath": {
    "version": "1.0.0",
    "updated": "2026-08-07",
    "name": "구구단 학습 로드맵",
    "summary": "2~9단을 난이도와 상호 의존 관계에 따라 재배열한 8단계 학습 순서입니다. 단 번호 순서가 아니라, 앞 단계가 뒷 단계의 계산 발판이 되도록 짰습니다.",
    "principles": [
      {
        "title": "규칙이 보이는 단부터",
        "detail": "2단(짝수)·5단(5 또는 0으로 끝남)처럼 눈에 보이는 규칙이 있는 단을 먼저 배워 '나는 할 수 있다'는 경험을 만듭니다."
      },
      {
        "title": "이미 아는 단을 발판으로",
        "detail": "4단은 2단의 두 배, 6단은 3단의 두 배, 8단은 4단의 두 배입니다. 앞 단계를 발판 삼으면 새로 외울 양이 계속 줄어듭니다."
      },
      {
        "title": "교환법칙으로 절반 줄이기",
        "detail": "3 × 7과 7 × 3은 같은 식입니다. 앞 단에서 외운 식은 뒷 단에서 다시 외우지 않아, 뒤로 갈수록 새로 외울 식이 줄어듭니다."
      },
      {
        "title": "가장 어려운 단은 마지막에",
        "detail": "7단·8단은 규칙이 약하고 값이 서로 가까워 오답이 많습니다. 다른 단이 자동화된 뒤에 배치해야 발판이 충분해집니다."
      },
      {
        "title": "매일 짧게",
        "detail": "한 번에 오래 하는 것보다 하루 5~10분씩 매일 반복하는 편이 기억에 훨씬 잘 남습니다."
      }
    ],
    "steps": [
      {
        "step": 1,
        "table": 2,
        "difficulty": "easy",
        "estimatedDays": "2~3일",
        "goal": "2단 9개 식을 3초 안에 답하기",
        "buildsOn": [],
        "keyIdea": "두 배로 생각하기",
        "recommendedMode": "practice"
      },
      {
        "step": 2,
        "table": 5,
        "difficulty": "easy",
        "estimatedDays": "2~3일",
        "goal": "5단 9개 식을 3초 안에 답하기",
        "buildsOn": [],
        "keyIdea": "답이 5 또는 0으로 끝남 / 시계 눈금",
        "recommendedMode": "practice"
      },
      {
        "step": 3,
        "table": 3,
        "difficulty": "easy",
        "estimatedDays": "3~4일",
        "goal": "3단 자동화, 자릿수 합으로 검산하기",
        "buildsOn": [
          2
        ],
        "keyIdea": "2단에 한 번 더 더하기",
        "recommendedMode": "practice"
      },
      {
        "step": 4,
        "table": 4,
        "difficulty": "medium",
        "estimatedDays": "3~5일",
        "goal": "4단을 두 배의 두 배로 만들어 내기",
        "buildsOn": [
          2
        ],
        "keyIdea": "두 배를 두 번",
        "recommendedMode": "timeAttack"
      },
      {
        "step": 5,
        "table": 6,
        "difficulty": "medium",
        "estimatedDays": "5~7일",
        "goal": "6 × 7 = 42를 흔들림 없이 답하기",
        "buildsOn": [
          3,
          5
        ],
        "keyIdea": "3단의 두 배 / 5단에서 한 묶음 더",
        "recommendedMode": "missing"
      },
      {
        "step": 6,
        "table": 9,
        "difficulty": "medium",
        "estimatedDays": "3~5일",
        "goal": "9단 규칙(자릿수 합 9)으로 전부 만들어 내기",
        "buildsOn": [
          3
        ],
        "keyIdea": "10배에서 한 번 빼기 / 손가락 셈",
        "recommendedMode": "truefalse"
      },
      {
        "step": 7,
        "table": 7,
        "difficulty": "hard",
        "estimatedDays": "7~14일",
        "goal": "7 × 7, 7 × 8, 7 × 9 세 식을 자동화하기",
        "buildsOn": [
          2,
          5
        ],
        "keyIdea": "5단 + 2단으로 쪼개기 / 56 = 7 × 8",
        "recommendedMode": "survival"
      },
      {
        "step": 8,
        "table": 8,
        "difficulty": "hard",
        "estimatedDays": "5~10일",
        "goal": "8단을 두 배 세 번으로 되찾고 전체 혼합 문제 풀기",
        "buildsOn": [
          2,
          4
        ],
        "keyIdea": "두 배를 세 번 / 10배에서 2배 빼기",
        "recommendedMode": "challenge"
      }
    ],
    "afterAll": {
      "title": "8단계를 마친 뒤",
      "items": [
        "60초 챌린지로 2~9단 혼합 기록을 재 봅니다. 30점 이상이면 자동화가 충분히 된 상태입니다.",
        "서바이벌로 정확도를 점검합니다. 20문제 이상 생존하면 실수 없이 유지되는 수준입니다.",
        "빈칸 추리로 곱셈을 역방향으로 다뤄 나눗셈 학습을 준비합니다."
      ]
    },
    "parentTips": [
      "틀린 문제를 지적하기보다 '어떻게 그 답이 나왔는지' 물어보세요. 오답의 경로를 알면 고칠 지점이 정확해집니다.",
      "속도를 먼저 요구하지 마세요. 정확도가 안정된 뒤에 속도를 올리는 순서라야 잘못된 답이 굳지 않습니다.",
      "하루 분량은 한 단으로 제한하는 편이 좋습니다. 여러 단을 한꺼번에 하면 값이 비슷한 식끼리 서로 간섭합니다.",
      "잠들기 전 5분 복습은 기억 정착에 특히 효과가 좋습니다."
    ]
  },
  "faq": [
    {
      "id": "what-is-gugudan",
      "category": "learning",
      "q": "구구단이 정확히 무엇인가요?",
      "a": "구구단은 1부터 9까지의 수를 서로 곱한 결과를 정리한 곱셈표입니다. 한국 초등학교 2학년 수학에서 '곱셈구구'라는 이름으로 배웁니다. 구구 어드벤처는 이 중 실제 암기 부담이 있는 2단~9단, 곱하는 수 1~9까지 총 72개 곱셈식을 학습 범위로 다룹니다.",
      "sources": [
        "/guide"
      ]
    },
    {
      "id": "learning-order",
      "category": "order",
      "q": "구구단은 어떤 순서로 외우는 게 좋나요?",
      "a": "2단 → 5단 → 3단 → 4단 → 6단 → 9단 → 7단 → 8단 순서를 권합니다. 규칙이 눈에 보여 성공 경험을 주는 2단·5단을 먼저 하고, 그 위에 3단·4단을 쌓은 뒤, 규칙이 뚜렷한 9단으로 자신감을 유지한 채 가장 어려운 7단·8단을 마지막에 배치하는 방식입니다. 단 번호 순서(2·3·4·5…)대로 가면 4단에서 한 번, 7단에서 다시 막히기 쉽습니다.",
      "sources": [
        "/guide",
        "/guide/faq"
      ]
    },
    {
      "id": "how-long",
      "category": "order",
      "q": "구구단을 다 외우는 데 얼마나 걸리나요?",
      "a": "하루 10분씩 꾸준히 한다면 보통 4~8주입니다. 2단·5단은 2~3일이면 자동화되지만, 7단·8단은 각각 1~2주가 필요할 수 있습니다. 중요한 것은 하루에 오래 하는 것보다 매일 짧게 반복하는 것입니다. 기억은 노출 횟수와 간격에 비례해 굳어집니다.",
      "sources": [
        "/guide/faq"
      ]
    },
    {
      "id": "hardest-table",
      "category": "trouble",
      "q": "구구단에서 가장 어려운 단은 무엇인가요?",
      "a": "7단입니다. 답에 자릿수 규칙이나 반복 패턴이 없어 다른 단처럼 규칙으로 검산할 수 없기 때문입니다. 개별 곱셈식 중에서는 7 × 8 = 56이 가장 많이 틀리는 식으로 꼽히며, 6 × 9 = 54, 7 × 9 = 63과 값이 비슷해 서로 섞입니다.",
      "sources": [
        "/guide/7-dan",
        "/guide/8-dan"
      ]
    },
    {
      "id": "seven-times-eight",
      "category": "trouble",
      "q": "7 × 8이 자꾸 헷갈립니다. 어떻게 외우나요?",
      "a": "숫자를 순서대로 늘어놓는 방법이 가장 잘 통합니다. 5, 6, 7, 8을 이어 쓰면 '56 = 7 × 8'이 됩니다. 계산으로 되찾고 싶다면 7을 5와 2로 쪼개 5 × 8(40) + 2 × 8(16) = 56으로 확인합니다.",
      "sources": [
        "/guide/7-dan"
      ]
    },
    {
      "id": "cant-memorize",
      "category": "trouble",
      "q": "아이가 구구단을 아무리 해도 못 외웁니다. 어떻게 하나요?",
      "a": "통암기 대신 '만들어 내는 방법'을 먼저 가르치세요. 4단은 두 배를 두 번, 8단은 두 배를 세 번, 9단은 10배에서 한 번 빼기, 7단은 5단과 2단으로 쪼개기입니다. 답을 잊어도 스스로 되찾을 경로가 생기면 실패 경험이 줄고, 반복 과정에서 자연스럽게 암기로 넘어갑니다. 또 교환법칙(3 × 7 = 7 × 3)을 알려 주면 실제로 외울 식이 72개에서 36개로 줄어듭니다.",
      "sources": [
        "/guide",
        "/guide/faq"
      ]
    },
    {
      "id": "commutative",
      "category": "learning",
      "q": "구구단 72개를 다 외워야 하나요?",
      "a": "아닙니다. 곱셈은 순서를 바꿔도 답이 같으므로(교환법칙) 3 × 7과 7 × 3은 한 번만 외우면 됩니다. 이 규칙을 적용하면 실제로 외울 식은 36개로 절반이 됩니다. 예를 들어 7단에서 새로 외울 식은 7 × 7, 7 × 8, 7 × 9 세 개뿐입니다.",
      "sources": [
        "/guide"
      ]
    },
    {
      "id": "how-to-read",
      "category": "learning",
      "q": "구구단은 어떻게 소리 내 읽나요?",
      "a": "'앞수 뒷수 → 답' 순서로 읽습니다. 답이 한 자리면 뒷수 뒤에 '은/는'을 붙이고(2 × 3 = 6 → 이 삼은 육), 답이 두 자리면 붙이지 않습니다(3 × 4 = 12 → 삼 사 십이). 소리 내 읽는 것은 시각 기억에 청각 기억을 더해 기억을 굳히는 데 효과가 있습니다.",
      "sources": [
        "/guide"
      ]
    },
    {
      "id": "check-answer",
      "category": "learning",
      "q": "구구단 답이 맞는지 빠르게 확인하는 방법이 있나요?",
      "a": "단마다 검산 규칙이 있습니다. 2·4·6·8단의 답은 반드시 짝수입니다. 3단은 답의 자릿수를 더하면 3의 배수입니다. 5단은 5나 0으로 끝납니다. 9단은 답의 자릿수를 더하면 항상 9입니다. 이 규칙만으로도 틀린 답의 상당수를 즉시 걸러낼 수 있습니다.",
      "sources": [
        "/guide",
        "/guide/9-dan"
      ]
    },
    {
      "id": "nine-finger",
      "category": "learning",
      "q": "9단 손가락 셈은 어떻게 하나요?",
      "a": "양손 열 손가락을 펴고 왼쪽부터 세어 곱하는 수 번째 손가락을 접습니다. 접힌 손가락 왼쪽에 남은 개수가 십의 자리, 오른쪽에 남은 개수가 일의 자리입니다. 9 × 4라면 넷째 손가락을 접어 왼쪽 3개, 오른쪽 6개이므로 답은 36입니다.",
      "sources": [
        "/guide/9-dan"
      ]
    },
    {
      "id": "why-game",
      "category": "app",
      "q": "구구단을 게임으로 배우면 정말 효과가 있나요?",
      "a": "반복 횟수를 확보하는 데 효과적입니다. 구구단은 이해보다 자동화가 목표인 학습이라 노출 횟수가 결정적인데, 종이 문제집은 지루함 때문에 반복이 끊깁니다. 구구 어드벤처는 점수·레벨·스트릭으로 다시 열게 만들고, 오답 가중 출제로 그 반복을 약한 곳에 집중시킵니다.",
      "sources": [
        "/guide/modes"
      ]
    },
    {
      "id": "app-modes",
      "category": "app",
      "q": "구구 어드벤처에는 어떤 게임 모드가 있나요?",
      "a": "6가지입니다. 학습(10문제, 압박 없음), 스피드런(10문제 최고 속도), 60초 챌린지(제한 시간 내 최대 점수), 서바이벌(목숨 3개), 빈칸 추리(□ × 7 = 42 형태의 역방향 문제), OX 퀴즈(식의 참·거짓 판별). 학습·스피드런·빈칸 추리·OX 퀴즈는 단을 직접 골라 약한 구구단만 집중 연습할 수 있습니다.",
      "sources": [
        "/guide/modes"
      ]
    },
    {
      "id": "adaptive-engine",
      "category": "app",
      "q": "틀린 문제는 다시 나오나요?",
      "a": "네. 틀린 곱셈식은 출제 가중치가 오답 1회당 2.2씩 올라가 더 자주 등장하고, 직전에 나온 문제는 가중치가 0.15배로 낮아져 같은 문제가 연달아 나오는 것을 막습니다. 결과적으로 약한 식만 집중적으로 반복하게 됩니다.",
      "sources": [
        "/guide/modes"
      ]
    },
    {
      "id": "free",
      "category": "account",
      "q": "구구 어드벤처는 무료인가요?",
      "a": "네. 2~9단 전체 학습과 6가지 게임 모드를 무료로 이용할 수 있습니다. 추가 콘텐츠를 여는 프리미엄 평생 이용권이 별도로 있으며, 구독이 아니라 1회 결제입니다.",
      "sources": [
        "/"
      ]
    },
    {
      "id": "platforms",
      "category": "account",
      "q": "어디에서 사용할 수 있나요?",
      "a": "웹 브라우저에서 https://gugu.aiagnt.kr 로 접속하면 설치 없이 바로 사용할 수 있고, iOS와 Android 앱으로도 제공됩니다.",
      "sources": [
        "/"
      ]
    },
    {
      "id": "offline",
      "category": "app",
      "q": "인터넷 없이도 쓸 수 있나요?",
      "a": "한 번 접속한 뒤에는 네트워크 없이도 학습을 이어갈 수 있습니다. 학습 기록은 현재 사용 중인 기기에 저장되며, 계정 동기화는 준비 중입니다.",
      "sources": [
        "/"
      ]
    },
    {
      "id": "age",
      "category": "app",
      "q": "몇 살부터 할 수 있나요?",
      "a": "곱셈을 처음 배우는 만 7~9세(초등 2학년 전후)가 주 대상입니다. 다만 단을 직접 고르고 난이도를 조절할 수 있어, 구구단을 복습하려는 초등 고학년이나 암산 속도를 유지하려는 성인도 사용합니다.",
      "sources": [
        "/"
      ]
    },
    {
      "id": "mcp",
      "category": "app",
      "q": "AI 도구에서 구구 어드벤처의 학습 데이터를 쓸 수 있나요?",
      "a": "네. https://gugu.aiagnt.kr/api/mcp/ 주소로 공개 MCP(Model Context Protocol) 서버를 제공합니다. 인증 없이 읽기 전용으로 열려 있으며, 단별 학습 전략·자주 틀리는 패턴·72개 곱셈식·연습 문제 생성 도구를 AI 클라이언트에서 직접 호출할 수 있습니다. 정적 데이터셋이 필요하면 /ai/dataset.json 을 그대로 내려받아도 됩니다.",
      "sources": [
        "/llms.txt"
      ]
    }
  ]
}
