РУҚА
27

Сортировка букв по частоте

ЕГЭ · Информатика · Задание 27 · Алгоритмы и исполнители
ВысокаяФИПИC04179Развёрнутое решение≈ 15 минут

На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от «.» и букв «a»..«z», во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать эффективную программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.

Если какие-то буквы встречаются одинаковое число раз, то они выводятся в алфавитном порядке. Например, если на вход подаются символы batat., программа должна вывести atb.

Условие как в банке ФИПИ — открыть и сверить
Дайте развернутый ответ.

На вход программе подаются строчные английские буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от “.” и букв “a”..“z”, во входных данных отсутствуют; в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка). Требуется написать эффективную программу, которая будет печатать буквы, встречающиеся во входной последовательности, в порядке уменьшения частоты их встречаемости. Каждая буква должна быть распечатана один раз. Точка при этом не учитывается.

Если какие-то буквы встречаются одинаковое число раз, то они выводятся в алфавитном порядке. Например, пусть на вход подаются следующие символы:

batat.

В данном случае программа должна вывести

atb



Ответ

Это задание с развёрнутым решением: ответом считается запись хода решения, а не строка. Напишите решение на бумаге и сравните с разбором — там каждый шаг с обоснованием.

Открыть разбор
!
3 уровня: от лёгкого толчка до почти готового решения. Следующий открывается, когда прочитан предыдущий, — чтобы не перепрыгнуть сразу к ответу.
1Мягкая — с чего смотретьуровень 1 из 3

Как можно за один проход по входной последовательности подсчитать количество вхождений каждой из 26 букв?

2Наводящая — какие числа считатьуровень 2 из 3

Создайте массив частот длины 26, а затем отсортируйте буквы по ключу: сначала по убыванию частоты, затем по алфавитному порядку.

3Прямая — фактически решениеуровень 3 из 3

В Python можно использовать sorted('abcdefghijklmnopqrstuvwxyz', key=lambda c: (-count[ord(c) - ord('a')], c)) и вывести только буквы с ненулевой частотой.

Всё равно не складывается?Полное решение с обоснованием каждого шага — на отдельной странице.
Открыть решение

Задание 27 ЕГЭ, информатика

Задача из темы «Алгоритмы и исполнители»: в ней 432 задачи с ответом и разбором по шагам. В 27-м номере бланка — 49 задач.

Ответ можно проверить здесь же, а если не выходит — открыть подсказку или разбор. Регистрация не нужна.