  System Level Synthesis (SLS) allows us to construct internally stabilizing
controllers for large-scale systems. However, solving large-scale SLS problems
is computationally expensive and the state-of-the-art methods consider only
state feedback; output feedback poses additional challenges because the
constraints are no longer uniquely row or column separable.
  We exploit the structure of the output-feedback SLS problem by vectorizing
the multi-sided matrix multiplications in the SLS optimization constraints,
which allows us to reformulate it as a discrete-time control problem and solve
using two stages of dynamic programming (DP). Additionally, we derive an
approximation algorithm that offers a faster runtime by partially enforcing the
constraints, and show that this algorithm offers the same results. DP solves
SLS up to $7$ times faster, with an additional 42% to 68% improvement using the
approximation algorithm, than a convex program solver, and scales with large
state dimensions and finite impulse response horizon.
