Reported July 2026
Googlegraph

Maximum Programmer-Problem Matching

Reported by candidates from Google's online assessment. Pattern, common pitfall, and the honest play if you blank under the timer.

Get StealthCoderRuns invisibly during the live Google OA. Under 2s to a working solution.
Founder's read

The detail that matters in this Google OA, reported July 2026, is the pairing rule: one shared string between a programmer's skills and a problem's tags makes them compatible, and each side gets used once. That's not a counting puzzle, it's bipartite matching in disguise. Greedy looks tempting, and it fails on cases where an early pick steals a slot someone else needed. If you've got the invite and 48 hours, learn the augmenting path idea and you're fine. StealthCoder sits invisibly on your screen during the live OA as a safety net if the matching logic slips away mid-assessment.

The problem

Each problem has a list of tags, and each programmer has a list of skills. A programmer is compatible with a problem when the programmer's skills and the problem's tags share at least one identical string.
Match programmers to problems so that each programmer and each problem appears in at most one pair. Return the maximum possible number of compatible pairs.

Function
maximumProblemMatches(problemTags: List<List<String>>, programmerSkills: List<List<String>>) → int

Examples
Example 1
problemTags = [["java"], ["python", "sql"], ["go"]]
programmerSkills = [["java", "python"], ["java"], ["rust", "go"]]
return = 3
The first programmer can take the Python problem, the second programmer can take the Java problem, and the third programmer can take the Go problem. These three pairs use every programmer and problem once, so no larger matching is possible.
Example 2
problemTags = [["java"], ["python"], ["sql"]]
programmerSkills = [["java", "python"], ["python"]]
return = 2
Match the first programmer to the Java problem and the second programmer to the Python problem. Only two programmers are available, so the maximum is 2.

Reported by candidates. Source: FastPrep

Pattern and pitfall

Build a bipartite graph. Programmers on the left, problems on the right, with an edge whenever their string sets overlap. The answer is the maximum matching. Standard approach: map each tag to the list of problems that carry it, so you build edges without comparing every pair of lists. Then run Kuhn's algorithm. For each programmer, DFS to find a free problem, or try to reassign the problem's current owner somewhere else. Track a visited set per attempt. The classic pitfall is greedy first-fit, which can lock a flexible programmer onto a problem a stricter one needed. Another is forgetting to reset visited between programmers. Dedupe tags into sets first. Hopcroft-Karp is the upgrade if sizes are large. If the DFS recursion tangles during the live OA, StealthCoder is the hedge that hands you a working matching template.

If this hits your live OA and you blank, StealthCoder solves it in seconds, invisible to the proctor.

If this hits your live OA

You can drill Maximum Programmer-Problem Matching cold, or you can hedge it. StealthCoder runs invisibly during screen share and surfaces a working solution in under 2 seconds. The proctor sees the IDE. They don't see what's behind it. Built by an Amazon engineer who would have shipped this the night before his JPMorgan OA if he'd had it.

Get StealthCoder

Related leaked OAs

⏵ The honest play

You've seen the question. Make sure you actually pass Google's OA.

Google reuses patterns across OAs. Built by an Amazon engineer who would have shipped this the night before his JPMorgan OA if he'd had it. Works on HackerRank, CodeSignal, CoderPad, and Karat.

Maximum Programmer-Problem Matching FAQ

What's the trick in Maximum Programmer-Problem Matching?+

Spot that it's maximum bipartite matching. Programmers and problems are two sides, a shared string is an edge, and each node is used once. Greedy can fail, so use augmenting paths (Kuhn's algorithm) or Hopcroft-Karp, or a max-flow model if you know it better.

Can I solve it with a simple greedy?+

Not safely. Picking the first compatible problem for each programmer can block a later programmer who had only that option. Sorting by number of options helps in some cases but isn't guaranteed. Matching with reassignment is the correct approach and not much longer to code.

How do I build the edges efficiently?+

Create a hash map from each tag to the list of problem indices that have it. For each programmer, walk their skills and collect the problems from the map into a set to dedupe. That avoids comparing every programmer against every problem list directly.

How hard is this one really for a Google OA?+

Medium-hard if you haven't seen matching before, easy if you have. The code is short, about 25 lines for Kuhn's. The difficulty is recognizing the pattern. Reported in July 2026, so it's recent enough to expect similar graph modeling questions.

How do I prepare in 48 hours?+

Write Kuhn's algorithm from memory twice, on a tiny graph and on this problem. Practice the tag-to-problem map, and test both examples including the one where programmers are fewer than problems. Then review DFS recursion depth and visited-reset bugs, which are the usual failures.

Problem reported by candidates from a real Online Assessment. Sourced from a publicly-available candidate-aggregated repository. Not affiliated with Google.

OA at Google?
Invisible during screen share
Get it