Не выходит задача с Codeforces на python с помощью цикла for
Привожу, что сам сообразил, но ограничение по времени превышено.
Вот ссылка на задачу - https://codeforces.com/problemset/problem/237/A
A. Свободная касса
Валера — директор круглосуточного кафе быстрого питания. Волшебным образом ему удалось узнать, что завтра его кафе посетят n человек. Для каждого человека известно время, в которое он придет: i-тый человек придет ровно в hi часов mi минут. Каждого клиента обслуживают меньше чем за минуту, однако, если клиент приходит и видит, что свободных касс нет, то он отказывается ждать и сразу же покидает заведение.
Валера очень жадный, поэтому он хочет обслужить завтра всех n посетителей (так он получит больше прибыли). Однако для этого нужно, чтобы количество работающих касс в каждый момент времени было не меньше, чем количество клиентов, пришедших в это время в кафе.
Помогите Валере подсчитать, какое наименьшее количество касс должно завтра работать в его кафе, чтобы можно было обслужить всех посетителей.
Входные данные В первой строке записано единственное целое число n (1 ≤ n ≤ 105), обозначающее количество посетителей кафе.
В каждой из следующих n строк через пробел записаны два целых числа hi и mi (0 ≤ hi ≤ 23; 0 ≤ mi ≤ 59), обозначающие время прихода i-того человека в кафе.
Обратите внимание, что времена заданы в хронологическом порядке. Все времена заданы в пределах одних суток.
Выходные данные Выведите единственное целое число — наименьшее количество касс, необходимое для обслуживания всех клиентов завтра.
n = int(input())
x = []
x1 = []
for i in range(n):
a = list(map(int, input().split()))
x.append(a)
for i in range(n):
x1.append(x.count(x[i]))
print(max(x1))
Ответы (2 шт):
По идее можно просто сравнивать текущую дату с прошедшей, и если у нас есть равенство, то увеличиваем потенциальное число касс cand_cashboxes на 1, иначе помещаем его в результат cashboxes, если до этого cashboxes < cand_cashboxes.
n = int(input()) # ввод
cashboxes, cand_cashboxes = 1, 1 # инициализация
curr = prev = ''
for _ in range(n):
curr = input() # вводим дату (разделять её не надо, т.к. формат один и тот же)
if prev: # если у нас есть элемент перед текущим, то проверяем
if curr == prev: # если равны, то увеличиваем потенциальные кассы на 1
cand_cashboxes += 1
else: # иначе помещаем в кассы максимум, а потенциальные обращаем в 1
cashboxes = max(cashboxes, cand_cashboxes)
cand_cashboxes = 1
prev = curr # не забываем поставить текущий как предыдущий для следующего
print(max(cashboxes, cand_cashboxes)) # финальный максимум
Используя groupby:
from itertools import groupby
n = int(input())
print(max(len(list(g)) for _, g in groupby(input() for _ in range(n))))