LAUNCH SALE 50% off every pass

See plans →

Why am I not improving at DSA?

If you’ve solved 300 problems and still freeze on a small variation, you’re probably drilling the steps you’re already good at.

Find the step where attempts break

Every attempt goes through the same steps: understand the statement, find a slow method, find the fast idea, show why it works, write the code. People who stall usually fail at the same step over and over.

Take your last ten problems that failed or needed a hint, and name the step where each one broke.

  • Statement: you misread the output or missed a constraint.

  • Model: you couldn’t say what to store or what a state meant.

  • Idea: you had a brute force and no way to speed it up.

  • Proof: your greedy or DP looked right and failed on a case you never tried.

  • Code: the idea was right and the implementation wasn’t.

Replay one failed attempt

Pick one failed attempt and replay it from the statement, without the editorial open. Write down the first decision you couldn’t justify at the time. “I sorted because it looked like a greedy problem” is useful. “I didn’t get it” tells you nothing.

Then find an input that breaks your original idea. If you used two pointers, try an array with negative numbers. A specific counterexample tells you which assumption you were missing, and you’ll remember a counterexample long after you’ve forgotten the editorial’s wording.

Be honest about the help you used. “Read the prefix-sum hint, wrote the map myself” and “copied the editorial” are different results. Count only the first one as a solve.

Train the broken step on its own

Use problems easier than your usual ones. If proofs break, take problems you’ve already solved and write the argument for why the method works before looking at your code. If ideas break, work through one topic and stop each attempt once you’ve found the fast method, without coding it.

If code breaks, go the other way: easy problems written quickly, each one checked against a brute force. Ten minutes a day of that fixes off-by-one habits sooner than another hard problem would.

Arise sets are grouped by topic and rating. Open the topic where your labels pile up and work through the rows below your usual rating.

Check that the repair stuck

Come back to the original problem a week later and explain the method out loud before you code it. If you only recognize the solution when you see the code, it didn’t stick yet.

Then try a variation that changes one condition: allow negative values, ask for the count instead of the maximum, add a second kind of query. Solving the variation means you understood why the method works, which is the part that carries over to new problems.

Recount your labels after a month. If the same step still covers half the list, the repair problems were too hard or you didn’t do enough of them.

Esc
↑↓Move ↵Open Ctrl↵New tab >Actions ?Shortcuts

Keyboard shortcuts

Anywhere

Open search
CtrlKor /
Show these shortcuts
?
Close a window or menu
Esc

In search

Move through results
↑or ↓
Open the result
↵
Open in a new tab, or a problem on its judge
Ctrl↵
List actions only
>
Remove the filter
⌫

Go to

Learn
GthenL
Practice
GthenP
Assessments
GthenA
System design
GthenS
Companies
GthenC
My profile
GthenM
Today's quest
GthenT
Home
GthenH

Report a bug

Page