会社名から最も多く出現する上位3文字を抽出するPythonプログラム
文字列として会社名が与えられたとします。この会社名の中から最も頻繁に出現する3文字を、以下のルールに従って抽出します。
- 出現回数が多い上位3文字を選ぶ
- 出現回数の降順で並べる
- 出現回数が同じ文字がある場合は、アルファベット順に並べる
例えば、入力が s = "TUTORIALSPOINT" の場合、出力は [[3, 'T'], [2, 'I'], [2, 'O']] となります。「T」が3回、「I」と「O」がそれぞれ2回出現しているためです。
解決の手順
この問題は、以下の手順で解くことができます。
- x := 文字列 s に含まれる各文字とその出現回数を対応付けたマップ(Counter)を作成する
- res := 結果を格納する新しいリストを作成する
- x 内の各文字 i について、ペア (出現回数 x[i], 文字 i) を res に追加する
- res をアルファベット順にソートする
- res を出現回数の降順で再度ソートする
- res の先頭3要素を返す
ここでポイントとなるのは、ソートを2段階で行う点です。Python の sorted() は安定ソートであるため、まずアルファベット順に並べた後に出現回数の降順でソートすると、出現回数が同じ文字は自動的にアルファベット順のまま維持されます。
実装例
以下のコードを見て、具体的な動作を確認しましょう。
from collections import Counter
def solve(s):
x = Counter(s)
res = []
for i in x:
res.append([x[i], i])
res = sorted(res, key=lambda cnt: cnt[1])
res = sorted(res, key=lambda cnt: cnt[0], reverse=True)
return res[:3]
s = "TUTORIALSPOINT"
print(solve(s))入力
"TUTORIALSPOINT"
出力
[[3, 'T'], [2, 'I'], [2, 'O']]
-
3つの数値から最大値を見つけるPythonプログラム
このチュートリアルでは、3つの数値の中から最大値を求めるPythonプログラムを作成します。3つの数値が与えられたとき、その中で最も大きい数値を見つけることが目標です。まず、理解を深めるためにサンプルのテストケースをいくつか見てみましょう。入力: a, b, c = 2, 34, 4 出力: 34入力: a, b, c = 25, 3, 12 出力: 25入力: a, b, c = 5, 5, 5 出力: 5それでは、3つの数値の中から最大値を求める手順を見ていきましょう。アルゴリズム1. 3つの数値 a、b、c を初期化する。 2. a が b と c の両方より大きければ、a を出力する。
-
PythonでリストからN個の最大要素を取得する方法
整数のリストが与えられたとき、その中からN個の大きな要素を取り出して新しいリストとして返すのが、ここでの課題です。本記事では、基本的なループ処理による方法から、Python標準ライブラリを活用した効率的な方法まで、サンプルコードとともに解説します。 例 入力 : [40, 5, 10, 20, 9] N = 2 出力 : [40, 20] アルゴリズム 整数のリストと、取得する要素数Nを受け取ります。 N回のループを実行します。 各ループでリスト内の最大値を探し、新しいリストに格納すると同時に元のリストから削除します。 実装コード def Nnumberele(list1, N):