Ctrl K

Вычеркнуть столбцы ради порядка

Средняя
Дан список words из строк одинаковой длины. Представьте их записанными друг под другом, как таблицу: строка words[i] — это ряд, а символы на одной позиции во всех словах образуют столбец. Можно вычеркнуть любой набор столбцов: выбранная позиция удаляется сразу из всех слов. Например, если из ['bread', 'flame'] вычеркнуть столбцы 0 и 3, получится ['rea', 'lae']. Нужно, чтобы после вычёркивания слова шли в алфавитном порядке сверху вниз: words[0] <= words[1] <= ... <= words[n - 1]. Верните наименьшее число столбцов, которые для этого придётся вычеркнуть. Обратите внимание: буквы внутри одного слова упорядочивать не нужно — важен только порядок самих слов.
Пример 1
words=['bd', 'ac', 'ca'] → 2

Сейчас bd > ac, порядок нарушен. Если вычеркнуть только первый столбец, останутся d, c, a; если только второй — b, a, c. Ни то, ни другое не упорядочено, поэтому вычёркиваем оба: три пустые строки уже идут по порядку. Ответ 2.

Пример 2
words=['cat', 'cog', 'dab'] → 0

Строки уже идут по алфавиту: cat ≤ cog ≤ dab. Ничего вычёркивать не нужно.

Пример 3
words=['xay', 'xbx', 'ycz'] → 0

Первый столбец x, x, y не разделяет первые две строки, их решает второй столбец: a < b. Третий столбец (y > x) уже ни на что не влияет, его можно оставить.

Ограничения
  • 1 ≤ len(words) ≤ 100
  • 1 ≤ len(words[i]) ≤ 100
  • Все слова одной длины
  • Слова состоят из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяНаименьшая последовательность по стрелкам СредняяКольцо из разворачиваемых слов СредняяОкруглить цены до нужной суммы СредняяНитка бус без повторов Средняя
загружаем Python…
Вход
words=['bd', 'ac', 'ca']
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 197 тестов на сервере, включая скрытые.