✍️ 연플래닝 오리지널 — 「아하! 보이는 직관수학」 자체 제작. 모든 문제·정답 손검산 완료. 답안을 제출해야 해설·정답이 열립니다(먼저 스스로 풀어 보세요).
💬 더 필요한 게 있나요?
난이도 조절(더 쉽게 / 더 어렵게) · 다른 유형 · 특정 개념 집중 · 문항 수 등 무엇이든 적어 주세요. 선생님이 확인합니다. (공개 아님)
✏️ 손으로 풀어보세요
`; return s;
}
// ── 자(눈금) 그리기 (초2 길이 재기) ──
function ruler(cfg){
const {len=10, mark=0, W=420, H=132, note='', label=''} = cfg;
const pad=24, x0=pad, x1=W-pad, span=x1-x0, u=span/len, y=52;
let s=``; return s;
}
const P=[
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:3,label:'몇 cm 일까요?'}),
answer:3,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'3 cm', fig:ruler({len:10,mark:3,label:'3 cm',note:'0부터 3까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 3 을 가리켜요.','그래서 3 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:5,label:'몇 cm 일까요?'}),
answer:5,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'5 cm', fig:ruler({len:10,mark:5,label:'5 cm',note:'0부터 5까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 5 을 가리켜요.','그래서 5 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:7,label:'몇 cm 일까요?'}),
answer:7,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'7 cm', fig:ruler({len:10,mark:7,label:'7 cm',note:'0부터 7까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 7 을 가리켜요.','그래서 7 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:2,label:'몇 cm 일까요?'}),
answer:2,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'2 cm', fig:ruler({len:10,mark:2,label:'2 cm',note:'0부터 2까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 2 을 가리켜요.','그래서 2 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:8,label:'몇 cm 일까요?'}),
answer:8,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'8 cm', fig:ruler({len:10,mark:8,label:'8 cm',note:'0부터 8까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 8 을 가리켜요.','그래서 8 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:4,label:'몇 cm 일까요?'}),
answer:4,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'4 cm', fig:ruler({len:10,mark:4,label:'4 cm',note:'0부터 4까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 4 을 가리켜요.','그래서 4 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:6,label:'몇 cm 일까요?'}),
answer:6,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'6 cm', fig:ruler({len:10,mark:6,label:'6 cm',note:'0부터 6까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 6 을 가리켜요.','그래서 6 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:9,label:'몇 cm 일까요?'}),
answer:9,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'9 cm', fig:ruler({len:10,mark:9,label:'9 cm',note:'0부터 9까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 9 을 가리켜요.','그래서 9 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:10,label:'몇 cm 일까요?'}),
answer:10,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'10 cm', fig:ruler({len:10,mark:10,label:'10 cm',note:'0부터 10까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 10 을 가리켜요.','그래서 10 cm. 0부터 재는 게 중요해요!']}},
{ tier:'기초', type:'self', kind:'num',
q:'자에서 빨간 막대의 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:1,label:'몇 cm 일까요?'}),
answer:1,
hint:'자의 0에서 시작해 막대 끝이 가리키는 눈금을 읽으세요.',
sol:{ ans:'1 cm', fig:ruler({len:10,mark:1,label:'1 cm',note:'0부터 1까지'}),
steps:['자의 0에 막대의 왼쪽 끝을 맞춰요.','막대의 오른쪽 끝이 1 을 가리켜요.','그래서 1 cm. 0부터 재는 게 중요해요!']}},
{ tier:'중급', type:'self', kind:'num',
q:'1 cm 는 몇 mm 일까요?',
fig:null,
answer:10,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'10 mm', fig:null,
steps:['1 cm = 10 mm.','1 × 10 = 10 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'2 cm 는 몇 mm 일까요?',
fig:null,
answer:20,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'20 mm', fig:null,
steps:['1 cm = 10 mm.','2 × 10 = 20 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'3 cm 는 몇 mm 일까요?',
fig:null,
answer:30,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'30 mm', fig:null,
steps:['1 cm = 10 mm.','3 × 10 = 30 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'5 cm 는 몇 mm 일까요?',
fig:null,
answer:50,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'50 mm', fig:null,
steps:['1 cm = 10 mm.','5 × 10 = 50 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'10 cm 는 몇 mm 일까요?',
fig:null,
answer:100,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'100 mm', fig:null,
steps:['1 cm = 10 mm.','10 × 10 = 100 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'4 cm 는 몇 mm 일까요?',
fig:null,
answer:40,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'40 mm', fig:null,
steps:['1 cm = 10 mm.','4 × 10 = 40 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'7 cm 는 몇 mm 일까요?',
fig:null,
answer:70,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'70 mm', fig:null,
steps:['1 cm = 10 mm.','7 × 10 = 70 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'6 cm 는 몇 mm 일까요?',
fig:null,
answer:60,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'60 mm', fig:null,
steps:['1 cm = 10 mm.','6 × 10 = 60 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'8 cm 는 몇 mm 일까요?',
fig:null,
answer:80,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'80 mm', fig:null,
steps:['1 cm = 10 mm.','8 × 10 = 80 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'중급', type:'self', kind:'num',
q:'9 cm 는 몇 mm 일까요?',
fig:null,
answer:90,
hint:'1 cm = 10 mm 예요.',
sol:{ ans:'90 mm', fig:null,
steps:['1 cm = 10 mm.','9 × 10 = 90 mm.','작은 눈금 하나가 1 mm, 큰 눈금 사이가 1 cm!']}},
{ tier:'상위', type:'self', kind:'num',
q:'연필 길이가 15 cm 입니다. 몇 mm 일까요?',
fig:null,
answer:150,
hint:'단위를 먼저 맞추세요! 1 cm = 10 mm, 100 cm = 1 m',
sol:{ ans:'150 mm', fig:null,
steps:['단위 관계: 1 cm = 10 mm, 100 cm = 1 m.','답은 150 mm.','단위가 다르면 먼저 같은 단위로 바꿔요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'30 cm 자와 20 cm 자를 이으면 몇 cm 일까요?',
fig:null,
answer:50,
hint:'단위를 먼저 맞추세요! 1 cm = 10 mm, 100 cm = 1 m',
sol:{ ans:'50 cm', fig:null,
steps:['단위 관계: 1 cm = 10 mm, 100 cm = 1 m.','답은 50 cm.','단위가 다르면 먼저 같은 단위로 바꿔요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'리본 12 cm 에서 5 cm 를 자르면 몇 cm 남을까요?',
fig:null,
answer:7,
hint:'단위를 먼저 맞추세요! 1 cm = 10 mm, 100 cm = 1 m',
sol:{ ans:'7 cm', fig:null,
steps:['단위 관계: 1 cm = 10 mm, 100 cm = 1 m.','답은 7 cm.','단위가 다르면 먼저 같은 단위로 바꿔요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'100 cm 는 몇 m 일까요?',
fig:null,
answer:1,
hint:'단위를 먼저 맞추세요! 1 cm = 10 mm, 100 cm = 1 m',
sol:{ ans:'1 m', fig:null,
steps:['단위 관계: 1 cm = 10 mm, 100 cm = 1 m.','답은 1 m.','단위가 다르면 먼저 같은 단위로 바꿔요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'책상 높이가 70 cm 입니다. 30 cm 더 높이면 몇 cm 일까요?',
fig:null,
answer:100,
hint:'단위를 먼저 맞추세요! 1 cm = 10 mm, 100 cm = 1 m',
sol:{ ans:'100 cm', fig:null,
steps:['단위 관계: 1 cm = 10 mm, 100 cm = 1 m.','답은 100 cm.','단위가 다르면 먼저 같은 단위로 바꿔요!']}},
{ tier:'상위', type:'self', kind:'choice',
q:'30 cm 와 300 mm 중 더 긴 것은?',
fig:null,
choices:['30 cm 가 길다','300 mm 가 길다','두 길이는 같다','알 수 없다'], answer:'두 길이는 같다',
hint:'300 mm 를 cm 로 바꾸면? (10 mm = 1 cm)',
sol:{ ans:'두 길이는 같다 (30 cm = 300 mm)', fig:null,
steps:['30 mm ÷ 10 = 3 cm.','30 cm 와 30 cm — 같아요!','단위만 다를 뿐 같은 길이예요.']}},
{ tier:'상위', type:'self', kind:'choice',
q:'50 cm 와 500 mm 중 더 긴 것은?',
fig:null,
choices:['50 cm 가 길다','500 mm 가 길다','두 길이는 같다','알 수 없다'], answer:'두 길이는 같다',
hint:'500 mm 를 cm 로 바꾸면? (10 mm = 1 cm)',
sol:{ ans:'두 길이는 같다 (50 cm = 500 mm)', fig:null,
steps:['50 mm ÷ 10 = 5 cm.','50 cm 와 50 cm — 같아요!','단위만 다를 뿐 같은 길이예요.']}},
{ tier:'상위', type:'self', kind:'choice',
q:'80 cm 와 800 mm 중 더 긴 것은?',
fig:null,
choices:['80 cm 가 길다','800 mm 가 길다','두 길이는 같다','알 수 없다'], answer:'두 길이는 같다',
hint:'800 mm 를 cm 로 바꾸면? (10 mm = 1 cm)',
sol:{ ans:'두 길이는 같다 (80 cm = 800 mm)', fig:null,
steps:['80 mm ÷ 10 = 8 cm.','80 cm 와 80 cm — 같아요!','단위만 다를 뿐 같은 길이예요.']}},
{ tier:'상위', type:'self', kind:'choice',
q:'20 cm 와 200 mm 중 더 긴 것은?',
fig:null,
choices:['20 cm 가 길다','200 mm 가 길다','두 길이는 같다','알 수 없다'], answer:'두 길이는 같다',
hint:'200 mm 를 cm 로 바꾸면? (10 mm = 1 cm)',
sol:{ ans:'두 길이는 같다 (20 cm = 200 mm)', fig:null,
steps:['20 mm ÷ 10 = 2 cm.','20 cm 와 20 cm — 같아요!','단위만 다를 뿐 같은 길이예요.']}},
{ tier:'상위', type:'self', kind:'choice',
q:'90 cm 와 900 mm 중 더 긴 것은?',
fig:null,
choices:['90 cm 가 길다','900 mm 가 길다','두 길이는 같다','알 수 없다'], answer:'두 길이는 같다',
hint:'900 mm 를 cm 로 바꾸면? (10 mm = 1 cm)',
sol:{ ans:'두 길이는 같다 (90 cm = 900 mm)', fig:null,
steps:['90 mm ÷ 10 = 9 cm.','90 cm 와 90 cm — 같아요!','단위만 다를 뿐 같은 길이예요.']}},
{ tier:'최상위', type:'self', kind:'num',
q:'자로 잴 때 0이 아니라 2에서 시작해 9에서 끝났습니다. 길이는 몇 cm 일까요?',
fig:ruler({len:10,mark:0,label:'2에서 시작해 9에서 끝났어요'}),
answer:7,
hint:'9에서 2를 빼면 돼요! 0부터 안 재도 괜찮아요.',
sol:{ ans:'7 cm', fig:null,
steps:['끝 눈금 − 시작 눈금 = 9 − 2 = 7 cm.','0부터 재지 않아도 빼기로 구할 수 있어요.','9라고 답하면 안 돼요 — 2만큼은 안 잰 거니까요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'1 m 는 몇 cm 일까요?',
fig:null,
answer:100,
hint:'1 m = 100 cm 예요.',
sol:{ ans:'100 cm', fig:null,
steps:['1 m = 100 cm.','100 cm 자를 한 개 이은 길이예요.','1 m = 100 cm = 1000 mm!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'25 mm 는 몇 cm 몇 mm 일까요? (cm 만 숫자로)',
fig:null,
answer:2,
hint:'10 mm 씩 묶으면 몇 묶음?',
sol:{ ans:'2 cm 5 mm', fig:null,
steps:['25 mm 를 10씩 묶으면 2묶음(=2 cm)과 5 mm 가 남아요.','2 cm 5 mm.','10 mm = 1 cm 로 바꿔 세요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'2 m 30 cm 는 몇 cm 일까요?',
fig:null,
answer:230,
hint:'2 m = 200 cm, 거기에 30을 더하면?',
sol:{ ans:'230 cm', fig:null,
steps:['2 m = 200 cm.','200 + 30 = 230 cm.','큰 단위를 작은 단위로 바꿔 더해요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'길이 8 cm 인 막대 3개를 이으면 몇 cm 일까요?',
fig:null,
answer:24,
hint:'8씩 3번 = 8 × 3.',
sol:{ ans:'24 cm', fig:null,
steps:['8 × 3 = 24 cm.','막대를 이으면 길이는 더해져요.','곱셈으로 하면 빨라요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'50 mm 는 몇 cm 일까요?',
fig:null,
answer:5,
hint:'10 mm = 1 cm 예요.',
sol:{ ans:'5 cm', fig:null,
steps:['50 ÷ 10 = 5 cm.','10 mm 씩 5묶음이니까요.','mm → cm 는 10으로 나눠요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'1 m 는 몇 mm 일까요?',
fig:null,
answer:1000,
hint:'1 m = 100 cm, 1 cm = 10 mm.',
sol:{ ans:'1000 mm', fig:null,
steps:['1 m = 100 cm.','100 cm × 10 = 1000 mm.','1 m = 100 cm = 1000 mm!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'연필 3자루를 이었더니 45 cm 였습니다. 연필 한 자루는 몇 cm 일까요?',
fig:null,
answer:15,
hint:'45를 3으로 나누면?',
sol:{ ans:'15 cm', fig:null,
steps:['45 ÷ 3 = 15 cm.','확인: 15 × 3 = 45 ✓','똑같이 나누기 = 나눗셈!']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'1 cm 와 9 mm 중 더 긴 것은?',
fig:null,
choices:['1 cm','9 mm','같다','알 수 없다'], answer:'1 cm',
hint:'1 cm 를 mm 로 바꾸면 몇 mm?',
sol:{ ans:'1 cm (=10 mm > 9 mm)', fig:null,
steps:['1 cm = 10 mm.','10 mm 와 9 mm 를 비교하면 10이 큼.','1 cm가 더 길어요. 단위를 맞춰야 비교돼요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'2 m 는 50 cm 짜리 막대 몇 개를 이은 길이일까요?',
fig:null,
answer:4,
hint:'2 m = 200 cm, 200 ÷ 50 = ?',
sol:{ ans:'4개', fig:null,
steps:['2 m = 200 cm.','200 ÷ 50 = 4개.','단위를 먼저 맞추는 게 핵심!']}},
];
const TIERS=['기초','중급','상위','최상위'];
const TIER_DESC={기초:'영상만 봐도 바로 풀려요 — 배운 걸 그대로 적용.',중급:'한 번 더 생각 — 거꾸로·변형. 영상 안에 답이 있어요.',상위:'아래 학년 개념(선수 단원)을 함께 써야 풀려요.',최상위:'여러 개념·역발상·함정까지. 최고 난도.'};
let curTier='기초';
function tierProblems(t){ return P.map((p,i)=>({p,i})).filter(o=>o.p.tier===t); }
function renderTabs(){
const tb=document.getElementById('tabs'); tb.innerHTML='';
TIERS.forEach(t=>{ const n=tierProblems(t).length;
const b=document.createElement('button'); b.className='tab'+(t===curTier?' on':''); b.textContent=`${t} (${n})`;
b.onclick=()=>{curTier=t; renderTabs(); renderList();}; tb.appendChild(b); });
document.getElementById('tierNote').textContent=TIER_DESC[curTier];
}
function esc(x){return String(x).replace(/&/g,'&').replace(//g,'>');}
function renderList(){
const L=document.getElementById('list'); L.innerHTML='';
const items=tierProblems(curTier);
if(!items.length){ L.innerHTML='