1 semaphore will not be enough because it will act like a critical section entry semaphore and we cant check if buffer is empty or not using only 1 semaphore and also consumer can enter in c.s even when buffer is empty so we need one more semaphore to check status of buffer.
so total we need minimum 2 semaphores for this problem