Saludos!!
Efectivamente, la solucion es esa, pero... porque?
Sencillo: la etiqueta <a> (al igual que img, span, etc...) son elementos de
linea y otras etiquetas como <div> (div, h1, h2, li, etc...) son elementos de
bloque. La diferencia entre ambos es que los elementos de bloque ocupan una linea, por lo que al poner otro elemento, este aparecerá como si hubiera un salto de linea (o muchos espacios, en este caso) y los elementos de linea, aparecen uno a el lado de otro sin necesidad de hacer saltos de linea.
Segun el estándar XHTML, Un elemento de bloque, puede contener elementos de linea y de bloque, pero los elementos de linea solo pueden contener otros elementos de linea.
Espero haberme explicado... Hasta Luego!!
PD: Referencia:
Elementos de Bloque vs Elementos de linea