LAUNCH SALE 50% off every pass

See plans →

How to practice DSA

A solved counter shows how many problems you ticked. It says nothing about which of them you could solve again tomorrow, and that second number is the one to practice for.

Pick a problem you can almost solve

The useful problem sits just past what you can already do. If you know the answer ten seconds after reading the statement, you’re doing reps. If you can’t say what a brute force would even look like, you’re reading a lesson in disguise. Aim for the one where you can write the slow solution and get stuck making it fast.

On Arise that’s usually the next unsolved row in your current set. Codeforces ratings give you a second check: problems 100 to 300 above your rating are where most of the learning happens, and problems 500 above it mostly teach you to read editorials.

Pick one problem for the session. A list of ten turns the evening into a race to tick rows, and the hard one at the bottom never gets a real attempt.

Attempt it before looking anything up

Read the output format first, then the constraints, then the story. The constraints tell you how fast the answer has to be before you’ve thought about how to get it: n ≤ 2·10⁵ rules out anything quadratic, and n ≤ 20 is asking for bitmasks.

Solve two tiny inputs by hand, and make one of them annoying: all equal values, a single element, a negative number. If you can’t produce the right output by hand, no algorithm is going to save you yet.

Write the brute force down even when it’s too slow, then ask what it computes twice. Most fast solutions are the slow one with the repeated work cached, sorted away or counted in a single pass.

Give it a real attempt: 30 to 45 minutes for most problems, longer while you’re still producing new ideas. When the ideas stop, take a hint. The hints guide covers which one.

After the verdict

Once it’s accepted, close your code, open a blank file and write the solution again from memory. The line you get stuck on during the rewrite is the part you didn’t understand, so go read that part again.

If you get Wrong answer, find the smallest input where your output differs from the right one (the stress-testing guide shows how to find it automatically), then trace your code on that input. Print three or four variables per step and the bug usually shows up fast.

Then write a two-line note: the idea that cracked it and the mistake you made. “Count prefix sums, check the earlier ones. Forgot the empty prefix.” That note is what you read before the problem comes back for review.

Plan the week around return visits

Most of what you solve this week is gone in a month unless you see it again. Turn on Arise’s review: when you mark a problem solved it asks how much help you needed and schedules the next visit from your answer. Start each session with whatever is due.

If you have five evenings, three or four new problems, two return visits and one timed contest or virtual round is plenty. If you only have three, keep the return visits and cut new problems first.

At the end of the week, look at what failed. If most attempts died on the statement, drop a difficulty level. If you solved everything without a hint, move up one. Treat the plan as a guess you correct every week.

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