Why does understanding an editorial solution not count as having learned it?
answer
- following along is not producing
- the easy feeling is the warning sign
- recognition versus recall
- read one paragraph, then close it
- rebuild from your own brute force
basics
~20 sFollowing a written solution is recognition; producing one later with nothing in front of you is recall, and only recall is what an interview measures. Read the approach paragraph, close it, and rebuild the solution from your own brute force.
solid answer
~50 sReading a worked solution is unusually convincing, because every step follows from the last and nothing is missing - so comprehension feels like capability. But you were never asked to generate anything, and generating under time pressure is the actual skill. My upsolve rule is: read only the approach paragraph, the single idea, then close the page. Restate my brute force and its cost, name the repeated or wasted work the better idea removes, and rebuild the optimal version myself until it passes. If I have to look again, the attempt stops counting as evidence and the problem goes back in the queue. Then I write down the *trigger* in my own words - the input property that makes this technique apply - because a memorised solution transfers to one problem while a trigger transfers to a family.
go deeper
Be ready to state the difference between following a worked solution and producing one from nothing, and to describe the habit that closes it: read the idea, close the page, build it yourself.
Explain the mechanics of an upsolve - restating the brute force, naming the wasted work the better idea removes, rebuilding unaided, and writing a trigger phrased as a condition on the input rather than a memory of the problem.
Demonstrate that you verify learning rather than assume it: a delayed cold attempt plus a transfer attempt on a different problem with the same trigger, and a clear account of what a smooth immediate rebuild does and does not prove.
Own the argument that self-reported understanding is weak evidence, and be able to say which observable behaviours you would accept instead when judging whether a technique is actually available under pressure.
## Recognition and recall are different abilities When you read a finished solution, you are performing recognition: each step is presented, each follows from the last, and your job is only to verify that it makes sense. That is an easy task and it produces a strong feeling of understanding. An interview asks for something else entirely - generation from an empty page, under time pressure, with no confirming next line waiting. The two abilities come apart badly. Plenty of people can follow every line of an approach they could not have produced and could not reproduce a day later. This is the fluency illusion: material that is easy to process feels well learned. Re-reading maximises fluency and minimises learning; attempting to produce the thing yourself feels harder and leaves far more behind. The whole design of a good upsolve is to move the work from the first mode to the second. ## The upsolve protocol **Read the approach, not the code.** Take one paragraph - the idea. "Maintain a running aggregate instead of recomputing per element." "Process in order of a derived key so the constraint becomes local." "Cache the state you keep re-deriving." Then close the page. Reading the finished implementation gives you the code and skips the part you failed at, which was choosing the idea. **Restate your brute force and its cost.** Say explicitly what the naive approach does and what it costs. This anchors the rebuild in something you already own. **Name the waste.** Between the brute force and the optimal there is always a specific inefficiency: the same subrange summed repeatedly; the same subproblem re-solved along different paths; a full scan repeated for every element when a maintained structure could answer in constant time. Naming the waste out loud is the step that converts a memorised trick into a reusable move, because next time you will notice the same waste before you know the trick's name. **Rebuild until it passes, unaided.** Reconstruct the solution from the idea. Every detail you have to re-derive - the exact invariant, the update order, the initial state - is a detail that was never yours when you were merely reading. If you reopen the page, the attempt is no longer evidence of anything; finish it, then re-queue the problem for a cold attempt later. **Write the trigger.** One sentence in your own words describing the input property that makes this technique apply. This is what generalises. A remembered solution helps with exactly one problem; a trigger phrased as "when X is true about the input, consider Y" is what fires on the next problem you have never seen. ## The failure mode: memorising the answer The most common way an upsolve goes wrong is that it succeeds too smoothly. You reconstruct the solution twenty minutes after reading it, everything falls into place, and what you have actually demonstrated is short-term recall of a specific artifact. Two guards against this. First, delay: schedule a cold re-attempt days later, when the specifics have faded and only the idea can carry you. Second, transfer: attempt a *different* problem with the same trigger. If the technique only fires when the surface details match the one you studied, you memorised a solution rather than learning a pattern - and the fix is more varied instances, not more re-reading of that one. ## Why not just read more solutions? Because reading is cheap and reading feels productive, and the volume of solutions you can read in an hour is far greater than the number you can rebuild. That asymmetry is exactly the trap: the cheap activity produces the fluency signal without the capability, so it crowds out the expensive activity that produces the capability. Reading has one legitimate role - supplying the idea you did not have, once, in a paragraph. Everything after that paragraph has to be produced by you. ## What a good upsolve leaves behind After the rebuild you should have: a passing solution you constructed, a one-line statement of the waste the technique removes, a trigger phrased generically, and a date for the cold re-attempt. Notice that only the first of those exists if you simply read the editorial and moved on - and it is the least useful of the four, because a solution you did not generate is a solution you cannot regenerate. ## The honest self-check At the end of an upsolve, ask: if this problem appeared tomorrow with the numbers changed and the story rewritten, would I find the idea myself? Not "would I recognise it" - recognition is guaranteed and worthless here - but would I *find* it. If the answer is no, the upsolve is not finished, whatever the judge says.
- You rebuilt it successfully twenty minutes after reading the approach. Have you learned it?Not demonstrated yet. A rebuild that close to the reading is mostly short-term recall of a specific artifact rather than a technique you can summon cold. Schedule a re-attempt days later, and separately try a different problem that the same trigger should fire on. Succeeding on both is the evidence; succeeding immediately after reading is only the entry ticket to that test.
- Why read the approach paragraph at all instead of struggling until you find it yourself?Because unbounded struggle past the point of new ideas produces frustration, not learning - you rehearse the same dead ends. A bounded attempt, then the minimum hint that unblocks you, keeps the generation work with you while removing the wall. The paragraph supplies the one idea you lacked; everything downstream of it - the invariant, the ordering, the edge handling - is still yours to derive.
- What exactly should the trigger sentence look like?Phrased as a condition on the input and a move, with no reference to the specific story: "when the same subrange gets summed repeatedly, precompute cumulative totals"; "when a valid window only ever extends and shrinks from the ends, maintain it instead of rebuilding". If the sentence mentions the problem's characters or setting, it is a memory of that problem, not a trigger.
Following a route on a map while someone else drives feels like knowing the way; driving it yourself with the map closed is the test that distinguishes the two, and it is the only one that predicts tomorrow.
saying these in an interview costs you the question
- I read the solution and understood it, so I know it
- Re-reading the explanation a few times cements it
- Copying the reference code out counts as rebuilding
- If the rebuild worked immediately, the problem is done
- Reading many solutions beats rebuilding a few