Assuming s is a binary semaphore.
If s=0, a V(s) will be successful operation making s=1
If s=1, a V(s) will be successful operation making s=1
If s=0, a P(s) will be unsuccessful operation by retaining s=0
If s=1, a P(s) will be successful operation by making s=0
s=0
V(s)
< Critical Section >
P(s)
Let process ${p_1,p_2,p_3,.,p_k,.,p_n}$ are waiting go get a chance to access CS (Critical Section).
For the first time $p_1$ tries V(s), successfully increase s by 1,and get an access to CS.
While $p_1$ still in CS $p_k$ tries V(s), successfully increase s by 1 and get an access to CS and so on.
With V(s) at the entry of the CS, will never guarantee blocking others from getting into CS.
With this implementation all process waiting to access CS will get into CS, thus violation mutual exclusion.
Here talking about exiting operation P(s) is useless as it doesn't help the event by any means.
s=1
P(s)
< Critical Section >
V(s)
Here, if $p_1$ tries P(s) for the first time, successfully decease s by 1 and get access to CS.
With P(s) at the entry of the CS, will guarantee blocking others from getting into CS.
While $p_1$ still in CS $p_k$ tries to enter CS by executing P(s), but fails as s=0 already and cant decrease anymore.
Thus always guarantee mutual exclusion.
See what happens if we doesn't have signal operation at CS exit:
s=1
P(s)
< Critical Section >
// remove exit operation V(s)
Without $p_1$ signaling, non of the waiting process ${p_2,p_3,.,p_k,.,p_n}$ can access CS. no one can execute the entry operation P(s),since 's' value is still 0.
All processes waiting for CS will be blocked infinity.
Thus, deadlock kind of event happens here where resource is available but cant be accessed.