암산 60초의 난이도는 자릿수가 아니라 받아올림입니다 — 문제 45만 개를 뜯어봤습니다
핵심 요약 — 암산 60초의 난이도는 겉보기에 수의 크기로 갈립니다(쉬움 1
20, 보통·어려움 199). 그런데 문제 45만 개를 뜯어 보니, 사람을 실제로 막는 받아올림·받아내림이 있는 문제의 비율은 38.3% → 43.5% → 43.6%로 거의 안 움직였습니다. 보통과 어려움은 그 비율이 똑같고, 달라지는 것은 곱셈이 문제의 3분의 1을 차지한다는 것뿐입니다.
암산 게임은 60초 안에 몇 문제를 맞히는지 셉니다. 난이도를 고르면 문제가 달라지는데, 무엇이 달라지는지는 화면만 봐서는 잘 안 보입니다. 그래서 난이도마다 문제 15만 개씩을 만들어 뜯어봤습니다.
세 난이도의 설정값
| 쉬움 | 보통 | 어려움 | |
|---|---|---|---|
| 연산 | + − | + − | + − × |
| 수의 범위 | 1~20 | 1~99 | 1 |
쉬움에서 보통으로 갈 때 범위가 다섯 배로 늘어납니다. 그러니 다섯 배쯤 어려워질 것 같습니다.
실제로 재 보면
문제 15만 개씩을 만들어 답과 자릿수를 셌습니다.
| 쉬움 | 보통 | 어려움 | |
|---|---|---|---|
| 답의 평균 | 13.8 | 66.3 | 81.1 |
| 답의 최댓값 | 40 | 198 | 361 |
| 답이 두 자리 이상 | 59.1% | 90.7% | 93.2% |
| 받아올림·받아내림이 있는 문제 | 38.3% | 43.5% | 43.6% |
윗줄 셋은 시원하게 벌어집니다. 답 평균이 13.8에서 66.3으로 다섯 배가 됩니다.
그런데 마지막 줄이 거의 안 움직입니다. 38.3 → 43.5 → 43.6. 쉬움과 보통 사이가 5%포인트, 보통과 어려움 사이는 0.1%포인트입니다.
왜 받아올림을 따로 세었나
머릿속으로 더할 때 실제로 손이 멈추는 지점이 거기이기 때문입니다.
23 + 45는 일의 자리 3+5=8, 십의 자리 2+4=6. 두 자리를 따로 처리해 붙이면 끝입니다. 큰 수인데 쉽습니다.
27 + 48은 다릅니다. 7+8=15라서 십의 자리로 1을 넘겨야 하고, 그 1을 기억한 채 2+4를 해야 합니다. 자리 하나를 기억하고 있어야 한다는 것이 부담의 정체입니다.
뺄셈도 같습니다. 52 − 38은 일의 자리에서 2−8이 안 되니 윗자리에서 빌려 옵니다.
그래서 "몇 자리 수인가"보다 "자리를 넘나드는가"가 사람에게는 더 큰 문제입니다.
받아올림 비율이 왜 43% 근처에서 멈추나
두 수를 아무렇게나 뽑아 더할 때, 일의 자리끼리 합이 10을 넘을 확률을 생각하면 됩니다. 두 자리가 0~9에서 고르게 나온다면 그 확률은 45%입니다.
수를 120에서 뽑으면 일의 자리가 09에 고르게 안 깔립니다(19가 두 번씩, 10·20이 섞여 있습니다). 그래서 38.3%로 조금 낮습니다. 199로 넓히면 일의 자리가 거의 고르게 깔려 이론값인 45%에 가까워집니다.
즉 범위를 아무리 넓혀도 이 값은 45%를 넘지 못합니다. 보통에서 이미 천장에 닿았으므로 어려움에서 더 오를 데가 없습니다.
그래서 어려움은 곱셈으로 갑니다
보통과 어려움의 진짜 차이는 딱 하나 — 문제의 3분의 1이 곱셈이라는 것입니다.
| 난이도 | + | − | × |
|---|---|---|---|
| 쉬움 | 50% | 50% | — |
| 보통 | 50% | 50% | — |
| 어려움 | 33% | 33% | 33% |
곱셈만 따로 둔 이유가 있습니다. 두 자리 덧셈과 두 자리 곱셈은 사람에게 같은 난이도가 아닙니다. 덧셈은 자릿수만큼 늘어나는데 곱셈은 곱으로 늘어납니다. 47 + 68은 훈련하면 1초 안에 되지만 47 × 68은 종이가 필요합니다.
그래서 곱셈은 2~19로 따로 묶었습니다. 구구단 근처라 머릿속에서 되는 범위이고, 그러면서도 덧셈과는 결이 다른 부담을 줍니다. 섞어 두면 난이도가 문제마다 널뛰어 기록이 실력이 아니라 운이 됩니다.
60초에 몇 개가 가능한가
| 문제 하나에 걸리는 시간 | 60초에 |
|---|---|
| 1초 | 60개 |
| 1.5초 | 40개 |
| 2초 | 30개 |
| 3초 | 20개 |
서버는 답 사이 간격이 250ms 미만이면 그 기록을 버립니다. 60초를 250ms로 나누면 240개인데, 이건 숫자를 읽지도 못하는 속도입니다. 사람을 막자는 것이 아니라 자동 입력을 막자는 천장입니다.
미리 만들어 두는 문제는 300개입니다. 다 풀 일은 없지만 모자라면 판이 끊기므로 넉넉히 만들어 둡니다.
시간을 고정하고 개수를 세는 게임
우리 캐주얼 게임 열 종 중 시간을 못 박아 두는 것은 셋입니다 — 두더지 잡기(30초), 한글 타자(60초), 암산(60초).
나머지는 반대입니다. 반응 속도·숫자 찾기·과녁 조준은 정해진 개수를 끝내는 시간을 재고, 뱀·블록 쌓기는 죽을 때까지 갑니다.
암산이 시간을 고정한 쪽에 선 이유는 끝이 없는 게임이기 때문입니다. 문제는 얼마든지 만들 수 있으므로 "몇 문제까지"로 끊으면 잘하는 사람은 그냥 빨리 끝낼 뿐 차이가 안 납니다. 시간을 못 박아야 실력이 개수로 곧장 나옵니다.
푸는 사람에게 남는 것
- 큰 수라고 겁먹지 마세요.
23 + 45는 두 자리를 따로 하면 됩니다. - 일의 자리부터 보세요. 10을 넘는지 아닌지가 그 문제의 난이도입니다.
- 보통에서 어려움으로 갈 때 늘어나는 건 곱셈뿐입니다. 덧셈·뺄셈의 부담은 같습니다.
- 막히면 넘기세요. 한 문제에 3초를 쓰면 60초에 스무 개입니다.
재현 방법. 난이도마다 씨앗 1~500번의 판을 만들어(판마다 문제 300개) 15만 개씩, 모두 45만 개를 셌습니다. "받아올림·받아내림"은 덧셈에서 두 수의 일의 자리 합이 10 이상인 경우, 뺄셈에서 큰 수의 일의 자리가 작은 수의 일의 자리보다 작은 경우로 셌고, 곱셈은 이 계산에서 뺐습니다. 설정값은 lib/casual/mental.ts에 그대로 있습니다.