And for Q7, one can do nice visualizations (and analysis) using Graph operations such as Subgraph and GraphUnion, and options, such as GraphHighlight and VertexLabels. And the close integration of such functionality is, to me, what sets the Wolfram Language apart from the other programmatic solutions.
My solution to Q1 used pattern-matching:
input /. {___,x_,___,y_,___,z_,___} /; x+y+z == 2020 :> x y z
which easily coped with the given input data.
Another nice way of doing problem 1 is to use KnapsackSolve, which is a generalization of the subset-sum problem. For part 1.2, this ends up being quite a bit faster too.
Times@@Pick[nums, KnapsackSolve[({#, 1, 1} &)/@nums, {2020, 3}], 1]
That is a nice solution. And it would have been the required approach if they pushed the input size much beyond 200 numbers.