You can try a truth table so see if you get the same result. I find that the original statement is true when $(p\wedge q)\vee (\neg p \wedge \neg q)$ (XNOR), which is not the same as $p\vee q$. I have never done boolean algebra, so I am not sure what is expected.
You could also use logic rules. The result should be stronger than p v q, as an argument can be built from q alone? I constructed a truth table to convince myself afterward. Basically if q is true and p is false, then you'll see q -> p is false.
q [Assumption]
p v q [Disjunction Introduction]
Argument for conclusion p ^ q, and hence valid.
(p -> q) ^ (q -> p) [Assumption]
(p -> q) [ ^ Elimination]
(q -> p) [ ^ Elimination]
q [Assumption]
p [Implication]
-----
p ^ q [Conjunction Introduction]
Here is a much better question.
$\begin{align*}\displaystyle
&(p \to q) \wedge (q \to p)\\
&q\\
&------\\
&\therefore p \wedge q\end{align*}$
From $(p \to q) \wedge (q \to p)$ using simplification we can get $(q\to p)$.
Now from $q~\&~(q\to p)$ using modus ponens we get $p$.
Then using conjunction it gives $p\wedge q$