Back to all solutions

#2483 - Minimum Penalty for a Shop

Problem Description

You are given the customer visit log of a shop represented by a 0-indexed string customers consisting only of characters 'N' and 'Y':

  • if the ith character is 'Y', it means that customers come at the ith hour
  • whereas 'N' indicates that no customers come at the ith hour.

If the shop closes at the jth hour (0 <= j <= n), the penalty is calculated as follows:

  • For every hour when the shop is open and no customers come, the penalty increases by 1.
  • For every hour when the shop is closed and customers come, the penalty increases by 1.

Return the earliest hour at which the shop must be closed to incur a minimum penalty.

Note that if a shop closes at the jth hour, it means the shop is closed at the hour j.

Solution

/**
 * @param {string} customers
 * @return {number}
 */
var bestClosingTime = function(customers) {
  let minPenalty = 0;
  let currentPenalty = 0;
  let result = 0;

  for (let i = 0; i < customers.length; i++) {
    currentPenalty += customers[i] === 'Y' ? -1 : 1;
    if (currentPenalty < minPenalty) {
      minPenalty = currentPenalty;
      result = i + 1;
    }
  }

  return result;
};