Not really short, but...

You want to snap A on B.

Set the snapping to *"edge center"* and snap with *"active"*. 

Add an empty and bring it on the side of A.

Select A and the empty with empty as active.

Snap them 2 on the side of B: that aligns the rooms.

Move the empty on top of the door part.

Set snapping to *"edge perpendicular"*.

Move A and the empty (active) to the top of B: that aligns the door.

(I'll illustrate in a minute)