✍️ 연플래닝 오리지널 — 「아하! 보이는 직관수학」 자체 제작. 모든 문제·정답 손검산 완료. 답안을 제출해야 해설·정답이 열립니다(먼저 스스로 풀어 보세요).
💬 더 필요한 게 있나요?
난이도 조절(더 쉽게 / 더 어렵게) · 다른 유형 · 특정 개념 집중 · 문항 수 등 무엇이든 적어 주세요. 선생님이 확인합니다. (공개 아님)
✏️ 손으로 풀어보세요
`; return s;
}
const P=[
{ tier:'기초', type:'self', kind:'num',
q:'0.3 + 0.4 을(를) 계산하세요.',
fig:null,
answer:0.7,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'0.7', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 0.3 + 0.4.','같은 자리끼리 더하면 0.7.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'0.5 + 0.2 을(를) 계산하세요.',
fig:null,
answer:0.7,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'0.7', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 0.5 + 0.2.','같은 자리끼리 더하면 0.7.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'1.2 + 0.6 을(를) 계산하세요.',
fig:null,
answer:1.8,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'1.8', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 1.2 + 0.6.','같은 자리끼리 더하면 1.8.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'0.7 + 0.8 을(를) 계산하세요.',
fig:null,
answer:1.5,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'1.5', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 0.7 + 0.8.','같은 자리끼리 더하면 1.5.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'2.4 + 1.3 을(를) 계산하세요.',
fig:null,
answer:3.7,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'3.7', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 2.4 + 1.3.','같은 자리끼리 더하면 3.7.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'0.25 + 0.15 을(를) 계산하세요.',
fig:null,
answer:0.4,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'0.4', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 0.25 + 0.15.','같은 자리끼리 더하면 0.4.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'1.5 + 2.7 을(를) 계산하세요.',
fig:null,
answer:4.2,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'4.2', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 1.5 + 2.7.','같은 자리끼리 더하면 4.2.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'3.6 + 0.4 을(를) 계산하세요.',
fig:null,
answer:4,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'4', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 3.6 + 0.4.','같은 자리끼리 더하면 4.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'0.08 + 0.12 을(를) 계산하세요.',
fig:null,
answer:0.2,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'0.2', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 0.08 + 0.12.','같은 자리끼리 더하면 0.2.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'기초', type:'self', kind:'num',
q:'4.5 + 2.5 을(를) 계산하세요.',
fig:null,
answer:7,
hint:'소수점끼리 세로로 맞춰 쓰고 같은 자리끼리 더해요.',
sol:{ ans:'7', fig:null,
steps:['소수점을 세로로 맞춰 씁니다: 4.5 + 2.5.','같은 자리끼리 더하면 7.','답에도 소수점을 같은 자리에 내려 찍어요.']}},
{ tier:'중급', type:'self', kind:'num',
q:'0.8 − 0.3 을(를) 계산하세요.',
fig:null,
answer:0.5,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'0.5', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 0.8 − 0.3.','같은 자리끼리 빼면 0.5.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'1.5 − 0.7 을(를) 계산하세요.',
fig:null,
answer:0.8,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'0.8', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 1.5 − 0.7.','같은 자리끼리 빼면 0.8.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'2.4 − 1.6 을(를) 계산하세요.',
fig:null,
answer:0.8,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'0.8', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 2.4 − 1.6.','같은 자리끼리 빼면 0.8.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'0.75 − 0.25 을(를) 계산하세요.',
fig:null,
answer:0.5,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'0.5', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 0.75 − 0.25.','같은 자리끼리 빼면 0.5.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'3.2 − 1.8 을(를) 계산하세요.',
fig:null,
answer:1.4,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'1.4', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 3.2 − 1.8.','같은 자리끼리 빼면 1.4.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'5 − 2.3 을(를) 계산하세요.',
fig:null,
answer:2.7,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'2.7', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 5 − 2.3.','같은 자리끼리 빼면 2.7.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'1 − 0.45 을(를) 계산하세요.',
fig:null,
answer:0.55,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'0.55', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 1 − 0.45.','같은 자리끼리 빼면 0.55.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'4.05 − 1.25 을(를) 계산하세요.',
fig:null,
answer:2.8,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'2.8', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 4.05 − 1.25.','같은 자리끼리 빼면 2.8.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'2.5 − 0.75 을(를) 계산하세요.',
fig:null,
answer:1.75,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'1.75', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 2.5 − 0.75.','같은 자리끼리 빼면 1.75.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'중급', type:'self', kind:'num',
q:'10 − 3.6 을(를) 계산하세요.',
fig:null,
answer:6.4,
hint:'자연수는 소수점 아래를 0으로 채워 자리를 맞춰요(예: 5 = 5.00).',
sol:{ ans:'6.4', fig:null,
steps:['소수점을 맞춰 씁니다. 빈 자리는 0으로 채워요: 10 − 3.6.','같은 자리끼리 빼면 6.4.','받아내림이 있으면 윗자리에서 1을 빌려옵니다.']}},
{ tier:'상위', type:'self', kind:'num',
q:'물이 1.4 L 있고 0.8 L 를 더 부었습니다. 모두 몇 L 일까요?',
fig:null,
answer:2.2,
hint:'소수점을 맞춰 세로로 쓰고 계산하세요. 자연수는 0을 채워 맞춰요.',
sol:{ ans:'2.2L', fig:null,
steps:['소수점을 맞춰 더해요: 1.4 + 0.8.','답은 2.2L.','끝자리 0은 생략해서 씁니다(예: 2.0 → 2).']}},
{ tier:'상위', type:'self', kind:'num',
q:'리본 2.5 m 에서 0.7 m 를 잘라 썼습니다. 남은 리본은 몇 m 일까요?',
fig:null,
answer:1.8,
hint:'소수점을 맞춰 세로로 쓰고 계산하세요. 자연수는 0을 채워 맞춰요.',
sol:{ ans:'1.8m', fig:null,
steps:['소수점을 맞춰 빼요: 2.5 - 0.7.','답은 1.8m.','끝자리 0은 생략해서 씁니다(예: 2.0 → 2).']}},
{ tier:'상위', type:'self', kind:'num',
q:'책가방 무게가 1.25 kg, 책이 0.75 kg 입니다. 합치면 몇 kg 일까요?',
fig:null,
answer:2,
hint:'소수점을 맞춰 세로로 쓰고 계산하세요. 자연수는 0을 채워 맞춰요.',
sol:{ ans:'2kg', fig:null,
steps:['소수점을 맞춰 더해요: 1.25 + 0.75.','답은 2kg.','끝자리 0은 생략해서 씁니다(예: 2.0 → 2).']}},
{ tier:'상위', type:'self', kind:'num',
q:'주스 3 L 중 1.4 L 를 마셨습니다. 남은 주스는 몇 L 일까요?',
fig:null,
answer:1.6,
hint:'소수점을 맞춰 세로로 쓰고 계산하세요. 자연수는 0을 채워 맞춰요.',
sol:{ ans:'1.6L', fig:null,
steps:['소수점을 맞춰 빼요: 3 - 1.4.','답은 1.6L.','끝자리 0은 생략해서 씁니다(예: 2.0 → 2).']}},
{ tier:'상위', type:'self', kind:'num',
q:'철사 0.45 m 와 0.55 m 를 이으면 몇 m 일까요?',
fig:null,
answer:1,
hint:'소수점을 맞춰 세로로 쓰고 계산하세요. 자연수는 0을 채워 맞춰요.',
sol:{ ans:'1m', fig:null,
steps:['소수점을 맞춰 더해요: 0.45 + 0.55.','답은 1m.','끝자리 0은 생략해서 씁니다(예: 2.0 → 2).']}},
{ tier:'상위', type:'self', kind:'num',
q:'0.5 + 0.5 을(를) 계산하세요. (답의 끝자리 0에 주의!)',
fig:null,
answer:1,
hint:'더한 뒤 끝에 0이 남으면 생략해서 써요.',
sol:{ ans:'1', fig:null,
steps:['0.5 + 0.5 를 자리 맞춰 더하면 1.0.','끝자리 0을 생략하면 1.','0.5+0.5 = 1.0 → 1 처럼요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'1.25 + 0.75 을(를) 계산하세요. (답의 끝자리 0에 주의!)',
fig:null,
answer:2,
hint:'더한 뒤 끝에 0이 남으면 생략해서 써요.',
sol:{ ans:'2', fig:null,
steps:['1.25 + 0.75 를 자리 맞춰 더하면 2.00.','끝자리 0을 생략하면 2.','0.5+0.5 = 1.0 → 1 처럼요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'2.5 + 2.5 을(를) 계산하세요. (답의 끝자리 0에 주의!)',
fig:null,
answer:5,
hint:'더한 뒤 끝에 0이 남으면 생략해서 써요.',
sol:{ ans:'5', fig:null,
steps:['2.5 + 2.5 를 자리 맞춰 더하면 5.0.','끝자리 0을 생략하면 5.','0.5+0.5 = 1.0 → 1 처럼요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'0.6 + 0.4 을(를) 계산하세요. (답의 끝자리 0에 주의!)',
fig:null,
answer:1,
hint:'더한 뒤 끝에 0이 남으면 생략해서 써요.',
sol:{ ans:'1', fig:null,
steps:['0.6 + 0.4 를 자리 맞춰 더하면 1.0.','끝자리 0을 생략하면 1.','0.5+0.5 = 1.0 → 1 처럼요!']}},
{ tier:'상위', type:'self', kind:'num',
q:'3.75 + 1.25 을(를) 계산하세요. (답의 끝자리 0에 주의!)',
fig:null,
answer:5,
hint:'더한 뒤 끝에 0이 남으면 생략해서 써요.',
sol:{ ans:'5', fig:null,
steps:['3.75 + 1.25 를 자리 맞춰 더하면 5.00.','끝자리 0을 생략하면 5.','0.5+0.5 = 1.0 → 1 처럼요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'□ + 0.6 = 1.4 일 때, □ 에 알맞은 수는?',
fig:null,
answer:0.8,
hint:'덧셈을 거꾸로! □ = 1.4 − 0.6.',
sol:{ ans:'0.8', fig:null,
steps:['□ = 1.4 − 0.6.','= 0.8.','확인: 0.8 + 0.6 = 1.4 ✓']}},
{ tier:'최상위', type:'self', kind:'num',
q:'2.5 − □ = 0.7 일 때, □ 에 알맞은 수는?',
fig:null,
answer:1.8,
hint:'□ = 2.5 − 0.7 이에요.',
sol:{ ans:'1.8', fig:null,
steps:['□ = 2.5 − 0.7.','= 1.8.','확인: 2.5 − 1.8 = 0.7 ✓']}},
{ tier:'최상위', type:'self', kind:'choice',
q:'0.3 + 0.4 를 0.7 이 아니라 0.07 이라고 하면 왜 틀릴까요?',
fig:null,
choices:['반올림했기 때문','자리를 잘못 맞췄기 때문','0을 빠뜨렸기 때문','틀리지 않았다'], answer:'자리를 잘못 맞췄기 때문',
hint:'0.3 과 0.4 는 소수 첫째 자리예요. 더해도 자리가 변할까요?',
sol:{ ans:'자리를 잘못 맞췄기 때문', fig:null,
steps:['0.3 은 10분의 3, 0.4 는 10분의 4 → 합은 10분의 7 = 0.7.','0.07 은 100분의 7 로 자리가 다른 수예요.','덧셈은 같은 자리끼리 — 자리가 바뀌면 안 됩니다.']}},
{ tier:'최상위', type:'self', kind:'num',
q:'1 − 0.35 을(를) 계산하세요.',
fig:null,
answer:0.65,
hint:'1 = 1.00 으로 자리를 맞춰야 뺄 수 있어요.',
sol:{ ans:'0.65', fig:null,
steps:['1 = 1.00 으로 씁니다(소수 둘째 자리까지).','1.00 − 0.35 = 0.65.','자연수에서 소수를 뺄 땐 0을 채워 자리를 맞추는 게 첫걸음!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'0.9 + 0.9 + 0.9 을(를) 계산하세요.',
fig:null,
answer:2.7,
hint:'같은 수를 3번 더하면 × 3 과 같아요.',
sol:{ ans:'2.7', fig:null,
steps:['0.9 + 0.9 = 1.8, 1.8 + 0.9 = 2.7.','0.9 × 3 = 2.7 로 해도 같아요.','받아올림에 주의! 9+9+9 = 27 → 소수 첫째 자리이므로 2.7.']}},
{ tier:'최상위', type:'self', kind:'num',
q:'어떤 수에서 0.45 를 뺐더니 1.55 가 되었습니다. 어떤 수는?',
fig:null,
answer:2,
hint:'뺄셈을 거꾸로 = 덧셈! 어떤 수 = 1.55 + 0.45.',
sol:{ ans:'2', fig:null,
steps:['어떤 수 − 0.45 = 1.55 → 어떤 수 = 1.55 + 0.45.','= 2.00 → 2.','확인: 2 − 0.45 = 1.55 ✓']}},
{ tier:'최상위', type:'self', kind:'num',
q:'3.7 − 1.2 − 0.5 을(를) 앞에서부터 계산하세요.',
fig:null,
answer:2,
hint:'앞에서부터 차례로 빼요.',
sol:{ ans:'2', fig:null,
steps:['먼저 3.7 − 1.2 = 2.5.','그다음 2.5 − 0.5 = 2.0 → 2.','끝자리 0은 생략!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'0.1 이 7개, 0.01 이 3개인 수는 얼마일까요?',
fig:null,
answer:0.73,
hint:'0.1 이 7개 = 0.7, 0.01 이 3개 = 0.03. 합치면?',
sol:{ ans:'0.73', fig:null,
steps:['0.1 × 7 = 0.7 (소수 첫째 자리에 7).','0.01 × 3 = 0.03 (소수 둘째 자리에 3).','합치면 0.73. 자릿값을 그대로 읽으면 돼요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'0.1 이 12개인 수는 얼마일까요?',
fig:null,
answer:1.2,
hint:'0.1 이 10개면 1 이에요. 12개면?',
sol:{ ans:'1.2', fig:null,
steps:['0.1 이 10개 = 1.','0.1 이 2개 더 = 0.2.','합치면 1.2. 10개가 모이면 윗자리로 올라가요!']}},
{ tier:'최상위', type:'self', kind:'num',
q:'2.34 에서 소수 둘째 자리 숫자는 무엇일까요?',
fig:null,
answer:4,
hint:'소수점 오른쪽으로 첫째, 둘째 자리 순이에요.',
sol:{ ans:'4', fig:null,
steps:['2.34 에서 소수점 오른쪽 첫 번째는 3(소수 첫째 자리).','두 번째는 4(소수 둘째 자리).','2는 자연수 부분이에요.']}},
];
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='