Practice Arena

Python Coding Challenges

Write real Python in the browser. Instant feedback. From beginner to expert.

925 challenges 556 easy 323 medium 46 hard
Dynamic Programming medium

Perfect Squares Sum

Given a positive integer n, return the least number of perfect squares (e.g., 1, 4, 9, 16, ...) that sum to n.

dynamic-programming math optimization
+25 pts 25m
Dynamic Programming medium

Integer Break Product

Given a positive integer n, break it into at least two positive integers that sum to n and maximize their product.

integer-break dynamic-programming max-product
+25 pts 30m
Dynamic Programming medium

Word Break DP

Implement a function to check if a string can be segmented into space-separated dictionary words.

dynamic-programming strings word-break
+20 pts 25m
Dynamic Programming medium

Paint House Colors

Given a cost matrix, compute the minimum total cost to paint all houses with no two adjacent houses having the same color.

dynamic-programming optimization arrays
+20 pts 25m
Dynamic Programming medium

Buy Sell Stock with Cooldown (DP)

Given daily stock prices, compute the maximum profit you can achieve if you must wait one day after selling before buying again.

dynamic-programming state-machine stocks
+25 pts 25m
Dynamic Programming medium

Ugly Number II

Given an integer n, return the nth ugly number using an efficient dynamic programming approach.

dynamic programming math pointers
+25 pts 25m
Dynamic Programming medium

Unique Paths in a Grid

Count distinct paths in an m x n grid moving only down or right.

dynamic-programming grid counting
+25 pts 25m
Dynamic Programming medium

Maximal square matrix

Given a 2D binary matrix of 0s and 1s, find the side length of the largest square containing only 1s.

dynamic-programming matrix maximum-square
+25 pts 30m
Dynamic Programming medium

Minimum Falling Path Sum

Compute the minimum falling path sum in an n x n matrix by moving down or diagonally each step.

dynamic programming grid path sum
+25 pts 25m
Dynamic Programming medium

Shortest Common Supersequence

Given two strings, return any shortest supersequence that contains both as subsequences.

dynamic-programming strings lcs
+30 pts 30m
Dynamic Programming medium

Interleaving string

Given three strings s1, s2, and s3, check if s3 is formed by interleaving s1 and s2 while preserving the order of each input string.

dynamic-programming strings dp
+30 pts 30m
Dynamic Programming medium

Count subsets with sum

Given a list of integers and a target sum, count how many subsets of the list sum to the target.

subset-sum dynamic-programming counting
+20 pts 25m
Dynamic Programming medium

Matrix Chain Multiplication

Given a list of matrix dimensions, compute the minimum multiplication cost using dynamic programming.

matrix dynamic-programming optimization
+30 pts 25m
Dynamic Programming medium

Target sum assignments

Given a list of integers and a target, count how many ways to assign + or - to each number so the total equals the target.

dynamic programming combinatorics arrays
+30 pts 25m
Dynamic Programming medium

Subset Sum Exists

Given a list of positive integers and a target sum, return whether some subset adds up exactly to the target.

subset sum dynamic programming knapsack
+25 pts 30m
Dynamic Programming medium

Delete and Earn

Given an array of integers, find the maximum points you can earn by repeatedly deleting a number and all its adjacent values.

dynamic-programming array hash-map
+30 pts 25m
Dynamic Programming medium

Maximal rectangle in matrix

Given a matrix of 0s and 1s, compute the area of the largest rectangle consisting only of 1s.

dynamic programming binary matrix histogram
+25 pts 30m
Dynamic Programming medium

Minimum Path Sum Matrix

Implement a function that computes the minimum path sum from the top-left to the bottom-right of a grid moving only right or down.

dynamic-programming matrix path
+20 pts 25m
Dynamic Programming medium

Dungeon Game Minimum Health

Compute the minimum initial health needed to reach the bottom-right corner of a dungeon grid without health dropping to zero or below.

dynamic-programming matrix grid
+30 pts 30m
Trees & Binary Trees medium

Validate BST

Implement a function to determine if a binary tree is a valid Binary Search Tree.

bst recursion validation
+25 pts 25m
Graphs & Graph Algorithms medium

Graph Coloring

Given an undirected graph, determine if it can be colored with two colors such that adjacent vertices have different colors.

graph bipartite bfs
+20 pts 20m
Graphs & Graph Algorithms medium

Graph Valid Tree

Determine if n nodes and an edge list form a valid tree (connected and acyclic).

graph dfs bfs
+25 pts 30m
Graphs & Graph Algorithms medium

Network Delay Time

Given a directed weighted graph and a starting node, find the minimum time for a signal to reach all nodes, or -1 if unreachable.

dijkstra shortest-path graph
+25 pts 30m
Graphs & Graph Algorithms medium

Prim's Minimum Spanning Tree

Given a connected undirected weighted graph, compute the total weight of its minimum spanning tree using Prim's algorithm.

graphs mst prim
+30 pts 30m

Showing 25–48 of 85 challenges · medium

Guide: free Python coding challenges

Practice Python by solving problems

PythonSkillset challenges are hands-on coding exercises from beginner to advanced. Open a challenge, read the problem, write Python in the split-pane editor, and run tests with Pyodide — no install required.

How to use the arena

  1. Pick a category — basics, algorithms, strings, and more
  2. Open a challenge, read the statement, and edit the starter code
  3. Run tests, fix failures, then try a related quiz or tutorial lesson

Challenges vs tutorials and quizzes

Challenges test what you can build under constraints. For guided teaching, use our Python tutorials. For quick checks, try quizzes or copy snippets from code samples.